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 */);
+ }
+ }
+}
?>