Selaa lähdekoodia

Menus created via a handler, at runtime

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@1014 a333f486-631f-4898-b8df-5754b55c2be0
romainq 14 vuotta sitten
vanhempi
commit
ad5a9f4b1c

+ 11 - 0
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;

+ 0 - 1
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('<h3>'.$oMenuNode->GetTitle().'</h3>');
 			$oPage->AddToMenu('<div>');

+ 4 - 0
core/modulehandler.class.inc.php

@@ -29,5 +29,9 @@ abstract class ModuleHandlerAPI
 	public static function OnMetaModelStarted()
 	{
 	}
+
+	public static function OnMenuCreation()
+	{
+	}
 }
 ?>

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