diff options
Diffstat (limited to 'modules/menu/menu.module')
-rw-r--r-- | modules/menu/menu.module | 20 |
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; } /** |