aboutsummaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/lib/admin.php10
-rw-r--r--engine/lib/navigation.php25
2 files changed, 32 insertions, 3 deletions
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
@@ -76,6 +76,31 @@ function elgg_unregister_menu_item($menu_name, $item_name) {
}
/**
+ * 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.
*
* @param string $title The title to display