From 299ce66ecea22ffbfc84cdf5ea8d91af3e290db1 Mon Sep 17 00:00:00 2001 From: cash Date: Sat, 26 Feb 2011 23:47:07 +0000 Subject: Fixes #2951 not registering utilities menu item by default but added code to automatically register a parent menu if not registered in admin menu registration function. We lose the ability to set a weight on utilities. git-svn-id: http://code.elgg.org/elgg/trunk@8501 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/admin.php | 10 +++++++--- engine/lib/navigation.php | 25 +++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) (limited to 'engine') diff --git a/engine/lib/admin.php b/engine/lib/admin.php index be01a150c..b4a55877c 100644 --- a/engine/lib/admin.php +++ b/engine/lib/admin.php @@ -115,6 +115,8 @@ function elgg_admin_notice_exists($id) { * * The text of the menu item is obtained from elgg_echo(admin:$parent_id:$menu_id) * + * This function handles registering the parent if it has not been registered. + * * @param string $menu_id The Unique ID of section * @param string $parent_id If a child section, the parent section id. * @param int $weight The menu item weight @@ -124,6 +126,11 @@ function elgg_admin_notice_exists($id) { */ function elgg_add_admin_menu_item($menu_id, $parent_id = NULL, $weight = 100) { + // make sure parent is registered + if ($parent_id && !elgg_is_menu_item_registered('page', $parent_id)) { + elgg_add_admin_menu_item($parent_id); + } + // in the admin section parents never have links if ($parent_id) { $href = "pg/admin/$parent_id/$menu_id"; @@ -199,9 +206,6 @@ function admin_init() { elgg_add_admin_menu_item('simple', 'plugins', 10); elgg_add_admin_menu_item('advanced', 'plugins', 20); - // utilities - elgg_add_admin_menu_item('utilities', null, 70); - // dashboard elgg_register_menu_item('page', array( 'name' => 'dashboard', diff --git a/engine/lib/navigation.php b/engine/lib/navigation.php index 2e6906945..4affc9c30 100644 --- a/engine/lib/navigation.php +++ b/engine/lib/navigation.php @@ -75,6 +75,31 @@ function elgg_unregister_menu_item($menu_name, $item_name) { return false; } +/** + * Check if a menu item has been registered + * + * @param string $menu_name The name of the menu + * @param string $item_name The unique identifier for this menu item + * + * @return bool + * @since 1.8.0 + */ +function elgg_is_menu_item_registered($menu_name, $item_name) { + global $CONFIG; + + if (!isset($CONFIG->menus[$menu_name])) { + return false; + } + + foreach ($CONFIG->menus[$menu_name] as $index => $menu_object) { + if ($menu_object->getName() == $item_name) { + return true; + } + } + + return false; +} + /** * Adds a breadcrumb to the breadcrumbs stack. * -- cgit v1.2.3