"",
'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 = "";
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'].'{{tag}}>{{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 = "
";
foreach ($submenus as $submenu) {
$submenuItems .=self::makeMenuItem($items,$submenu);
}
$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) ) {
?>