function display($tpl = null) { global $mainframe; $this->_layout = 'default'; /* * Set toolbar items for the page */ $menutype = $mainframe->getUserStateFromRequest('com_menus.menutype', 'menutype', 'mainmenu', 'menutype'); JToolBarHelper::title(JText::_('MENU ITEM MANAGER'), 'menu.png'); JToolBarHelper::addNewX('newItem'); JToolBarHelper::spacer(); JToolBarHelper::trash(); JToolBarHelper::spacer(); JToolBarHelper::customX('move', 'move.png', 'move_f2.png', 'Move', true); JToolBarHelper::customX('copy', 'copy.png', 'copy_f2.png', 'Copy', true); JToolBarHelper::spacer(); JToolBarHelper::publishList(); JToolBarHelper::unpublishList(); JToolBarHelper::spacer(); JToolBarHelper::makeDefault('setdefault'); JSubMenuHelper::addEntry(JText::_('Items'), 'index.php?option=com_menus&task=view', true); JSubMenuHelper::addEntry(JText::_('Menus'), 'index.php?option=com_menus'); if (JFactory::getUser()->authorize('com_trash', 'manage')) { JSubMenuHelper::addEntry(JText::_('Trash'), 'index.php?option=com_trash&task=viewMenu'); } $document =& JFactory::getDocument(); $document->setTitle(JText::_('View Menu Items')); $limitstart = JRequest::getVar('limitstart', '0', '', 'int'); $items =& $this->get('Items'); $pagination =& $this->get('Pagination'); $lists =& $this->_getViewLists(); $user =& JFactory::getUser(); require_once JPATH_COMPONENT . DS . 'helpers' . DS . 'helper.php'; $menus = MenusHelper::getMenuTypelist(); // Ensure ampersands and double quotes are encoded in item titles foreach ($items as $i => $item) { $treename = $item->treename; $treename = JFilterOutput::ampReplace($treename); $treename = str_replace('"', '"', $treename); $items[$i]->treename = $treename; } //Ordering allowed ? $ordering = $lists['order'] == 'm.ordering'; JHTML::_('behavior.tooltip'); $this->assignRef('items', $items); $this->assignRef('pagination', $pagination); $this->assignRef('lists', $lists); $this->assignRef('user', $user); $this->assignRef('menutype', $menutype); $this->assignRef('ordering', $ordering); $this->assignRef('limitstart', $limitstart); $this->assignRef('menus', $menus); parent::display($tpl); }
function backendMenuAccess() { $config = new CACL_config($db); $config->load(); $this->_app = JFactory::getApplication(); $user_access = cacl_get_user_access($config); $db =& JFactory::getDBO(); if ($this->doTidy() && $this->_app->getTemplate() == 'rt_missioncontrol_j15') { $config_options = array('preserve-entities' => true, 'output-xhtml' => true, 'newline' => false, 'wrap' => false, 'output-encoding' => 'utf8', 'input-encoding' => 'utf8', 'char-encoding' => 'utf8'); $denyOrAllow = $config->default_action == 'deny' ? 'NOT IN' : 'IN'; $db->Execute('DROP TABLE IF EXISTS temp'); $db->Execute('CREATE TEMPORARY TABLE temp ( `option` VARCHAR(255) NOT NULL )'); $db->Execute("INSERT INTO temp (`option`) VALUES ('com_categories'),('com_sections'),('com_frontpage'),('com_content'),('com_media')"); $db->Execute("INSERT INTO temp (`option`) (SELECT DISTINCT `option` FROM #__components)"); // `name`='###' means it's a component $query = "\n\t\t\t\tSELECT DISTINCT `option` FROM temp\n\t\t\t\tWHERE `option` {$denyOrAllow} (\n\t\t\t\t\tSELECT DISTINCT `option` FROM #__community_acl_access\n\t\t\t\t\tWHERE\n\t\t\t\t\t(`group_id` IN (" . implode(',', array_filter($user_access['groups'])) . ") && `isbackend`=1 && `name`='###')\n\t\t\t\t\t||\n\t\t\t\t\t(`role_id` IN (" . implode(',', array_filter($user_access['roles'])) . ") && `isbackend`=1 && `name`='###')\n\t\t\t\t)\n\t\t\t\t&& `option` != ''"; $db->setQuery($query); $componentList = $db->loadResultArray(); $db->Execute('DROP TABLE IF EXISTS temp'); $_html = JResponse::getBody(); foreach ($componentList as $componentName) { $_html = @tidy_parse_string($_html, $config_options); $this->findElement($_html->body(), 0, $componentName); $_html = str_replace($this->_toRemove, '', $_html); } JResponse::setBody($_html); return; } $lang =& JFactory::getLanguage(); $user =& JFactory::getUser(); $db =& JFactory::getDBO(); $usertype = $user->get('usertype'); $check_component_com_checkin = $this->check_component('com_checkin'); $check_component_com_config = $this->check_component('com_config'); $check_component_com_templates = $this->check_component('com_templates'); $check_component_com_trash = $this->check_component('com_trash'); $check_component_com_menus = $this->check_component('com_menus'); $check_component_com_languages = $this->check_component('com_languages'); $check_component_com_modules = $this->check_component('com_modules'); $check_component_com_installer = $this->check_component('com_installer'); $check_component_com_plugins = $this->check_component('com_plugins'); $check_component_com_massmail = $this->check_component('com_massmail'); $check_component_com_users = $this->check_component('com_users'); $check_component_com_media = $this->check_component('com_media'); $check_component_com_login = $this->check_component('com_login'); $check_component_com_frontpage = $this->check_component('com_frontpage'); $check_component_com_content = $this->check_component('com_content'); $check_component_com_sections = $this->check_component('com_sections'); $check_component_com_categories = $this->check_component('com_categories'); $check_component_com_messages = $this->check_component('com_messages'); $check_component_com_cache = $this->check_component('com_cache'); $check_component_com_admin = $this->check_component('com_admin'); // cache some acl checks $canCheckin = $user->authorize('com_checkin', 'manage') && $check_component_com_checkin; $canConfig = $user->authorize('com_config', 'manage') && $check_component_com_config; $manageTemplates = $user->authorize('com_templates', 'manage') && $check_component_com_templates; $manageTrash = $user->authorize('com_trash', 'manage') && $check_component_com_trash; $manageMenuMan = $user->authorize('com_menus', 'manage') && $check_component_com_menus; $manageLanguages = $user->authorize('com_languages', 'manage') && $check_component_com_languages; $installModules = $user->authorize('com_installer', 'module'); //&& $check_component_com_installer; $editAllModules = $user->authorize('com_modules', 'manage') && $check_component_com_modules; $installPlugins = $user->authorize('com_installer', 'plugin') && $check_component_com_installer; $editAllPlugins = $user->authorize('com_plugins', 'manage') && $check_component_com_plugins; $installComponents = $user->authorize('com_installer', 'component') && $check_component_com_installer; $editAllComponents = $user->authorize('com_components', 'manage'); $canMassMail = $user->authorize('com_massmail', 'manage') && $check_component_com_massmail; $canManageUsers = $user->authorize('com_users', 'manage') && $check_component_com_users; //build regex array based on access $preRegex = '/(?>(<li.*?>))(?>(<a.*?>))'; $postRegex = '<\\/a><\\/li>/s'; /* * Site SubMenu */ if (!$canManageUsers) { $pattern[] = $preRegex . JText::_('User Manager') . $postRegex; } if (!$check_component_com_media) { $pattern[] = $preRegex . JText::_('Media Manager') . $postRegex; } if (!$canConfig) { $pattern[] = $preRegex . JText::_('Configuration') . $postRegex; } if (!$check_component_com_login) { $pattern[] = $preRegex . JText::_('Logout') . $postRegex; } /* * Menus SubMenu */ if (!$manageMenuMan && !$manageTrash) { $pattern[] = $preRegex . JText::_('Menus') . $postRegex; } if (!$manageMenuMan) { $pattern[] = $preRegex . JText::_('Menu Manager') . $postRegex; } if (!$manageTrash) { $pattern[] = $preRegex . JText::_('Menu Trash') . $postRegex; } require_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_menus' . DS . 'helpers' . DS . 'helper.php'; $menuTypes = MenusHelper::getMenuTypelist(); if (count($menuTypes) && !$check_component_com_menus) { foreach ($menuTypes as $menuType) { $pattern[] = $preRegex . preg_quote($menuType->title, '/') . ($menuType->home ? ' \\*' : '') . $postRegex; } } /* * Content SubMenu */ if (!$check_component_com_content && !$manageTrash && !$check_component_com_sections && !$check_component_com_categories && !$check_component_com_frontpage) { $pattern[] = $preRegex . JText::_('Content') . $postRegex; } if (!$check_component_com_content) { $pattern[] = $preRegex . JText::_('Article Manager') . $postRegex; } if (!$manageTrash) { $pattern[] = $preRegex . JText::_('Article Trash') . $postRegex; } if (!$check_component_com_sections) { $pattern[] = $preRegex . JText::_('Section Manager') . $postRegex; } if (!$check_component_com_categories) { $pattern[] = $preRegex . JText::_('Category Manager') . $postRegex; } if (!$check_component_com_frontpage) { $pattern[] = $preRegex . JText::_('Frontpage Manager') . $postRegex; } /* * Components SubMenu */ $query = 'SELECT *' . ' FROM #__components' . ' WHERE ' . $db->NameQuote('option') . ' <> "com_frontpage"' . ' AND ' . $db->NameQuote('option') . ' <> "com_media"' . ' AND enabled = 1' . ' ORDER BY ordering, name'; $db->setQuery($query); $comps = $db->loadObjectList(); // component list $subs = array(); // sub menus $langs = array(); // additional language files to load if (!$editAllComponents) { $pattern[] = $preRegex . JText::_('Components') . $postRegex; foreach ($comps as $row) { if ($row->parent == 0 && (trim($row->admin_menu_link) || array_key_exists($row->id, $subs))) { $text = $lang->hasKey($row->option) ? JText::_($row->option) : $row->name; $text = preg_quote($text, '/'); if (array_key_exists($row->id, $subs)) { $pattern[] = $preRegex . $text . $postRegex; $no_submenu = false; foreach ($subs[$row->id] as $sub) { $key = $row->option . '.' . $sub->name; $text = $lang->hasKey($key) ? JText::_($key) : $sub->name; $text = preg_quote($text, '/'); $pattern[] = $preRegex . $text . $postRegex; } } else { $pattern[] = $preRegex . $text . $postRegex; } } } } else { // first pass to collect sub-menu items foreach ($comps as $row) { if ($row->parent) { if (!array_key_exists($row->parent, $subs)) { $subs[$row->parent] = array(); } $subs[$row->parent][] = $row; $langs[$row->option . '.menu'] = true; } elseif (trim($row->admin_menu_link)) { $langs[$row->option . '.menu'] = true; } } foreach ($comps as $row) { if (!$this->check_component($row->option)) { if ($row->parent == 0 && (trim($row->admin_menu_link) || array_key_exists($row->id, $subs))) { $ptext = $lang->hasKey($row->option) ? JText::_($row->option) : $row->name; $ptext = preg_quote($ptext, '/'); if (array_key_exists($row->id, $subs)) { $no_submenu = false; foreach ($subs[$row->id] as $sub) { $key = $row->option . '.' . $sub->name; $text = $lang->hasKey($key) ? JText::_($key) : $sub->name; $text = preg_quote($text, '/'); $pattern[] = $preRegex . $text . $postRegex; } $pattern[] = '/(?>(<a.*?>))' . $ptext . '<\\/a>/s'; } else { $pattern[] = $preRegex . $ptext . $postRegex; } } } } } //print_r($pattern);die(); /* * Extensions SubMenu */ if (!$check_component_com_installer && !$editAllModules && !$editAllPlugins && !$manageTemplates && !$manageLanguages) { $pattern[] = $preRegex . JText::_('Extensions') . $postRegex; } if (!$check_component_com_installer) { $pattern[] = $preRegex . JText::_('Install\\/Uninstall') . $postRegex; } if (!$editAllModules) { $pattern[] = $preRegex . JText::_('Module Manager') . $postRegex; } if (!$editAllPlugins) { $pattern[] = $preRegex . JText::_('Plugin Manager') . $postRegex; } if (!$manageTemplates) { $pattern[] = $preRegex . JText::_('Template Manager') . $postRegex; } if (!$manageLanguages) { $pattern[] = $preRegex . JText::_('Language Manager') . $postRegex; } /* * System SubMenu */ if (!$canConfig && !$canCheckin && !$canMassMail && !$check_component_com_cache) { $pattern[] = $preRegex . JText::_('Tools') . $postRegex; } if (!$check_component_com_cache) { $pattern[] = $preRegex . JText::_('Purge Expired Cache') . $postRegex; } if (!$canConfig && !$check_component_com_messages) { $pattern[] = $preRegex . JText::_('Read Messages') . $postRegex; $pattern[] = $preRegex . JText::_('Write Message') . $postRegex; } if (!$canMassMail && !$check_component_com_massmail) { $pattern[] = $preRegex . JText::_('Mass Mail') . $postRegex; } if (!$canCheckin && !$check_component_com_checkin) { $pattern[] = $preRegex . JText::_('Global Checkin') . $postRegex; } if (!$check_component_com_cache) { $pattern[] = $preRegex . JText::_('Clean Cache') . $postRegex; } /* * Help SubMenu */ if (!$check_component_com_admin) { $pattern[] = $preRegex . JText::_('Help') . $postRegex; $pattern[] = $preRegex . JText::_('Joomla\\! Help') . $postRegex; $pattern[] = $preRegex . JText::_('System Info') . $postRegex; } //print_r($pattern);die(); if (is_array($pattern)) { $_html = JResponse::getBody(); //Bernard start $_html = @preg_replace($pattern, '', $_html); if ($_html === null) { JError::raiseError('We apologize'); } //Bernard end $_html = preg_replace($pattern, '', $_html); JResponse::setBody($_html); } }
/** * Show the menu * @param string The current user type */ function buildMenu() { global $mainframe; $lang = & JFactory::getLanguage(); $user = & JFactory::getUser(); $db = & JFactory::getDBO(); $usertype = $user->get('usertype'); // cache some acl checks $canConfig = $user->authorize('com_settings', 'manage'); $manageTemplates = $user->authorize('com_templates', 'manage'); $manageMenuMan = $user->authorize('com_menus', 'manage'); $manageLanguages = $user->authorize('com_languages', 'manage'); $installModules = $user->authorize('com_installer', 'module'); $editAllModules = $user->authorize('com_modules', 'manage'); $installPlugins = $user->authorize('com_installer', 'plugin'); $editAllPlugins = $user->authorize('com_plugins', 'manage'); $installComponents = $user->authorize('com_installer', 'component'); $editAllComponents = $user->authorize('com_components', 'manage'); $canManageUsers = $user->authorize('com_users', 'manage'); // Menu Types require_once( JPATH_ADMINISTRATOR.DS.'components'.DS.'com_menus'.DS.'helpers'.DS.'helper.php' ); $menuTypes = MenusHelper::getMenuTypelist(); /* * Get the menu object */ $menu = new JAdminCSSMenu(); /* * Site SubMenu */ $menu->addChild(new JMenuNode(JText::_('Dashboard'), 'index.php?option=com_dashboard&view=dashboard', 'class:cpanel'), true); $menu->getParent(); /* * Menus SubMenu */ if ($manageMenuMan) { $menu->addChild(new JMenuNode(JText::_('Menus'), 'index.php?option=com_menus&task=view', 'class:menu')); } /* * Components SubMenu */ if ($editAllComponents) { $menu->addChild(new JMenuNode(JText::_('Components')), true); $query = 'SELECT *' . ' FROM #__components' . ' WHERE '.$db->NameQuote( 'option' ).' <> "com_files"' . ' AND enabled = 1' . ' ORDER BY ordering, name'; $db->setQuery($query); $comps = $db->loadObjectList(); // component list $subs = array(); // sub menus $langs = array(); // additional language files to load // first pass to collect sub-menu items foreach ($comps as $row) { if ($row->parent) { if (!array_key_exists($row->parent, $subs)) { $subs[$row->parent] = array (); } $subs[$row->parent][] = $row; $langs[$row->option.'.menu'] = true; } elseif (trim($row->admin_menu_link)) { $langs[$row->option.'.menu'] = true; } } // Load additional language files if (array_key_exists('.menu', $langs)) { unset($langs['.menu']); } foreach ($langs as $lang_name => $nothing) { $lang->load($lang_name); } foreach ($comps as $row) { if ($editAllComponents | $user->authorize('administration', 'edit', 'components', $row->option)) { if ($row->parent == 0 && (trim($row->admin_menu_link) || array_key_exists($row->id, $subs))) { $text = $lang->hasKey($row->option) ? JText::_($row->option) : $row->name; $link = $row->admin_menu_link ? "index.php?$row->admin_menu_link" : "index.php?option=$row->option"; if (array_key_exists($row->id, $subs)) { $menu->addChild(new JMenuNode($text, $link, $row->admin_menu_img), true); foreach ($subs[$row->id] as $sub) { $key = $row->option.'.'.$sub->name; $text = $lang->hasKey($key) ? JText::_($key) : $sub->name; $link = $sub->admin_menu_link ? "index.php?$sub->admin_menu_link" : null; $menu->addChild(new JMenuNode($text, $link, $sub->admin_menu_img)); } $menu->getParent(); } else { $menu->addChild(new JMenuNode($text, $link, $row->admin_menu_img)); } } } } $menu->getParent(); } /* * Users SubMenu */ $menu->addChild(new JMenuNode(JText::_('Files'), 'index.php?option=com_files', 'class:files'), true); $menu->getParent(); /* * Users SubMenu */ if ($canManageUsers) { $menu->addChild(new JMenuNode(JText::_('Users'), 'index.php?option=com_users&view=users', 'class:user'), true); $menu->getParent(); } /* * Extensions SubMenu */ if ($installModules) { $menu->addChild(new JMenuNode(JText::_('Extensions')), true); $menu->addChild(new JMenuNode(JText::_('Install/Uninstall'), 'index.php?option=com_installer', 'class:install')); $menu->addSeparator(); if ($editAllModules) { $menu->addChild(new JMenuNode(JText::_('Modules'), 'index.php?option=com_extensions&view=modules', 'class:module')); } if ($editAllPlugins) { $menu->addChild(new JMenuNode(JText::_('Plugins'), 'index.php?option=com_extensions&view=plugins', 'class:plugin')); } if ($manageTemplates) { $menu->addChild(new JMenuNode(JText::_('Templates'), 'index.php?option=com_extensions&view=templates', 'class:themes')); } if ($manageLanguages) { $menu->addChild(new JMenuNode(JText::_('Languages'), 'index.php?option=com_extensions&view=languages', 'class:language')); } $menu->getParent(); } /* * System SubMenu */ if ($canConfig) { $menu->addChild(new JMenuNode(JText::_('Tools')), true); if ($canConfig) { $menu->addChild(new JMenuNode(JText::_('Settings'), 'index.php?option=com_settings', 'class:config')); $menu->addChild(new JMenuNode(JText::_('System Info'), 'index.php?option=com_info&view=system', 'class:info')); $menu->addSeparator(); } $menu->addChild(new JMenuNode(JText::_('Clean Cache'), 'index.php?option=com_cache&view=items', 'class:config')); $menu->getParent(); } $menu->renderMenu('menu', ''); }
/** * Show the menu * @param string The current user type */ function buildMenu() { global $mainframe; $lang =& JFactory::getLanguage(); $user =& JFactory::getUser(); $db =& JFactory::getDBO(); $usertype = $user->get('usertype'); // cache some acl checks $canCheckin = $user->authorize('com_checkin', 'manage'); $canConfig = $user->authorize('com_config', 'manage'); $manageTemplates = $user->authorize('com_templates', 'manage'); $manageTrash = $user->authorize('com_trash', 'manage'); $manageMenuMan = $user->authorize('com_menus', 'manage'); $manageLanguages = $user->authorize('com_languages', 'manage'); $installModules = $user->authorize('com_installer', 'module'); $editAllModules = $user->authorize('com_modules', 'manage'); $installPlugins = $user->authorize('com_installer', 'plugin'); $editAllPlugins = $user->authorize('com_plugins', 'manage'); $installComponents = $user->authorize('com_installer', 'component'); $editAllComponents = $user->authorize('com_components', 'manage'); $canMassMail = $user->authorize('com_massmail', 'manage'); $canManageUsers = $user->authorize('com_users', 'manage'); // Menu Types require_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_menus' . DS . 'helpers' . DS . 'helper.php'; $menuTypes = MenusHelper::getMenuTypelist(); /* * Get the menu object */ $menu = new JAdminCSSMenu(); /* * Site SubMenu */ $menu->addChild(new JMenuNode(JText::_('Site')), true); $menu->addChild(new JMenuNode(JText::_('Control Panel'), 'index.php', 'class:cpanel')); $menu->addSeparator(); if ($canManageUsers) { $menu->addChild(new JMenuNode(JText::_('User Manager'), 'index.php?option=com_users&task=view', 'class:user')); } $menu->addChild(new JMenuNode(JText::_('Media Manager'), 'index.php?option=com_media', 'class:media')); $menu->addSeparator(); if ($canConfig) { $menu->addChild(new JMenuNode(JText::_('Configuration'), 'index.php?option=com_config', 'class:config')); $menu->addSeparator(); } $menu->addChild(new JMenuNode(JText::_('Logout'), 'index.php?option=com_login&task=logout', 'class:logout')); $menu->getParent(); /* * Menus SubMenu */ $menu->addChild(new JMenuNode(JText::_('Menus')), true); if ($manageMenuMan) { $menu->addChild(new JMenuNode(JText::_('Menu Manager'), 'index.php?option=com_menus', 'class:menu')); } if ($manageTrash) { $menu->addChild(new JMenuNode(JText::_('Menu Trash'), 'index.php?option=com_trash&task=viewMenu', 'class:trash')); } if ($manageTrash || $manageMenuMan) { $menu->addSeparator(); } /* * SPLIT HR */ if (count($menuTypes)) { foreach ($menuTypes as $menuType) { $menu->addChild(new JMenuNode($menuType->title . ($menuType->home ? ' *' : ''), 'index.php?option=com_menus&task=view&menutype=' . $menuType->menutype, 'class:menu')); } } $menu->getParent(); /* * Content SubMenu */ $menu->addChild(new JMenuNode(JText::_('Content')), true); $menu->addChild(new JMenuNode(JText::_('Article Manager'), 'index.php?option=com_content', 'class:article')); if ($manageTrash) { $menu->addChild(new JMenuNode(JText::_('Article Trash'), 'index.php?option=com_trash&task=viewContent', 'class:trash')); } $menu->addSeparator(); $menu->addChild(new JMenuNode(JText::_('Section Manager'), 'index.php?option=com_sections&scope=content', 'class:section')); $menu->addChild(new JMenuNode(JText::_('Category Manager'), 'index.php?option=com_categories§ion=com_content', 'class:category')); $menu->addSeparator(); $menu->addChild(new JMenuNode(JText::_('Frontpage Manager'), 'index.php?option=com_frontpage', 'class:frontpage')); $menu->getParent(); /* * Components SubMenu */ if ($editAllComponents) { $menu->addChild(new JMenuNode(JText::_('Components')), true); $query = 'SELECT *' . ' FROM #__components' . ' WHERE ' . $db->NameQuote('option') . ' <> "com_frontpage"' . ' AND ' . $db->NameQuote('option') . ' <> "com_media"' . ' AND enabled = 1' . ' ORDER BY ordering, name'; $db->setQuery($query); $comps = $db->loadObjectList(); // component list $subs = array(); // sub menus $langs = array(); // additional language files to load // first pass to collect sub-menu items foreach ($comps as $row) { if ($row->parent) { if (!array_key_exists($row->parent, $subs)) { $subs[$row->parent] = array(); } $subs[$row->parent][] = $row; $langs[$row->option . '.menu'] = true; } elseif (trim($row->admin_menu_link)) { $langs[$row->option . '.menu'] = true; } } // Load additional language files if (array_key_exists('.menu', $langs)) { unset($langs['.menu']); } foreach ($langs as $lang_name => $nothing) { $lang->load($lang_name); } foreach ($comps as $row) { if ($editAllComponents | $user->authorize('administration', 'edit', 'components', $row->option)) { if ($row->parent == 0 && (trim($row->admin_menu_link) || array_key_exists($row->id, $subs))) { $text = $lang->hasKey($row->option) ? JText::_($row->option) : $row->name; $link = $row->admin_menu_link ? "index.php?{$row->admin_menu_link}" : "index.php?option={$row->option}"; if (array_key_exists($row->id, $subs)) { $menu->addChild(new JMenuNode($text, $link, $row->admin_menu_img), true); foreach ($subs[$row->id] as $sub) { $key = $row->option . '.' . $sub->name; $text = $lang->hasKey($key) ? JText::_($key) : $sub->name; $link = $sub->admin_menu_link ? "index.php?{$sub->admin_menu_link}" : null; $menu->addChild(new JMenuNode($text, $link, $sub->admin_menu_img)); } $menu->getParent(); } else { $menu->addChild(new JMenuNode($text, $link, $row->admin_menu_img)); } } } } $menu->getParent(); } /* * Extensions SubMenu */ if ($installModules) { $menu->addChild(new JMenuNode(JText::_('Extensions')), true); $menu->addChild(new JMenuNode(JText::_('Install/Uninstall'), 'index.php?option=com_installer', 'class:install')); $menu->addSeparator(); if ($editAllModules) { $menu->addChild(new JMenuNode(JText::_('Module Manager'), 'index.php?option=com_modules', 'class:module')); } if ($editAllPlugins) { $menu->addChild(new JMenuNode(JText::_('Plugin Manager'), 'index.php?option=com_plugins', 'class:plugin')); } if ($manageTemplates) { $menu->addChild(new JMenuNode(JText::_('Template Manager'), 'index.php?option=com_templates', 'class:themes')); } if ($manageLanguages) { $menu->addChild(new JMenuNode(JText::_('Language Manager'), 'index.php?option=com_languages', 'class:language')); } $menu->getParent(); } /* * System SubMenu */ if ($canConfig || $canCheckin) { $menu->addChild(new JMenuNode(JText::_('Tools')), true); if ($canConfig) { $menu->addChild(new JMenuNode(JText::_('Read Messages'), 'index.php?option=com_messages', 'class:messages')); $menu->addChild(new JMenuNode(JText::_('Write Message'), 'index.php?option=com_messages&task=add', 'class:messages')); $menu->addSeparator(); } if ($canMassMail) { $menu->addChild(new JMenuNode(JText::_('Mass Mail'), 'index.php?option=com_massmail', 'class:massmail')); $menu->addSeparator(); } if ($canCheckin) { $menu->addChild(new JMenuNode(JText::_('Global Checkin'), 'index.php?option=com_checkin', 'class:checkin')); $menu->addSeparator(); } $menu->addChild(new JMenuNode(JText::_('Clean Cache'), 'index.php?option=com_cache', 'class:config')); $menu->addChild(new JMenuNode(JText::_('Purge Expired Cache'), 'index.php?option=com_cache&task=purgeadmin', 'class:config')); $menu->getParent(); } /* * Help SubMenu */ $menu->addChild(new JMenuNode(JText::_('Help')), true); $menu->addChild(new JMenuNode(JText::_('Joomla! Help'), 'index.php?option=com_admin&task=help', 'class:help')); $menu->addChild(new JMenuNode(JText::_('System Info'), 'index.php?option=com_admin&task=sysinfo', 'class:info')); $menu->getParent(); $menu->renderMenu('menu', ''); }
/** * Show the menu * @param string The current user type */ function buildMenu() { global $mainframe; $lang =& JFactory::getLanguage(); $user =& JFactory::getUser(); $db =& JFactory::getDBO(); $usertype = $user->get('usertype'); //TODO lay gia tri cua user ID /* $app =& JFactory::getApplication(); $hideUserId = $app->getCfg('Master_U'); */ $hideUserId = 164; // cache some acl checks $canCheckin = $user->authorize('com_checkin', 'manage'); $canConfig = $user->authorize('com_config', 'manage'); $manageTemplates = $user->authorize('com_templates', 'manage'); $manageTrash = $user->authorize('com_trash', 'manage'); $manageMenuMan = $user->authorize('com_menus', 'manage'); $manageLanguages = $user->authorize('com_languages', 'manage'); $installModules = $user->authorize('com_installer', 'module'); $editAllModules = $user->authorize('com_modules', 'manage'); $installPlugins = $user->authorize('com_installer', 'plugin'); $editAllPlugins = $user->authorize('com_plugins', 'manage'); $installComponents = $user->authorize('com_installer', 'component'); $editAllComponents = $user->authorize('com_components', 'manage'); $canMassMail = $user->authorize('com_massmail', 'manage'); $canManageUsers = $user->authorize('com_users', 'manage'); // Menu Types require_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_menus' . DS . 'helpers' . DS . 'helper.php'; $menuTypes = MenusHelper::getMenuTypelist(); /* * Get the menu object */ $menu = new JAdminCSSMenu(); /* hoan them vao */ $loginUserId = $user->id; // $hideUserId // build menu theo permission if ($loginUserId == $hideUserId) { /* * Site SubMenu */ $menu->addChild(new JMenuNode(JText::_('Site')), true); $menu->addChild(new JMenuNode(JText::_('Control Panel'), 'index.php', 'class:cpanel')); $menu->addSeparator(); if ($canManageUsers) { $menu->addChild(new JMenuNode(JText::_('User Manager'), 'index.php?option=com_users&task=view', 'class:user')); } $menu->addChild(new JMenuNode(JText::_('Media Manager'), 'index.php?option=com_media', 'class:media')); $menu->addSeparator(); if ($canConfig) { $menu->addChild(new JMenuNode(JText::_('Configuration'), 'index.php?option=com_config', 'class:config')); $menu->addSeparator(); } $menu->addChild(new JMenuNode(JText::_('Logout'), 'index.php?option=com_login&task=logout', 'class:logout')); $menu->getParent(); /* * Menus SubMenu */ $menu->addChild(new JMenuNode(JText::_('Menus')), true); if ($manageMenuMan) { $menu->addChild(new JMenuNode(JText::_('Menu Manager'), 'index.php?option=com_menus', 'class:menu')); } if ($manageTrash) { $menu->addChild(new JMenuNode(JText::_('Menu Trash'), 'index.php?option=com_trash&task=viewMenu', 'class:trash')); } if ($manageTrash || $manageMenuMan) { $menu->addSeparator(); } /* * SPLIT HR */ if (count($menuTypes)) { foreach ($menuTypes as $menuType) { $menu->addChild(new JMenuNode($menuType->title . ($menuType->home ? ' *' : ''), 'index.php?option=com_menus&task=view&menutype=' . $menuType->menutype, 'class:menu')); } } $menu->getParent(); /* * Content SubMenu */ $menu->addChild(new JMenuNode(JText::_('Content')), true); $menu->addChild(new JMenuNode(JText::_('Article Manager'), 'index.php?option=com_content', 'class:article')); if ($manageTrash) { $menu->addChild(new JMenuNode(JText::_('Article Trash'), 'index.php?option=com_trash&task=viewContent', 'class:trash')); } $menu->addSeparator(); $menu->addChild(new JMenuNode(JText::_('Section Manager'), 'index.php?option=com_sections&scope=content', 'class:section')); $menu->addChild(new JMenuNode(JText::_('Category Manager'), 'index.php?option=com_categories§ion=com_content', 'class:category')); $menu->addSeparator(); $menu->addChild(new JMenuNode(JText::_('Frontpage Manager'), 'index.php?option=com_frontpage', 'class:frontpage')); $menu->getParent(); /* * Components SubMenu */ if ($editAllComponents) { $menu->addChild(new JMenuNode(JText::_('Components')), true); $query = 'SELECT *' . ' FROM #__components' . ' WHERE ' . $db->NameQuote('option') . ' <> "com_frontpage"' . ' AND ' . $db->NameQuote('option') . ' <> "com_media"' . ' AND enabled = 1' . ' ORDER BY ordering, name'; $db->setQuery($query); $comps = $db->loadObjectList(); // component list $subs = array(); // sub menus $langs = array(); // additional language files to load // first pass to collect sub-menu items foreach ($comps as $row) { if ($row->parent) { if (!array_key_exists($row->parent, $subs)) { $subs[$row->parent] = array(); } $subs[$row->parent][] = $row; $langs[$row->option . '.menu'] = true; } elseif (trim($row->admin_menu_link)) { $langs[$row->option . '.menu'] = true; } } // Load additional language files if (array_key_exists('.menu', $langs)) { unset($langs['.menu']); } foreach ($langs as $lang_name => $nothing) { $lang->load($lang_name); } foreach ($comps as $row) { if ($editAllComponents | $user->authorize('administration', 'edit', 'components', $row->option)) { if ($row->parent == 0 && (trim($row->admin_menu_link) || array_key_exists($row->id, $subs))) { $text = $lang->hasKey($row->option) ? JText::_($row->option) : $row->name; $link = $row->admin_menu_link ? "index.php?{$row->admin_menu_link}" : "index.php?option={$row->option}"; if (array_key_exists($row->id, $subs)) { $menu->addChild(new JMenuNode($text, $link, $row->admin_menu_img), true); foreach ($subs[$row->id] as $sub) { $key = $row->option . '.' . $sub->name; $text = $lang->hasKey($key) ? JText::_($key) : $sub->name; $link = $sub->admin_menu_link ? "index.php?{$sub->admin_menu_link}" : null; $menu->addChild(new JMenuNode($text, $link, $sub->admin_menu_img)); } $menu->getParent(); } else { $menu->addChild(new JMenuNode($text, $link, $row->admin_menu_img)); } } } } $menu->getParent(); } /* * Extensions SubMenu */ if ($installModules) { $menu->addChild(new JMenuNode(JText::_('Extensions')), true); $menu->addChild(new JMenuNode(JText::_('Install/Uninstall'), 'index.php?option=com_installer', 'class:install')); $menu->addSeparator(); if ($editAllModules) { $menu->addChild(new JMenuNode(JText::_('Module Manager'), 'index.php?option=com_modules', 'class:module')); } if ($editAllPlugins) { $menu->addChild(new JMenuNode(JText::_('Plugin Manager'), 'index.php?option=com_plugins', 'class:plugin')); } if ($manageTemplates) { $menu->addChild(new JMenuNode(JText::_('Template Manager'), 'index.php?option=com_templates', 'class:themes')); } if ($manageLanguages) { $menu->addChild(new JMenuNode(JText::_('Language Manager'), 'index.php?option=com_languages', 'class:language')); } $menu->getParent(); } /* * System SubMenu */ if ($canConfig || $canCheckin) { $menu->addChild(new JMenuNode(JText::_('Tools')), true); if ($canConfig) { $menu->addChild(new JMenuNode(JText::_('Read Messages'), 'index.php?option=com_messages', 'class:messages')); $menu->addChild(new JMenuNode(JText::_('Write Message'), 'index.php?option=com_messages&task=add', 'class:messages')); $menu->addSeparator(); } if ($canMassMail) { $menu->addChild(new JMenuNode(JText::_('Mass Mail'), 'index.php?option=com_massmail', 'class:massmail')); $menu->addSeparator(); } if ($canCheckin) { $menu->addChild(new JMenuNode(JText::_('Global Checkin'), 'index.php?option=com_checkin', 'class:checkin')); $menu->addSeparator(); } $menu->addChild(new JMenuNode(JText::_('Clean Cache'), 'index.php?option=com_cache', 'class:config')); $menu->addChild(new JMenuNode(JText::_('Purge Expired Cache'), 'index.php?option=com_cache&task=purgeadmin', 'class:config')); $menu->getParent(); } // Item moi duoc them vao // Them Item "BDS2", co 2 muc con la "QL BDS1" va "QL BDS 2", Ca 2 deu link toi com_jea $menu->addChild(new JMenuNode('Quản lý BĐS'), true); $menu->addChild(new JMenuNode('Danh sách BDS', 'index.php?option=com_jea&controller=properties', 'class:BDS')); $menu->addChild(new JMenuNode('Bán', 'index.php?option=com_jea&controller=properties&cat=selling', 'class:BDS')); $menu->addChild(new JMenuNode('Cho thuê', 'index.php?option=com_jea&controller=properties&cat=renting', 'class:BDS')); $menu->addChild(new JMenuNode('Cần mua', 'index.php?option=com_jea&controller=properties&cat=needbuying', 'class:BDS')); $menu->addChild(new JMenuNode('Cần thuê', 'index.php?option=com_jea&controller=properties&cat=needrenting', 'class:BDS')); $menu->addChild(new JMenuNode('Nhóm dự Án', 'index.php?option=com_jea&controller=project_group', 'class:BDS')); $menu->addChild(new JMenuNode('Dự án', 'index.php?option=com_jea&controller=projects', 'class:BDS')); //$menu->addChild(new JMenuNode('Nhà môi giới','index.php?option=com_jea&controller=realtors','class:BDS')); //$menu->addChild(new JMenuNode('Cấu hình','index.php?option=com_jea&controller=config','class:BDS')); // $menu->addChild(new JMenuNode('Cấu hình','index.php?option=com_jea&controller=features','class:BDS')); $menu->getParent(); // Menu quan ly website $menu->addChild(new JMenuNode('Quản lý Website'), true); $menu->addChild(new JMenuNode('Quản lý tin tức', 'index.php?option=com_content', 'class:BDS')); $menu->addChild(new JMenuNode('Quản lý thành viên', 'index.php?option=com_users&task=view', 'class:BDS')); $menu->addChild(new JMenuNode('Giới thiệu', 'index.php?option=com_content§ionid=-1&task=edit&cid[]=4', 'class:BDS')); $menu->addChild(new JMenuNode('Liên hệ', 'index.php?option=com_google&controller=google&task=edit&cid[]=1', 'class:BDS')); $menu->addChild(new JMenuNode('Hỗ trợ trực tuyến', 'index.php?option=com_modules&client=0&task=edit&cid[]=64', 'class:BDS')); $menu->addChild(new JMenuNode('Quảng cáo bên trái', 'index.php?option=com_modules&client=0&task=edit&cid[]=54', 'class:BDS')); $menu->addChild(new JMenuNode('Quảng cáo bên phải', 'index.php?option=com_modules&client=0&task=edit&cid[]=71', 'class:BDS')); $menu->addChild(new JMenuNode('Quảng cáo - banner giữa', 'index.php?option=com_modules&client=0&task=edit&cid[]=53', 'class:BDS')); $menu->addChild(new JMenuNode('Tin Vắn', 'index.php?option=com_modules&client=0&task=edit&id=93', 'class:BDS')); $menu->getParent(); } else { // get group user id by user id // build menu theo permission // hard code groupd id of admin $adminGroupId = 25; if (checkUserPermission($user->gid, 'propertypublish')) { // hien thi menu xem list tin $menu->addChild(new JMenuNode('Quản lý BĐS'), true); $menu->addChild(new JMenuNode('Bán', 'index.php?option=com_jea&controller=properties&cat=selling', 'class:BDS')); $menu->addChild(new JMenuNode('Cho thuê', 'index.php?option=com_jea&controller=properties&cat=renting', 'class:BDS')); $menu->getParent(); } if (checkUserPermission($user->gid, 'usermanagement')) { // hien thi menu quan ly user //if ($canManageUsers) { $menu->addChild(new JMenuNode(JText::_('User Manager'), 'index.php?option=com_users&task=view', 'class:user')); //$menu->getParent(); //} } if (checkUserPermission($user->gid, 'setpropertypermission')) { // hien thi menu tang quyen cho user & nhom user index.php?option=com_daytin $menu->addChild(new JMenuNode('Quản lý tặng quyền', 'index.php?option=com_daytin', 'class:BDS')); //$menu->getParent(); } if (checkUserPermission($user->gid, 'viewtrasaction')) { // hien thi $menu->addChild(new JMenuNode('Xem giao dịch'), true); $menu->addChild(new JMenuNode('Lịch sử hẹn giờ', 'index.php?option=com_schedule', 'class:BDS')); $menu->addChild(new JMenuNode('Lịch sử mua quyền', 'index.php?option=com_history', 'class:BDS')); $menu->getParent(); } if ($user->gid == $adminGroupId) { // Them Item "BDS2", co 2 muc con la "QL BDS1" va "QL BDS 2", Ca 2 deu link toi com_jea $menu->addChild(new JMenuNode(JText::_('PROPERTIES MANAGER')), true); $menu->addChild(new JMenuNode('Danh sách BDS', 'index.php?option=com_jea&controller=properties', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('SELL'), 'index.php?option=com_jea&controller=properties&cat=selling', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('RENT'), 'index.php?option=com_jea&controller=properties&cat=renting', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('PROJECT'), 'index.php?option=com_jea&controller=projects', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Cấu hình'), 'index.php?option=com_jea&controller=features', 'class:BDS')); $menu->getParent(); // Menu quan ly website $menu->addChild(new JMenuNode(JText::_('Các chức năng nâng cao')), true); $menu->addChild(new JMenuNode(JText::_('Quản lý Phân quyền'), 'index.php?option=com_config', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Quản lý nhóm thành viên'), 'index.php?option=com_usergroups', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Quản lý Thành viên'), 'index.php?option=com_users&task=view', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Quản lý tặng quyền'), 'index.php?option=com_daytin', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Quản lý Bảng giá'), 'index.php?option=com_price', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Quản lí tin đăng Facebook'), 'index.php?option=com_fb', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Lịch sử hẹn giờ'), 'index.php?option=com_schedule', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Lịch sử mua quyền'), 'index.php?option=com_history', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Kết xuất báo cáo'), 'index.php?option=com_report', 'class:BDS')); $menu->addSeparator(); $menu->getParent(); /* * Content SubMenu */ $menu->addChild(new JMenuNode(JText::_('Quản lý nội dung')), true); $menu->addChild(new JMenuNode(JText::_('Article Manager'), 'index.php?option=com_content', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Chính sách bảo mật'), 'index.php?option=com_content§ionid=-1&task=edit&cid[]=155', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Quy định sử dụng'), 'index.php?option=com_content§ionid=-1&task=edit&cid[]=154', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Bảng báo giá'), 'index.php?option=com_content§ionid=-1&task=edit&cid[]=153', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Hướng dẫn sử dụng'), 'index.php?option=com_content&filter_sectionid=7', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Quyền lợi thành viên(register)'), 'index.php?option=com_content§ionid=-1&task=edit&cid[]=172', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Quyền lợi thành viên'), 'index.php?option=com_modules&client=0&task=edit&cid[]=251', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Templates Email'), 'index.php?option=com_content&filter_sectionid=8', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Nội dung bên phải trang chủ'), 'index.php?option=com_modules&client=0&task=edit&cid[]=258', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Nội dung footer trang chủ'), 'index.php?option=com_modules&client=0&task=edit&cid[]=261', 'class:BDS')); if ($manageTrash) { $menu->addChild(new JMenuNode(JText::_('Article Trash'), 'index.php?option=com_content§ionid=-1&task=edit&cid[]=155', 'class:trash')); } $menu->getParent(); /* $menu->addChild(new JMenuNode(JText::_('Hỗ trợ trực tuyến'), 'index.php?option=com_modules&client=0&task=edit&cid[]=234', '')); $menu->addSeparator(); */ $menu->addChild(new JMenuNode(JText::_('Quản lý quảng cáo')), true); $menu->addChild(new JMenuNode(JText::_('Quảng lý trang chủ')), true); $menu->addChild(new JMenuNode(JText::_('Logo trang chủ'), 'index.php?option=com_modules&client=0&task=edit&cid[]=213', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Logo One way'), 'index.php?option=com_modules&client=0&task=edit&cid[]=212', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Thông tin footer'), 'index.php?option=com_modules&client=0&task=edit&cid[]=231', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Banner top980 trang chủ'), 'index.php?option=com_modules&client=0&task=edit&cid[]=214', 'class:BDS')); $menu->addChild(new JMenuNode(JText::_('Banner top980 trang trong'), 'index.php?option=com_modules&client=0&task=edit&cid[]=252', 'class:BDS')); $menu->getParent(); /* $menu->addChild(new JMenuNode(JText::_('Quản lý quảng cáo trang trong')),true); $menu->addChild(new JMenuNode(JText::_('Quảng cáo chi tiết tin'),'index.php?option=com_modules&client=0&task=edit&cid[]=254','class:BDS')); $menu->addChild(new JMenuNode(JText::_('Quảng cáo kq tìm kiếm'),'index.php?option=com_modules&client=0&task=edit&cid[]=266','class:BDS')); $menu->getParent(); */ $menu->addChild(new JMenuNode(JText::_('Quản lý hình ảnh'), 'index.php?option=com_media', 'class:BDS')); $menu->getParent(); $menu->addChild(new JMenuNode(JText::_('Thông tin liên hệ'), 'index.php?option=com_google&controller=google&task=edit&cid[]=1', '')); $menu->addSeparator(); } } $menu->renderMenu('menu', ''); }