/** * 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); }
/** * 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; }
/** * 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); }