summaryrefslogtreecommitdiff
path: root/modules/menu/menu.module
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2011-05-13 11:57:47 -0400
committerDries Buytaert <dries@buytaert.net>2011-05-13 11:57:47 -0400
commit8f46835ea281a1a70c91350fd743a9a0d583333d (patch)
tree3d758dbfe80d1354fb87a9a5a9f5f455cb17da57 /modules/menu/menu.module
parent43c4a88db30047ea132e7fcc68a5e158008864da (diff)
downloadbrdo-8f46835ea281a1a70c91350fd743a9a0d583333d.tar.gz
brdo-8f46835ea281a1a70c91350fd743a9a0d583333d.tar.bz2
- Patch #761648 by lyricnz, andypost, ksenzee, Jody Lynn, Gábor Hojtsy, Damien Tournoud, Shawn DeArmond, David_Rothstein: menu items disappear after upgrade or manual menu entry.
Diffstat (limited to 'modules/menu/menu.module')
-rw-r--r--modules/menu/menu.module21
1 files changed, 13 insertions, 8 deletions
diff --git a/modules/menu/menu.module b/modules/menu/menu.module
index 3edf158df..fc8f68a6c 100644
--- a/modules/menu/menu.module
+++ b/modules/menu/menu.module
@@ -540,18 +540,23 @@ function menu_node_delete($node) {
function menu_node_prepare($node) {
if (empty($node->menu)) {
// Prepare the node for the edit form so that $node->menu always exists.
- $menu_name = variable_get('menu_parent_' . $node->type, 'main-menu:0');
+ $menu_name = strtok(variable_get('menu_parent_' . $node->type, 'main-menu:0'), ':');
$item = array();
if (isset($node->nid)) {
+ $mlid = FALSE;
// Give priority to the default menu
- $mlid = db_query_range("SELECT mlid FROM {menu_links} WHERE link_path = :path AND menu_name = :menu_name AND module = 'menu' ORDER BY mlid ASC", 0, 1, array(
- ':path' => 'node/' . $node->nid,
- ':menu_name' => $menu_name,
- ))->fetchField();
- // Check all menus if a link does not exist in the default menu.
- if (!$mlid) {
- $mlid = db_query_range("SELECT mlid FROM {menu_links} WHERE link_path = :path AND module = 'menu' ORDER BY mlid ASC", 0, 1, array(
+ $type_menus = variable_get('menu_options_' . $node->type, array('main-menu' => 'main-menu'));
+ if (in_array($menu_name, $type_menus)) {
+ $mlid = db_query_range("SELECT mlid FROM {menu_links} WHERE link_path = :path AND menu_name = :menu_name AND module = 'menu' ORDER BY mlid ASC", 0, 1, array(
':path' => 'node/' . $node->nid,
+ ':menu_name' => $menu_name,
+ ))->fetchField();
+ }
+ // Check all allowed menus if a link does not exist in the default menu.
+ if (!$mlid && !empty($type_menus)) {
+ $mlid = db_query_range("SELECT mlid FROM {menu_links} WHERE link_path = :path AND module = 'menu' AND menu_name IN (:type_menus) ORDER BY mlid ASC", 0, 1, array(
+ ':path' => 'node/' . $node->nid,
+ ':type_menus' => array_values($type_menus),
))->fetchField();
}
if ($mlid) {