HEX
Server: LiteSpeed
System: Linux server315.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: globfdxw (6114)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: /home/globfdxw/www/wp-content/plugins/ubermenu/pro/menuitems/UberMenuItemTabs.class.php
<?php

class UberMenuItemTabs extends UberMenuItem
{

	protected $type = 'tabs';
	protected $auto_child = 'tab';
	protected $alter_structure = true;
	protected $manual_content = '';


	function init()
	{
		/*
										if( $this->depth < 1 ){
											$this->walker->set_ignore( $this->ID );
											return;
										}
								*/
		// uberp_details('Tabs ID: ' . $this->ID . ' Source ID: ' . $this->source_id, $this->settings);

		$this->submenu_type = 'tabs-group';
		$this->submenu_classes[] = 'ubermenu-tabs-group';

		$tabs_trigger = $this->getSetting('tabs_trigger');
		$this->submenu_classes[] = "ubermenu-tabs-group--trigger-$tabs_trigger";
		if ($tabs_trigger === 'auto') {
			$tabs_trigger = $this->get_menu_op('trigger');
			$this->submenu_classes[] = "ubermenu-tabs-group--trigger-$tabs_trigger";
		}

		$tabs_group_layout = $this->getSetting('tabs_group_layout');
		if ($tabs_group_layout == 'auto') {
			$tab_layout = $this->getSetting('tab_layout');
			switch ($tab_layout) {
				case 'top':
				case 'bottom':
					$tabs_group_layout = 'full';
					break;
				case 'right':
				case 'left':
					$tabs_group_layout = '1-4';
					break;
			}
		}
		//$panels_group_layout = $this->getSetting( 'panels_group_layout' );

		$this->submenu_classes[] = 'ubermenu-column';
		$this->submenu_classes[] = 'ubermenu-column-' . $tabs_group_layout;


	}

	function alter(&$children)
	{

		//Reset the children each time
		$reference_index = $this->create_reference($this->source_id, $children);


		//No children?  Uh oh
		if (!isset($children[$reference_index])) {
			$notice = __('To create tabs, add child items to the Tab Item.', 'ubermenu');
			$this->manual_content = ubermenu_admin_notice($notice, false);
			;
			return;
		}

		$children[$this->source_id] = $children[$reference_index];

	}

	function add_class_layout_columns()
	{

		if ($this->depth > 0) {
			$parent_submenu_type = $this->walker->parent_item()->getSetting('submenu_type_calc');
			if ($parent_submenu_type == 'flyout')
				return;	//no columns in flyouts
		}

		//if( $this->depth > 1 ){

		//Special columns setting ID for tabs
		$cols = $this->getSetting('tab_block_columns');
		if ($this->depth > 0 && $cols == 'auto') {
			$cols = $this->walker->parent_item()->getSetting('submenu_column_default');
		}

		//Change specific for Tabs, so that by default we're full width
		if ($cols == 'auto')
			$cols = 'full';

		$this->item_classes[] = 'ubermenu-column ubermenu-column-' . $cols;
	}

	function user_classes()
	{
		// uberp( $this->item->classes );
		if ($this->item->classes[0] === '')
			return;

		$user_classes = [];
		foreach ($this->item->classes as $class) {
			if ($class === 'menu-item')
				break;
			$user_classes[] = $class;
		}
		// uberp( $user_classes );
		$this->item_classes = array_merge($this->item_classes, $user_classes);
	}

