/**
  * Simple Input text
  * @param type $element
  * @return string
  */
 static function render($element)
 {
     $element = parent::get_extra_info($element);
     $label = parent::get_label($element);
     $element['std'] = explode('__#__', $element['std']);
     $menu_helper = new WR_Megamenu_Helpers_Menu();
     $menu_items = $menu_helper->get_menu_items((int) $element['menu_type'], (int) $element['menu_id'], 99);
     $output = '';
     if (count($menu_items)) {
         $output .= "<ul class='wrap_submenu' id='{$element['id']}'>\n";
         $output .= self::walk_list_submenu_tree($menu_items, 0, array('element_id' => $element['id']), (array) $element['std']);
         $output .= "</ul>\n";
     } else {
         $output .= '<div class="alert alert-warning">' . __('This menu don\'t have any sub menus', WR_MEGAMENU_TEXTDOMAIN) . '</div>';
     }
     $output .= "<script type='text/javascript'>( function (\$) {\n\t\t\t\$( document ).ready( function ()\n\t\t\t{\n\n\t\t\t   load_el_submenu();\n\n\t\t\t\t\$( '.wrap_submenu > li' ).on( 'click', function() {\n\t\t\t\t\tvar _this = \$(this),\n\t\t\t\t\tinput_checkbox = _this.find( 'input[type=\"checkbox\"]' ).first();\n\t\t\t\t\t_this.toggleClass( 'active' );\n\n\t\t\t\t\tif (_this.hasClass( 'active' ) ) {\n\t\t\t\t\t\tinput_checkbox.attr( 'checked', true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tinput_checkbox.attr( 'checked', false);\n\t\t\t\t\t}\n\n\t\t\t\t\tload_el_submenu();\n\n\t\t\t\t\tinput_checkbox.trigger( 'change' );\n\t\t\t\t});\n\n\t\t\t\tfunction load_el_submenu() {\n\n\t\t\t\t\tvar sub_menus = [];\n\t\t\t\t\tvar select_submenus = null;\n\n\t\t\t\t   \$( 'input[name^=\"param-select_submenu_type\"]' ).each (function() {\n\t\t\t\t\t\tif(\$(this).is( ':checked' ) ) {\n\t\t\t\t\t\t\tselect_submenus = \$(this).val();\n\t\t\t\t\t\t}\n\t\t\t\t   });\n\n\n\t\t\t\t\t\$( '.wrap_submenu > li' ).each(function() {\n\t\t\t\t\t\t var _this = \$(this),\n\t\t\t\t\t\t is_checked = false,\n\t\t\t\t\t\t input_checkbox = _this.find( 'input[type=\"checkbox\"]' ).first(),\n\t\t\t\t\t\t text = input_checkbox.next( 'label' ).first().text(),\n\t\t\t\t\t\t key =  ' ' + \$.trim(text.split( ' ' ).join( '_' ).toLowerCase() );\n\n\t\t\t\t\t\t if ( (select_submenus == 'custom' ) ) {\n\t\t\t\t\t\t\tif (input_checkbox.is( ':checked' ) ) {\n\t\t\t\t\t\t\t\tis_checked = true;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tis_checked = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t } else if (select_submenus == 'all' ) {\n\t\t\t\t\t\t\tis_checked = true;\n\t\t\t\t\t\t }\n\t\t\t\t\t\t if (is_checked)  {\n\t\t\t\t\t\t\tsub_menus[key] = text;\n\t\t\t\t\t\t }\n\t\t\t\t   });\n\n\t\t\t\t\tsub_el_title(sub_menus);\n\t\t\t\t}\n\n\t\t\t\tfunction sub_el_title (sub_menus) {\n\n\t\t\t\t\tvar el_title = '';\n\t\t\t\t\tfor (var i in sub_menus) {\n\t\t\t\t\t\t el_title += ', ' + sub_menus[i];\n\t\t\t\t\t}\n\t\t\t\t\tel_title = \$.trim(el_title, ',' );\n\t\t\t\t\tel_title = el_title.substring(1, el_title.length);\n\n\t\t\t\t\t\$( '#param-el_title' ).val(el_title);\n\t\t\t\t}\n\n\t\t\t});\n\t\t\t} )( jQuery )</script>";
     return parent::final_element($element, $output, $label);
 }
 /**
  * Simple Input text
  * @param type $element
  * @return string
  */
 static function render($element)
 {
     $element = parent::get_extra_info($element);
     $label = parent::get_label($element);
     $selected_value = $element['std'];
     $menu_helper = new WR_Megamenu_Helpers_Menu();
     $menu_items = $menu_helper->get_menu_items((int) $element['menu_type'], (int) $element['menu_id'], 99);
     $output = '';
     if (count($menu_items)) {
         $multiple = isset($element['multiple']) ? 'multiple="multiple"' : '';
         // Add default select2 for all select html type
         $element['class'] .= ' select2-select';
         $element['class'] = str_replace('form-control', '', $element['class']);
         $output .= "<select class='{$element['class']}' id='{$element['id']}' name='{$element['id']}' {$multiple}>\n";
         $output .= self::walk_dropdown_submenu_tree($menu_items, 0, array(), $selected_value);
         $output .= "</select>\n";
     } else {
         $output .= '<div class="alert alert-warning">' . __('This menu don\'t have any sub menus', WR_MEGAMENU_TEXTDOMAIN) . '</div>';
     }
     return parent::final_element($element, $output, $label);
 }
