"", 'inherit' => $instanceName, 'location' => "main-menu" ), $atts ); self::$id = $atts['id']; self::$location = (!empty($atts['location'])) ?$atts['location'] : self::$id; self::$unique = 'drop_' . self::$id ; self::$url = esc_url(get_permalink()); $locations = get_nav_menu_locations(); $menu = FALSE; if (isset($locations[self::$location])) { $menu = wp_get_nav_menu_object($locations[self::$location]); } if (!$menu) { $menu = wp_get_nav_menu_object(self::$id); } if (!$menu) { $menu = wp_get_nav_menu_object('main-menu'); } if ($menu) { $id = $menu->term_id; } if(empty($id)) { $id = self::$id; } $styles = ''; $simpleItems = array(); $items = wp_get_nav_menu_items( $id, array( 'order' => 'ASC','orderby' => 'menu_item_parent', ) ); $menuTree = ""; if(!$items){ $items = get_pages(array('hierarchical' => 0, 'parent' => 0)); $result = array(); foreach ($items as $key => $item) { $result[] = array( "id" => $item->ID, "ID" => $item->ID, "title" => $item->post_title, "order" => $item->menu_order, "url" => esc_url(get_permalink($item)), "parent" => 0, "pageID"=> 0, "target"=> '' ); } $items = $result; $blog_page = get_option( 'page_for_posts' ); if($blog_page){ $lastIndex = count($items) -1; for ($i=0; $i < count($items) ; $i++) { $item = $items[$i]; if($item['ID'] == $blog_page){ $last =$items[$lastIndex]; $items[$lastIndex] = $items[$i]; $items[$i] = $last; break; } } } $menu = '
' .''; $menuItems = ""; foreach ($items as $item) { if($item['parent']==0){ $menuItems .= self::makeMenuItem($items,$item); } } $menu = str_replace("{{menu_items}}", $menuItems, $menu); } else { $items = self::simplifyMenu($items); $menu = '
' .''; $menuItems = ""; foreach ($items as $item) { if($item['parent']==0){ $menuItems .= self::makeMenuItem($items,$item); } } $menu = str_replace("{{menu_items}}", $menuItems, $menu); } $mobileLabel = "Menu"; if(isset(self::$instances[self::$unique]["options"]["mobileLabel"])) { $mobileLabel = self::$instances[self::$unique]["options"]["mobileLabel"]; } $menu .= $styles . '
'; $toReturn = "
". $menu . ''; $toReturn .= "" . ""; $toReturn .= "
"; return $toReturn; } static function xtd_get_menu_tree($menu) { $ret = array(); $menu_items = wp_get_nav_menu_items($menu->term_id); foreach ($menu_items as $item) { if ($item->ID == $item->object_id) { $ret[$item->ID] = array( 'link' => $item->url, 'page' => $item->ID, 'order' => $item->menu_order, 'title' => $item->title, 'parent' => $item->menu_item_parent, 'url' => $item->url ); } else { $item_id = get_post_meta($item->ID, '_menu_item_object_id', true); $page = get_page($item_id); $link = get_page_link($item_id); $ret[$item->ID] = array( 'link' => $link, 'page' => $item_id, 'order' => $item->menu_order, 'title' => $page->post_title, 'parent' => $item->menu_item_parent, 'url' => $item->url ); if ($item->title) { $ret[$item->ID]['title'] = $item->title; } } } foreach ($ret as $key => $item) { $parentID = $item['parent']; if ($parentID!=0) { $found = false; foreach ($ret as $key2 => $item2) { if ($ret[$key2]['page']==$parentID) $found=true; } if (!$found) { unset($ret[$key]); } } } return $ret; } static function individualizeCssFile($source='', $ID='', $relative=false, $skin='default') { } static function makeMenuItem($items,$item){ $item_url = self::parseURL($item['url']); $itemDetails = ""; if(function_exists("xtd_in_editor") && xtd_in_editor()){ $itemDetails = 'data-item-details="'. htmlentities(json_encode($item)) .'"'; } $result = '
  • <{{tag}} class="{{has_submenu}}">'.$item['title'].'{{submenus}}
  • '; if(self::$url === false){ self::$url = $item['url']; } $submenus = array(); foreach ($items as $submenu) { if($submenu['parent'] == $item['id']){ $submenus[] = $submenu; } } if(count($submenus)){ $submenuItems = ""; $result = str_replace('{{submenus}}', $submenuItems, $result); $result = str_replace('{{class_type}}', '', $result); $result = str_replace('{{has_submenu}}', 'branch', $result); $result = str_replace('{{tag}}', 'span', $result); $target= get_post_meta($item['id'],'_menu_item_target',true); $result = str_replace('{{target}}', $target, $result); } else { if($item['url'] == self::$url){ $result = str_replace('{{class_type}}', 'class="sel"', $result); } else { $result = str_replace('{{class_type}}', '', $result); } $result = str_replace('{{has_submenu}}', 'leaf', $result); $result = str_replace('{{submenus}}', '', $result); $result = str_replace('{{tag}}', 'font', $result); $target= get_post_meta($item['id'],'_menu_item_target',true); $result = str_replace('{{target}}', $target, $result); } return $result; } static function parseURL($url){ if(strpos($url, "tag_link_site_url") !== false){ $url = str_replace("[tag_link_site_url]", "tag_link_site_url", $url); $exploded = explode("tag_link_site_url", $url); $root = business_builder_tag_link_site_url(); return $root . $exploded[1]; } return $url; } static function simplifyMenu($items){ $result = array(); if($items) foreach ($items as $item) { $result[] = array( "id" => $item->ID, "ID" => $item->ID, "title" => $item->title, "order" => $item->menu_order, "url" => $item->url, "parent" => $item->menu_item_parent, "pageID"=> get_post_meta($item->ID, '_menu_item_object_id', true), "target"=> get_post_meta($item->ID, '_menu_item_target', true), ); } return $result; } static function set_defaults(){ self:: $instances = array(); self:: $defaultInstanceSettings = array( 'effectSub'=>array( "name"=>"slide", "direction"=>"up", "duration"=>250, "easing"=>"swing", "useFade"=>false, ), 'effectRest'=>array( "name"=>"slide", "direction"=>"left", "duration"=>250, "easing"=>"swing", "useFade"=>false, ), 'effectSubTwo'=>array( "name"=>"none", "direction"=>"left", "duration"=>250, "easing"=>"swing", "useFade"=>false, ), 'options'=>array( "preset"=>"fixed", "enableTablet"=>true, "enableMobile"=>true, "mobileMaxWidth"=>640, "tabletMaxWidth"=>1023, "tabletCloseBtnLabel"=>"Close", "tabletCloseBtnEnable"=>true, ), 'skin' => 'default' ); } static function display_assets() { self::get_instances_as_array(self::$instanceKey); if( count(self::$instances) ) { ?>