	//Full width of Tabs
	function get_start_el()
	{
		//$this->setupAutoChild();
		$this->settings['submenu_type_calc'] = 'toggles-group';


		//Variable Initialization
		$item_output = '';
		$class_names = '';

		//Tabs class
		$this->item_classes[] = 'menu-item';
		$this->item_classes[] = 'tabs';


		//Setup Classes
		//$this->add_class_item_defaults();
		$this->add_class_id();
		$this->prefix_classes();
		$this->user_classes();
		//$this->add_class_item_display();
		$this->add_class_level();
		$this->add_class_layout_columns();
		$this->add_class_responsive();
		//$this->add_class_submenu();	//Tabs won't have submenus, add manually

		//$this->item_classes[] = 'ubermenu-has-submenu-drop';
//echo '>> ' . $this->item->title . ' : ' . implode(',' , $this->item_classes ) .'<br/>';



		//Tabs Layout
		$tab_layout = $this->getSetting('tab_layout');
		$tab_layout_class = 'ubermenu-tab-layout-' . $tab_layout;

		$tabs_group_layout = $this->getSetting('tabs_group_layout');
		$panels_group_layout = $this->getSetting('panels_group_layout');

		if ($tab_layout == 'right' || $tab_layout == 'left') {
			if ($tabs_group_layout == 'auto')
				$tabs_group_layout = '1-4';
			if ($panels_group_layout == 'auto')
				$panels_group_layout = '3-4';	//TODO
		} else {
			if ($tabs_group_layout == 'auto')
				$tabs_group_layout = 'full';
			if ($panels_group_layout == 'auto')
				$panels_group_layout = 'full';
		}

		$this->item_classes[] = $tab_layout_class;



		//Show Default
		if ($this->getSetting('show_default_panel') == 'on') {
			$this->item_classes[] = 'ubermenu-tabs-show-default';
		}

		//Show Current
		if ($this->getSetting('show_current_panel') == 'on') {
			$this->item_classes[] = 'ubermenu-tabs-show-current';
		}


		//Dynamic Sizing & Animation
		if ($this->getSetting('dynamic_panel_sizing') == 'on') {
			$this->item_classes[] = 'ubermenu-tabs-dynamic-sizing';
			if ($this->getSetting('dynamic_panel_animation') == 'on') {
				$this->item_classes[] = 'ubermenu-tabs-dynamic-sizing-animate';
			}
		}

		$class_names = $this->filter_item_classes();

		//Setup ID
		$id = $this->filter_item_id();

		//Data target
		//$data_target = ' data-ubermenu-toggle-target="#ubermenu-panel-'.$this->ID.'"';


		//Comment
		$item_output .= "<!-- begin Tabs: " . $this->item->title . " $this->ID -->";

		//Item LI
		$item_output .= '<li' . $id . $class_names . '>';

		//Manual Content (for admin notices)
		$item_output .= $this->manual_content;

		//Anchor
		//$atts = $this->anchor_atts(); //Attributes
		//$atts['data-ubermenu-toggle-target'] = '#ubermenu-panel-'.$this->ID;
		//$item_output .= $this->get_anchor( $atts );

		//Custom Content
		$item_output .= $this->get_custom_content();

		return $item_output;


		//$html.= '<li class="ubermenu-tabs">';
		//$html.= parent::get_start_el();
		//return $html;
	}
	function get_end_el()
	{
		//$this->resetAutoChild();
		$html = '</li>';
		$html .= "<!-- end Tabs: " . $this->item->title . " $this->ID -->";
		return $html;
	}

	/* No submenus for the Tabs Item */
	/*function get_submenu_wrap_start(){
					   return '';
				   }
				   function get_submenu_wrap_end(){
					   return '';
				   }*/


	function setup_tab($umitem)
	{

		$panels_group_layout = $this->getSetting('panels_group_layout');

		if ($panels_group_layout == 'auto') {
			$tab_layout = $this->getSetting('tab_layout');

			switch ($tab_layout) {

				case 'top':
				case 'bottom':
					$panels_group_layout = 'full';
					break;

				case 'left':
				case 'right':

					$tabs_group_layout = $this->getSetting('tabs_group_layout');
					if ($tabs_group_layout == 'auto') {
						$panels_group_layout = '3-4';
					} else {
						$panels_group_layout = ubermenu_get_column_complement($tabs_group_layout);
					}
					break;

			}

		}

		//Force submenu type to tab content panel, regardless of how it was set
		$umitem->submenu_type = $umitem->settings['submenu_type'] = 'tab-content-panel';
		$umitem->submenu_classes[] = "ubermenu-tab-content-panel";
		$umitem->submenu_classes[] = "ubermenu-column";
		$umitem->submenu_classes[] = "ubermenu-column-" . $panels_group_layout;

		//Padding
		// if( $this->getSetting( 'panels_padded' ) == 'on' ){
		// 	$umitem->submenu_classes[] = 'ubermenu-submenu-padded';
		// }

		//Grid Panel
		if ($this->getSetting('panels_grid') == 'on') {
			$umitem->submenu_classes[] = 'ubermenu-submenu-grid';
		}
	}


}


/* An individual toggle item (regular menu item) */ /* ItemDefault vs Item ? */
class UberMenuItemTab extends UberMenuItemDefault
{

