/**
  * Append the widget objects to the menu array before the
  * menu is processed by the walker.
  *
  * @since 1.0
  * @param array $items - All menu item objects
  * @param object $args
  * @return array - Menu objects including widgets
  */
 public function add_widgets_to_menu($items, $args)
 {
     // make sure we're working with a Mega Menu
     if (!is_a($args->walker, 'Mega_Menu_Walker')) {
         return $items;
     }
     $items = apply_filters("megamenu_nav_menu_objects_before", $items, $args);
     $widget_manager = new Mega_Menu_Widget_Manager();
     foreach ($items as $item) {
         // only look for widgets on top level items
         if ($item->depth === 0 && $item->megamenu_settings['type'] == 'megamenu') {
             $panel_widgets = $widget_manager->get_widgets_for_menu_id($item->ID, $args->menu);
             if (count($panel_widgets)) {
                 $widget_position = 0;
                 $total_widgets_in_menu = count($panel_widgets);
                 $next_order = $this->menu_order_of_next_top_level_item($item->ID, $items);
                 if (!in_array('menu-item-has-children', $item->classes)) {
                     $item->classes[] = 'menu-item-has-children';
                 }
                 foreach ($panel_widgets as $widget) {
                     $widget_settings = array_merge(Mega_Menu_Nav_Menus::get_menu_item_defaults(), array('mega_menu_columns' => absint($widget['columns'])));
                     $menu_item = array('type' => 'widget', 'in_megamenu' => true, 'title' => $widget['id'], 'content' => $widget_manager->show_widget($widget['id']), 'menu_item_parent' => $item->ID, 'db_id' => 0, 'ID' => $widget['id'], 'menu_order' => $next_order - $total_widgets_in_menu + $widget_position, 'megamenu_order' => $widget['order'], 'megamenu_settings' => $widget_settings, 'depth' => 1, 'classes' => array("menu-item", "menu-item-type-widget", "menu-widget-class-" . $widget_manager->get_widget_class($widget['id'])));
                     $items[] = (object) $menu_item;
                     $widget_position++;
                 }
             }
         }
     }
     $items = apply_filters("megamenu_nav_menu_objects_after", $items, $args);
     return $items;
 }
Exemple #2
0
 /**
  * Append the widget objects to the menu array before the
  * menu is processed by the walker.
  *
  * @since 1.0
  * @param array $items - All menu item objects
  * @param object $args
  * @return array - Menu objects including widgets
  */
 public function add_widgets_to_menu($items, $args)
 {
     // make sure we're working with a Mega Menu
     if (!is_a($args->walker, 'Mega_Menu_Walker')) {
         return $items;
     }
     $items = apply_filters("megamenu_nav_menu_objects_before", $items, $args);
     $widget_manager = new Mega_Menu_Widget_Manager();
     $default_columns = apply_filters("megamenu_default_columns", 1);
     foreach ($items as $item) {
         // only look for widgets on top level items
         if ($item->depth == 0 && $item->megamenu_settings['type'] == 'megamenu') {
             $panel_widgets = $widget_manager->get_widgets_for_menu_id($item->ID);
             if (count($panel_widgets)) {
                 if (!in_array('menu-item-has-children', $item->classes)) {
                     $item->classes[] = 'menu-item-has-children';
                 }
                 $cols = 0;
                 foreach ($panel_widgets as $widget) {
                     $menu_item = array('type' => 'widget', 'title' => '', 'content' => $widget_manager->show_widget($widget['widget_id']), 'menu_item_parent' => $item->ID, 'db_id' => 0, 'ID' => $widget['widget_id'], 'menu_order' => $item->menu_order + 1, 'classes' => array("menu-item", "menu-item-type-widget", "menu-columns-{$widget['mega_columns']}-of-{$item->megamenu_settings['panel_columns']}", "menu-widget-class-" . $widget_manager->get_widget_class($widget['widget_id'])));
                     if ($cols == 0) {
                         $menu_item['classes'][] = "menu-clear";
                     }
                     $cols = $cols + $widget['mega_columns'];
                     if ($cols > $item->megamenu_settings['panel_columns']) {
                         $menu_item['classes'][] = "menu-clear";
                         $cols = $widget['mega_columns'];
                     }
                     $items[] = (object) $menu_item;
                 }
             }
         }
     }
     $items = apply_filters("megamenu_nav_menu_objects_after", $items, $args);
     return $items;
 }
Exemple #3
0
 /**
  * Append the widget objects to the menu array before the 
  * menu is processed by the walker.
  *
  * @since 1.0
  * @param array $items - All menu item objects
  * @param object $args
  * @return array - Menu objects including widgets
  */
 public function add_widgets_to_menu($items, $args)
 {
     // make sure we're working with a Mega Menu
     if (!is_a($args->walker, 'Mega_Menu_Walker')) {
         return $items;
     }
     $widget_manager = new Mega_Menu_Widget_Manager();
     $default_columns = apply_filters("megamenu_default_columns", 1);
     foreach ($items as $item) {
         // only look for widgets on top level items
         if ($item->menu_item_parent == 0) {
             $settings = get_post_meta($item->ID, '_megamenu', true);
             $align_class = isset($settings['align']) ? 'align-' . $settings['align'] : 'align-bottom-left';
             $type_class = isset($settings['type']) ? 'menu-' . $settings['type'] : 'menu-flyout';
             $item->classes[] = $align_class;
             $item->classes[] = $type_class;
             if ($type_class == 'menu-megamenu') {
                 $panel_widgets = $widget_manager->get_widgets_for_menu_id($item->ID);
                 if (count($panel_widgets)) {
                     if (!in_array('menu-item-has-children', $item->classes)) {
                         $item->classes[] = 'menu-item-has-children';
                     }
                     $cols = 0;
                     foreach ($panel_widgets as $widget) {
                         $menu_item = array('type' => 'widget', 'title' => '', 'content' => $widget_manager->show_widget($widget['widget_id']), 'menu_item_parent' => $item->ID, 'db_id' => 0, 'ID' => $widget['widget_id'], 'classes' => array("menu-item", "menu-item-type-widget", "menu-columns-{$widget['mega_columns']}"));
                         if ($cols == 0) {
                             $menu_item['classes'][] = "menu-clear";
                         }
                         $cols = $cols + $widget['mega_columns'];
                         if ($cols > 6) {
                             $menu_item['classes'][] = "menu-clear";
                             $cols = $widget['mega_columns'];
                         }
                         $items[] = (object) $menu_item;
                     }
                 }
             }
         } else {
             $item->classes[] = "menu-columns-{$default_columns}";
         }
     }
     return $items;
 }