Beispiel #3
0
    /**
     * Get submenu items
     */
    public function get_menu_items()
    {
        $html = array();
        $location = $_POST['location'];
        $profile_id = $_POST['profile_id'];
        $depth = isset($_POST['depth']) ? (int) $_POST['depth'] : '1';
        $parent_id = isset($_POST['menu_id']) ? $_POST['menu_id'] : '';
        $locations = get_nav_menu_locations();
        $menu_type = 0;
        if (isset($locations[$location])) {
            $menu_type = $locations[$location];
        }
        $menu = wp_get_nav_menu_object($menu_type);
        if ($menu_type && $menu) {
            $helper = new WR_Megamenu_Helpers_Menu();
            $items = $helper->get_menu_items($menu_type, $parent_id, $depth);
            $html[] = '<input type="hidden" value="false" id="is-mega">';
            if (count($items)) {
                $html[] = '<ul id="top-level-menu" class="nav navbar-nav">';
                foreach ($items as $item) {
                    $data = WR_Megamenu_Helpers_Builder::get_megamenu_data($profile_id, $item->ID);
                    $container_width = '600';
                    $full_width_value = '';
                    $is_mega = 'false';
                    if (count($data)) {
                        $setting_menu = @$data['setting_menu'];
                        $is_mega = @$data['is_mega'];
                        $container_width = isset($setting_menu['container_width']) && $setting_menu['container_width'] != '' ? $setting_menu['container_width'] : '600';
                        $full_width_value = isset($setting_menu['full_width_value']) && $setting_menu['full_width_value'] != '' ? $setting_menu['full_width_value'] : '0';
                    }
                    $check = $full_width_value == '1' ? 'active' : '';
                    $full_width = $check == 'active' ? $check : '';
                    $fixed_width = $check == '' ? 'active' : '';
                    if ($is_mega == 'true') {
                        $switch = '<button class="btn btn-xs on active btn-success">' . __('ON', WR_MEGAMENU_TEXTDOMAIN) . '</button><button class="btn btn-xs off btn-default">' . __('OFF', WR_MEGAMENU_TEXTDOMAIN) . '</button>';
                    } else {
                        $switch = '<button class="btn btn-xs on btn-default">' . __('ON', WR_MEGAMENU_TEXTDOMAIN) . '</button><button class="btn btn-xs off active btn-danger">' . __('OFF', WR_MEGAMENU_TEXTDOMAIN) . '</button>';
                    }
                    $html[] = '<li class="top-level-item">
								<div class="btn-group">
									<button class="btn btn-default btn-menu-title" id="menu-item-' . $item->ID . '">' . $item->title . '</button>
									<button class="btn btn-menu-setting-popover hidden dropup" data-menu="' . $item->ID . '">
										<span class="glyphicon glyphicon-cog"></span>
									</button>
									<div class="popover bottom setting-menu-item" id="setting-menu-item-' . $item->ID . '">
										<div class="arrow"></div>
										<h3 class="popover-title">
											' . __('Configuration', WR_MEGAMENU_TEXTDOMAIN) . '
											  <div class="btn-group btn-toggle pull-right">
												 ' . $switch . '
											  </div>
										</h3>
										<div class="popover-content">
											<div class="form-horizontal setting-content">
												<input type="hidden" value="' . $is_mega . '" id="is-mega-' . $item->ID . '">
												<div class="form-group">
													<label class="col-sm-4 control-label">' . __('Container Width', WR_MEGAMENU_TEXTDOMAIN) . '</label>
													<div class="col-sm-4 container-width">
														<div id="container_group" class="btn-group">
														  <button type="button" id="full_width" class="btn btn-default ' . $full_width . '">' . __('Full', WR_MEGAMENU_TEXTDOMAIN) . '</button>
														  <button type="button" id="fixed_width" class="btn btn-default ' . $fixed_width . '">' . __('Fixed', WR_MEGAMENU_TEXTDOMAIN) . '</button>
														</div>
													</div>
													<div class="col-sm-4 fixed-with">
														<div class="input-group">
														  <input type="number" min="100" id="container_width" name="container_width" class="form-control"  value="' . $container_width . '" />
														  <span class="input-group-addon">' . __('px') . '</span>
														  <input type="hidden" id="full_width_value" name="full_width_value" value="' . $full_width_value . '" />
														</div>

													</div>
												  </div>

											</div>
										</div>
									</div>
								</div>
						  </li>';
                }
                $html[] = '</ul>';
                $html[] = '<div class="clearbreak"></div>';
            } else {
                $html[] = '<p class="jsn-bglabel">' . __('This menu does not have any sub menu item.') . ' <a href="' . admin_url('nav-menus.php?action=edit&menu=' . $menu->term_id) . '" target="_blank">' . __('Add new') . '</a>' . '</p>';
            }
            echo json_encode(array('menu_type' => $menu->term_id, 'html' => implode("\n", $html)));
        } else {
            $html[] = '<p id="wr-assign-menu" class="jsn-bglabel">' . __('No menu assigned to this location.') . '<br/><a href="' . admin_url('nav-menus.php?action=locations') . '" target="_blank" class="btn btn-default">' . __('Manage Locations') . '</a>' . '</p>';
            echo json_encode(array('menu_type' => '', 'html' => implode("\n", $html)));
        }
        exit;
    }
