summaryrefslogtreecommitdiff
path: root/modules/menu/menu.module
diff options
context:
space:
mode:
Diffstat (limited to 'modules/menu/menu.module')
-rw-r--r--modules/menu/menu.module20
1 files changed, 14 insertions, 6 deletions
diff --git a/modules/menu/menu.module b/modules/menu/menu.module
index d639d9453..f4ec4c386 100644
--- a/modules/menu/menu.module
+++ b/modules/menu/menu.module
@@ -399,15 +399,23 @@ function _menu_parents_recurse($tree, $menu_name, $indent, &$options, $exclude,
}
/**
- * Reset a system-defined menu item.
+ * Reset a system-defined menu link.
*/
-function menu_reset_item($item) {
- $new_item = _menu_link_build(menu_get_item($item['router_path']));
+function menu_reset_item($link) {
+ // To reset the link to its original values, we need to retrieve its
+ // definition from hook_menu(). Otherwise, for example, the link's menu would
+ // not be reset, because properties like the original 'menu_name' are not
+ // stored anywhere else. Since resetting a link happens rarely and this is a
+ // one-time operation, retrieving the full menu router does no harm.
+ $menu = menu_get_router();
+ $router_item = $menu[$link['router_path']];
+ $new_link = _menu_link_build($router_item);
+ // Merge existing menu link's ID and 'has_children' property.
foreach (array('mlid', 'has_children') as $key) {
- $new_item[$key] = $item[$key];
+ $new_link[$key] = $link[$key];
}
- menu_link_save($new_item);
- return $new_item;
+ menu_link_save($new_link);
+ return $new_link;
}
/**