	protected $type = 'tab';
	//protected $alter_structure = true;	//sort of
	//protected $manual_content;
	//protected $auto_child = 'default'; // 'tab-content-panel';

	function init()
	{
		if ($this->walker->current_item() && $this->walker->current_item()->getType() == 'tabs') {
			$this->walker->current_item()->setup_tab($this);
		}
	}
	/*
					function alter( &$children ){

						//No children?  Uh oh
						if( !isset( $children[$this->source_id] ) ){
							$notice = __( 'To create tabs, add child items to the Tab Item.' , 'ubermenu' );
							$this->manual_content = ubermenu_admin_notice( $notice , false );;
							return;
						}

					}
				*/

	function add_class_layout_columns()
	{

		if ($this->depth > 0) {
			$parent_submenu_type = $this->walker->parent_item()->getSetting('submenu_type_calc');
			if ($parent_submenu_type == 'flyout')
				return;	//no columns in flyouts
		}

		//if( $this->depth > 1 ){

		$cols = $this->getSetting('columns');

		//Change specific for Left/Right Tab layouts, so that by default we're full width
		if ($cols == 'auto') {
			$tab_layout = $this->walker->parent_item()->getSetting('tab_layout');
			if ($tab_layout == 'right' || $tab_layout == 'left') {
				$cols = 'full';
			} else if ($this->depth > 0 && $cols == 'auto') {
				$cols = $this->walker->parent_item()->getSetting('submenu_column_default');
			}
		}

		$this->item_classes[] = 'ubermenu-column ubermenu-column-' . $cols;

		if ($this->getSetting('submenu_column_default') == 'auto') {
			$this->settings['submenu_column_default'] = $this->walker->parent_item()->getSetting('submenu_column_default');
		}
	}

	// function get_submenu_type( $submenu_type = false ){
	// 	return 'tab-content-panel';
	// }


	function get_start_el()
	{

		//$this->setupAutoChild();



		//Variable Initialization
		$item_output = '';
		$class_names = $value = '';

		//Tab
		$this->item_classes[] = 'ubermenu-tab';

		//Setup Classes
		$this->add_class_item_defaults();
		$this->add_class_id();
		$this->prefix_classes();
		$this->add_class_item_display();
		//$this->add_class_level();
		$this->add_class_layout_columns();
		$this->add_class_responsive();
		//$this->add_class_submenu();	//Tabs won't have submenus, add manually

		if (
			!($this->getSetting('disable_submenu_on_mobile') == 'on' &&
				ubermenu_is_mobile('disable_submenu_on_mobile')) &&
			$this->has_children
		) {
			$this->item_classes[] = 'ubermenu-has-submenu-drop';
		}


		//echo '>> ' . $this->item->title . ' : ' . implode(',' , $this->item_classes ) .'<br/>';



		$class_names = $this->filter_item_classes();

		//Setup ID
		$id = $this->filter_item_id();

		//Data target
		//$data_target = ' data-ubermenu-toggle-target="#ubermenu-panel-'.$this->ID.'"';

		//Setup Trigger
		$this->setup_trigger();


		//Atts
		$atts = ' ';
		foreach ($this->item_atts as $att => $val) {
			$atts .= $att . '="' . $val . '" ';
		}


		//Item LI
		$item_output .= '<li' . $id . $class_names . $atts . '>';

		//Anchor
		$atts = $this->anchor_atts(); //Attributes
		//If a tab needs to be toggleable, then we need to give it a tabindex so that disabled links (spans) become accessible
		if ($this->has_children && $this->getSetting('disable_link') == 'on') {
			$atts['tabindex'] = 0;
		}
		$item_output .= $this->get_anchor($atts);

		//Custom Content
		$item_output .= $this->get_custom_content();

		return $item_output;

	}

	function get_end_el()
	{
		//$this->resetAutoChild();
		$item_output = "</li>";
		return $item_output;
	}

	function setup_trigger()
	{

		//Item Trigger
		$trigger = $this->getSetting('item_trigger');

		//If auto, get trigger from Tabs Group
		if (!$trigger || $trigger == 'auto') {
			$trigger = $this->walker->parent_item()->getSetting('tabs_trigger');
		}

		if ($trigger && $trigger != 'auto' && $this->has_children) {
			$this->item_atts['data-ubermenu-trigger'] = $trigger;
		}
	}

}