diff options
Diffstat (limited to 'modules/menu/menu.module')
-rw-r--r-- | modules/menu/menu.module | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/modules/menu/menu.module b/modules/menu/menu.module index c91486731..40614a162 100644 --- a/modules/menu/menu.module +++ b/modules/menu/menu.module @@ -268,6 +268,15 @@ function menu_save($menu) { switch ($status) { case SAVED_NEW: + // Make sure the menu is present in the active menus variable so that its + // items may appear in the menu active trail. + // @see menu_set_active_menu_names() + $active_menus = variable_get('menu_default_active_menus', array_keys(menu_get_menus())); + if (!in_array($menu['menu_name'], $active_menus)) { + $active_menus[] = $menu['menu_name']; + variable_set('menu_default_active_menus', $active_menus); + } + module_invoke_all('menu_insert', $menu); break; @@ -305,6 +314,15 @@ function menu_delete($menu) { // Delete all links from the menu. menu_delete_links($menu['menu_name']); + // Remove menu from active menus variable. + $active_menus = variable_get('menu_default_active_menus', array_keys(menu_get_menus())); + foreach ($active_menus as $i => $menu_name) { + if ($menu['menu_name'] == $menu_name) { + unset($active_menus[$i]); + variable_set('menu_default_active_menus', $active_menus); + } + } + // Delete the custom menu. db_delete('menu_custom') ->condition('menu_name', $menu['menu_name']) @@ -614,7 +632,7 @@ function menu_form_node_form_alter(&$form, $form_state) { // menu_parent_options() is goofy and can actually handle either a menu link // or a node type both as second argument. Pick based on whether there is // a link already (menu_node_prepare() sets mlid default to 0). - $options = menu_parent_options(menu_get_menus(), $link['mlid'] ? $link : $type); + $options = menu_parent_options(menu_get_menus(), $link['mlid'] ? $link : $type, $type); // If no possible parent menu items were found, there is nothing to display. if (empty($options)) { return; |