Beispiel #4
0
 /**
  * Generate HTML code from shortcode content.
  *
  * @param   array   $atts	 Shortcode attributes.
  * @param   string  $content  Current content.
  *
  * @return  string
  */
 function element_shortcode_full($atts = null, $content = null)
 {
     $params = shortcode_atts($this->config['params'], $atts);
     extract($params);
     $menu_helper = new WR_Megamenu_Helpers_Menu();
     $menu_items = array();
     if ($select_submenu_type == 'all') {
         $menu_items = $menu_helper->get_menu_items($menu_type, $menu_id, 99);
     } elseif ($select_submenu_type == 'custom') {
         $selected_menus = explode('__#__', $list_sub_menu);
         if (count($selected_menus) && $selected_menus[0] != '') {
             $menu_items = $selected_menus;
         } else {
             $menu_items = array();
         }
     }
     // Retrieve all menu items.
     $html = array();
     $count = count($menu_items);
     $caption_class = '';
     if (is_admin()) {
         $caption_class = 'label label-default';
     }
     if ($count) {
         foreach ($menu_items as $item) {
             if (is_object($item)) {
                 if ($item->sub_level == '1') {
                     $menu_item_id = $item->ID;
                 } else {
                     continue;
                 }
             } else {
                 $menu_item_id = (int) $item;
             }
             // Check menu has icon
             $icon = get_post_meta($menu_item_id, '_icon_mega_', true);
             if ($icon) {
                 $icon_html = '<i class="' . $icon . '"></i>';
             } else {
                 $icon_html = '';
             }
             $menu_item = get_post($menu_item_id);
             // setup information for menu
             $menu_item = wp_setup_nav_menu_item($menu_item);
             $class = is_admin() ? 'submenu-items sub-menu' : 'submenu-items';
             $parent_class = apply_filters('wr_menu_item_caption', $menu_item->class, $menu_item);
             $menu_title = '';
             if (isset($menu_item->title)) {
                 $menu_title = '<span class="ig-menu-title">' . $menu_item->title . '</span>';
             }
             $html[] = '<div class="block-sub-menu">';
             $html[] = '<a class="' . $parent_class . ' caption" href="' . $menu_item->url . '" title="' . $menu_item->title . '"><span class="' . $caption_class . '">' . $icon_html . $menu_title . '</span></a>';
             $html[] = '<div class="clearfix"></div>';
             $html[] = '<span class="divider"></span>';
             $args = array();
             $defaults = array('menu' => '', 'container' => 'div', 'container_class' => '', 'container_id' => '', 'menu_class' => 'menu', 'menu_id' => '', 'echo' => true, 'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>', 'depth' => 0, 'walker' => '', 'theme_location' => '');
             $items = $menu_helper->get_menu_items($menu_type, $menu_item_id, 99);
             $args = wp_parse_args($args, $defaults);
             $args['count_items'] = count($items);
             $args['class_submenu'] = $class;
             $args['column_breaking'] = $column_breaking;
             $args['no_of_column'] = $no_of_column;
             $args['items_per_column'] = $items_per_column;
             $submenu_items_elment = $this->wr_walk_submenu_child($items, 0, (object) $args);
             if ($submenu_items_elment) {
                 $html[] = '<ul class="' . $class . ' ">';
                 $html[] = $submenu_items_elment;
                 $html[] = '</ul>';
             }
             $html[] = '</div>';
         }
     } else {
         $html[] = '<p class="jsn-bglabel">' . __('This menu does not have any sub menu item.', WR_MEGAMENU_TEXTDOMAIN) . ' <a class="preview-submenu" href="' . admin_url('nav-menus.php?action=edit&menu=' . $menu_type) . '" target="_blank">' . __('Add new', WR_MEGAMENU_TEXTDOMAIN) . '</a>' . '</p>';
     }
     if (!is_admin()) {
         $html[] = "<script type='text/javascript'>( function (\$) {\n\t\t\t\t\$( document ).ready( function ()\n\t\t\t\t{\n\t\t\t\t\t \$('.block-sub-menu').each(function() {\n\n\t\t\t\t\t\tvar _this = \$(this);\n\t\t\t\t\t\tvar submenu_items = _this.find('> .submenu-items');\n\t\t\t\t\t\tvar count = submenu_items.length;\n\n\t\t\t\t\t\tif (count > 0) {\n\t\t\t\t\t\t\tvar width = 100/count + '%';\n\t\t\t\t\t\t\tsubmenu_items.css('width', width);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t })\n\t\t\t\t});\n\t\t\t} )( jQuery )</script>";
     }
     return $this->element_wrapper(implode("\n", $html), $params);
 }