diff --git a/application/itopwebpage.class.inc.php b/application/itopwebpage.class.inc.php index d3d32994f..b3bdafa47 100644 --- a/application/itopwebpage.class.inc.php +++ b/application/itopwebpage.class.inc.php @@ -464,6 +464,17 @@ EOF public function DisplayMenu() { + // Build menus from module handlers + // + foreach(get_declared_classes() as $sPHPClass) + { + if (is_subclass_of($sPHPClass, 'ModuleHandlerAPI')) + { + $aCallSpec = array($sPHPClass, 'OnMenuCreation'); + call_user_func($aCallSpec); + } + } + // Display the menu $oAppContext = new ApplicationContext(); $iAccordionIndex = 0; diff --git a/application/menunode.class.inc.php b/application/menunode.class.inc.php index 2eb928b4e..2e2d59612 100644 --- a/application/menunode.class.inc.php +++ b/application/menunode.class.inc.php @@ -98,7 +98,6 @@ class ApplicationMenu foreach(self::$aRootMenus as $aMenu) { $oMenuNode = self::GetMenuNode($aMenu['index']); - if (($oMenuNode->GetMenuId() == 'AdminTools') && (!UserRights::IsAdministrator())) continue; // Don't display the admin menu for non admin users if (!$oMenuNode->IsEnabled()) continue; // Don't display a non-enabled menu $oPage->AddToMenu('

'.$oMenuNode->GetTitle().'

'); $oPage->AddToMenu('
'); diff --git a/core/modulehandler.class.inc.php b/core/modulehandler.class.inc.php index e4fa2fd7f..b96732641 100644 --- a/core/modulehandler.class.inc.php +++ b/core/modulehandler.class.inc.php @@ -29,5 +29,9 @@ abstract class ModuleHandlerAPI public static function OnMetaModelStarted() { } + + public static function OnMenuCreation() + { + } } ?> diff --git a/modules/itop-welcome-itil/model.itop-welcome-itil.php b/modules/itop-welcome-itil/model.itop-welcome-itil.php index 99ef84026..89f85003c 100644 --- a/modules/itop-welcome-itil/model.itop-welcome-itil.php +++ b/modules/itop-welcome-itil/model.itop-welcome-itil.php @@ -36,21 +36,31 @@ * Universal Search */ -$oWelcomeMenu = new MenuGroup('WelcomeMenu', 10 /* fRank */); -new TemplateMenuNode('WelcomeMenuPage', APPROOT.'modules/itop-welcome-itil/welcome_menu.html', $oWelcomeMenu->GetIndex() /* oParent */, 1 /* fRank */); -$oToolsMenu = new MenuGroup('DataAdministration', 70 /* fRank */, 'Organization', UR_ACTION_MODIFY, UR_ALLOWED_YES|UR_ALLOWED_DEPENDS); -new WebPageMenuNode('CSVImportMenu', '../pages/csvimport.php', $oToolsMenu->GetIndex(), 1 /* fRank */); - -// Add the admin menus -$oAdminMenu = new MenuGroup('AdminTools', 80 /* fRank */); -new OQLMenuNode('UserAccountsMenu', 'SELECT User', $oAdminMenu->GetIndex(), 1 /* fRank */); -new OQLMenuNode('ProfilesMenu', 'SELECT URP_Profiles', $oAdminMenu->GetIndex(), 2 /* fRank */); -new TemplateMenuNode('NotificationsMenu', '../application/templates/notifications_menu.html', $oAdminMenu->GetIndex(), 3 /* fRank */); -new OQLMenuNode('AuditCategories', 'SELECT AuditCategory', $oAdminMenu->GetIndex(), 4 /* fRank */); -new WebPageMenuNode('RunQueriesMenu', '../pages/run_query.php', $oAdminMenu->GetIndex(), 8 /* fRank */); -new WebPageMenuNode('ExportMenu', '../webservices/export.php', $oAdminMenu->GetIndex(), 9 /* fRank */); -new WebPageMenuNode('DataModelMenu', '../pages/schema.php', $oAdminMenu->GetIndex(), 10 /* fRank */); -new WebPageMenuNode('UniversalSearchMenu', '../pages/UniversalSearch.php', $oAdminMenu->GetIndex(), 11 /* fRank */); +class ItopWelcome extends ModuleHandlerAPI +{ + public static function OnMenuCreation() + { + $oWelcomeMenu = new MenuGroup('WelcomeMenu', 10 /* fRank */); + new TemplateMenuNode('WelcomeMenuPage', APPROOT.'modules/itop-welcome-itil/welcome_menu.html', $oWelcomeMenu->GetIndex() /* oParent */, 1 /* fRank */); + + $oToolsMenu = new MenuGroup('DataAdministration', 70 /* fRank */, 'Organization', UR_ACTION_MODIFY, UR_ALLOWED_YES|UR_ALLOWED_DEPENDS); + new WebPageMenuNode('CSVImportMenu', '../pages/csvimport.php', $oToolsMenu->GetIndex(), 1 /* fRank */); + + // Add the admin menus + if (UserRights::IsAdministrator()) + { + $oAdminMenu = new MenuGroup('AdminTools', 80 /* fRank */); + new OQLMenuNode('UserAccountsMenu', 'SELECT User', $oAdminMenu->GetIndex(), 1 /* fRank */); + new OQLMenuNode('ProfilesMenu', 'SELECT URP_Profiles', $oAdminMenu->GetIndex(), 2 /* fRank */); + new TemplateMenuNode('NotificationsMenu', '../application/templates/notifications_menu.html', $oAdminMenu->GetIndex(), 3 /* fRank */); + new OQLMenuNode('AuditCategories', 'SELECT AuditCategory', $oAdminMenu->GetIndex(), 4 /* fRank */); + new WebPageMenuNode('RunQueriesMenu', '../pages/run_query.php', $oAdminMenu->GetIndex(), 8 /* fRank */); + new WebPageMenuNode('ExportMenu', '../webservices/export.php', $oAdminMenu->GetIndex(), 9 /* fRank */); + new WebPageMenuNode('DataModelMenu', '../pages/schema.php', $oAdminMenu->GetIndex(), 10 /* fRank */); + new WebPageMenuNode('UniversalSearchMenu', '../pages/UniversalSearch.php', $oAdminMenu->GetIndex(), 11 /* fRank */); + } + } +} ?>