diff --git a/tb_megamenu.functions.inc b/tb_megamenu.functions.inc index a4e960b..448f76b 100644 --- a/tb_megamenu.functions.inc +++ b/tb_megamenu.functions.inc @@ -346,7 +346,7 @@ function tb_megamenu_sync_config($items, &$item_config, $_mlid, $section) { foreach ($item_config['rows_content'] as $i => $row) { foreach ($row as $j => $col) { foreach ($col['col_content'] as $k => $tb_item) { - if ($tb_item['type'] == 'menu_item') { + if (isset($tb_item['type']) && $tb_item['type'] == 'menu_item') { $hash[$tb_item['mlid']] = array('row' => $i, 'col' => $j); $existed = false; foreach ($items as $item) { @@ -367,7 +367,7 @@ function tb_megamenu_sync_config($items, &$item_config, $_mlid, $section) { } } else { - if (!tb_megamenu_block_content_exists($tb_item['block_key'], $section)) { + if (isset($tb_item['block_key']) && !tb_megamenu_block_content_exists($tb_item['block_key'], $section)) { unset($item_config['rows_content'][$i][$j]['col_content'][$k]); if (empty($item_config['rows_content'][$i][$j]['col_content'])) { unset($item_config['rows_content'][$i][$j]); @@ -426,6 +426,9 @@ function tb_megamenu_insert_tb_item(&$item_config, $row, $col, $item) { ); foreach ($col_content as $cell) { + if (is_null($cell)) { + continue; + } $new_col[] = $cell; if (!$added && isset($new_config['weight'])) { $new_col[] = $new_config; diff --git a/tb_megamenu.themes.inc b/tb_megamenu.themes.inc index 929a064..158aec2 100644 --- a/tb_megamenu.themes.inc +++ b/tb_megamenu.themes.inc @@ -82,97 +82,99 @@ function template_preprocess_tb_megamenu_nav(&$vars) { function template_preprocess_tb_megamenu_item(&$vars) { $level = $vars['level']; - $item = $vars['item']; - $mlid = $item['link']['mlid']; - $trail = $vars['trail']; - $link_attributes = array(); - $menu_config = $vars['menu_config']; - $item_config = isset($menu_config[$mlid]['item_config']) ? $menu_config[$mlid]['item_config'] : array(); - tb_megamenu_edit_item_config($item_config); - $vars['item_config'] = $item_config; - if (!empty($menu_config[$mlid]['rows_content']) && - ($vars['section'] == 'backend' || !$item_config['hidesub']) - ) { + if (isset($vars['item'])) { + $item = $vars['item']; + $mlid = $item['link']['mlid']; + $trail = $vars['trail']; + $link_attributes = array(); + $menu_config = $vars['menu_config']; + $item_config = isset($menu_config[$mlid]['item_config']) ? $menu_config[$mlid]['item_config'] : array(); + tb_megamenu_edit_item_config($item_config); + $vars['item_config'] = $item_config; + if (!empty($menu_config[$mlid]['rows_content']) && + ($vars['section'] == 'backend' || !$item_config['hidesub']) + ) { - $vars['submenu'] = theme('tb_megamenu_submenu', array( - 'menu_name' => $vars['menu_name'], - 'parent' => $item, - 'level' => $level, - 'menu_config' => $vars['menu_config'], - 'block_config' => $vars['block_config'], - 'trail' => $vars['trail'], - 'section' => $vars['section'], - )); - } - else { - $vars['submenu'] = NULL; - } + $vars['submenu'] = theme('tb_megamenu_submenu', array( + 'menu_name' => $vars['menu_name'], + 'parent' => $item, + 'level' => $level, + 'menu_config' => $vars['menu_config'], + 'block_config' => $vars['block_config'], + 'trail' => $vars['trail'], + 'section' => $vars['section'], + )); + } + else { + $vars['submenu'] = NULL; + } - $vars['classes_array'][] = 'level-' . $level; - $vars['classes_array'][] = 'mega'; - if (!empty($item_config['class'])) { - $vars['classes_array'][] = $item_config['class']; - } - if (!empty($item_config['alignsub'])) { - $vars['classes_array'][] = "mega-align-" . $item_config['alignsub']; - } - if ($item_config['hidewcol']) { - $vars['classes_array'][] = "sub-hidden-collapse"; - } + $vars['classes_array'][] = 'level-' . $level; + $vars['classes_array'][] = 'mega'; + if (!empty($item_config['class'])) { + $vars['classes_array'][] = $item_config['class']; + } + if (!empty($item_config['alignsub'])) { + $vars['classes_array'][] = "mega-align-" . $item_config['alignsub']; + } + if ($item_config['hidewcol']) { + $vars['classes_array'][] = "sub-hidden-collapse"; + } - if ($item_config['group'] && $vars['submenu']) { - $vars['classes_array'][] = "mega-group"; - $link_attributes['class'][] = 'mega-group-title'; - } - elseif ($vars['submenu'] && !$item_config['hidesub']) { - $link_attributes['class'][] = 'dropdown-toggle'; - if ($level == 1) { - $vars['classes_array'][] = 'dropdown'; + if ($item_config['group'] && $vars['submenu']) { + $vars['classes_array'][] = "mega-group"; + $link_attributes['class'][] = 'mega-group-title'; } - else { - $vars['classes_array'][] = 'dropdown-submenu'; + elseif ($vars['submenu'] && !$item_config['hidesub']) { + $link_attributes['class'][] = 'dropdown-toggle'; + if ($level == 1) { + $vars['classes_array'][] = 'dropdown'; + } + else { + $vars['classes_array'][] = 'dropdown-submenu'; + } } - } - $vars['item']['link']['#attributes'] = $link_attributes; - if (!empty($item['link']['localized_options']['attributes'])) { - if (!(isset($item['link']['localized_options']['attributes']['title']) && - $item['link']['localized_options']['attributes']['title']) - ) { - $item['link']['localized_options']['attributes']['title'] = $item['link']['title']; + $vars['item']['link']['#attributes'] = $link_attributes; + if (!empty($item['link']['localized_options']['attributes'])) { + if (!(isset($item['link']['localized_options']['attributes']['title']) && + $item['link']['localized_options']['attributes']['title']) + ) { + $item['link']['localized_options']['attributes']['title'] = $item['link']['title']; + } + $vars['item']['link']['#attributes'] += $item['link']['localized_options']['attributes']; } - $vars['item']['link']['#attributes'] += $item['link']['localized_options']['attributes']; - } - // Ensure the link options are not NULL and an array. - $vars['item']['link']['options'] = isset($vars['item']['link']['options']) && is_array($vars['item']['link']['options']) ? $vars['item']['link']['options'] : []; + // Ensure the link options are not NULL and an array. + $vars['item']['link']['options'] = isset($vars['item']['link']['options']) && is_array($vars['item']['link']['options']) ? $vars['item']['link']['options'] : []; - if (isset($trail[$mlid])) { - $vars['classes_array'][] = 'active'; - $vars['classes_array'][] = $vars['a_classes'][] = 'active-trail'; - } - // Add list item attributes. - if (!empty($item['link']['localized_options']['item_attributes']['class'])) { - $vars['classes_array'][] = check_plain($item['link']['localized_options']['item_attributes']['class']); - } + if (isset($trail[$mlid])) { + $vars['classes_array'][] = 'active'; + $vars['classes_array'][] = $vars['a_classes'][] = 'active-trail'; + } + // Add list item attributes. + if (!empty($item['link']['localized_options']['item_attributes']['class'])) { + $vars['classes_array'][] = check_plain($item['link']['localized_options']['item_attributes']['class']); + } - $vars['attributes_array']['data-id'] = $mlid; - $vars['attributes_array']['data-level'] = $level; - $vars['attributes_array']['data-type'] = 'menu_item'; - $vars['attributes_array']['data-class'] = $item_config['class']; - $vars['attributes_array']['data-xicon'] = $item_config['xicon']; - $vars['attributes_array']['data-caption'] = $item_config['caption']; - $vars['attributes_array']['data-alignsub'] = $item_config['alignsub']; - $vars['attributes_array']['data-group'] = $item_config['group']; - $vars['attributes_array']['data-hidewcol'] = $item_config['hidewcol']; - $vars['attributes_array']['data-hidesub'] = $item_config['hidesub']; - if ($vars['section'] == 'backend') { - $vars['attributes_array']['title'] = t("Menu Item"); - } + $vars['attributes_array']['data-id'] = $mlid; + $vars['attributes_array']['data-level'] = $level; + $vars['attributes_array']['data-type'] = 'menu_item'; + $vars['attributes_array']['data-class'] = $item_config['class']; + $vars['attributes_array']['data-xicon'] = $item_config['xicon']; + $vars['attributes_array']['data-caption'] = $item_config['caption']; + $vars['attributes_array']['data-alignsub'] = $item_config['alignsub']; + $vars['attributes_array']['data-group'] = $item_config['group']; + $vars['attributes_array']['data-hidewcol'] = $item_config['hidewcol']; + $vars['attributes_array']['data-hidesub'] = $item_config['hidesub']; + if ($vars['section'] == 'backend') { + $vars['attributes_array']['title'] = t("Menu Item"); + } - if (!empty($item['link']['localized_options']['item_attributes'])) { - // Add additional list item attributes besides the class (which was handled separately above). - $vars['attributes_array'] += array_diff_key( $item['link']['localized_options']['item_attributes'], array('class' => NULL)); + if (!empty($item['link']['localized_options']['item_attributes'])) { + // Add additional list item attributes besides the class (which was handled separately above). + $vars['attributes_array'] += array_diff_key( $item['link']['localized_options']['item_attributes'], array('class' => NULL)); + } } } @@ -289,10 +291,13 @@ function template_preprocess_tb_megamenu_column(&$vars) { function template_preprocess_tb_megamenu_subnav(&$vars) { $col = $vars['col']; -// $items = $vars['items']; + // $items = $vars['items']; $level = $vars['level']; $lis = array(); foreach ($col as $tb_item) { + if (is_null($tb_item)) { + continue; + } $item = tb_megamenu_get_menu_item($vars['menu_name'], $tb_item['mlid']); $lis[] = theme('tb_megamenu_item', array( 'menu_name' => $vars['menu_name'],