PluginProbe
QuadMenu – Mega Menu / 2.0.3
QuadMenu – Mega Menu v2.0.3
3.3.7 3.3.6 trunk 1.8.4 1.8.5 1.8.7 1.8.8 1.8.9 1.9.0 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 All 87 releases
quadmenu / includes / backend / settings.php

settings.php in QuadMenu – Mega Menu 2.0.3, at includes/backend/settings.php

531 lines 25.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if (!defined('ABSPATH')) {
3 die('-1');
4 }
5
6 class QuadMenu_Settings extends QuadMenu_Configuration {
7
8 public $tabs;
9 public $panels = array();
10
11 public function __construct() {
12
13 add_action('quadmenu_modal_panels', array($this, 'panels'), 10, 4);
14
15 add_action('wp_ajax_quadmenu_add_nav_menu_item_panel', array($this, 'ajax_add_nav_menu_item_panel'));
16 }
17
18 public function get_children_nav_menu_items($menu_id, $parent_menu_item_id) {
19
20 $childrens = array();
21
22 // check we're using a valid menu ID
23 if (!is_nav_menu($menu_id)) {
24 return $childrens;
25 }
26
27 if (is_array($menu = $this->wp_get_nav_menu_items($menu_id)) && count($menu)) {
28
29 foreach ($menu as $item) {
30
31 // find the child menu items
32 if ($parent_menu_item_id == $item->menu_item_parent) {
33
34 $childrens[$item->ID] = array(
35 'id' => $item->ID,
36 'title' => $item->title,
37 );
38 }
39 }
40 }
41
42 return $childrens;
43 }
44
45 function wp_get_nav_menu_items($menu_id) {
46
47 $quadmenu_menu_items = wp_cache_get("wp_get_nav_menu_items_{$menu_id}", 'quadmenu');
48
49 if ($quadmenu_menu_items === false) {
50
51 $quadmenu_menu_items = wp_get_nav_menu_items($menu_id);
52
53 wp_cache_set("wp_get_nav_menu_items_{$menu_id}", $quadmenu_menu_items, 'quadmenu');
54 }
55
56 return $quadmenu_menu_items;
57 }
58
59 public function nav_menu_item_settings($setting, $item) {
60
61 $type = $setting['type'];
62
63 //$desc = isset($setting['desc']) ? '<span class="quadmenu-menu-item-setting-description">' . $setting['desc'] . '</span>' : '';
64 //$tip = isset($setting['tip']) ? '<div class="quadmenu-menu-item-setting-tip"><i class="tip-icon"></i> ' . $setting['tip'] . '</div>' : '';
65
66 $value = $item->{$setting['db']};
67
68 $id = 'menu-item-' . $setting['db'];
69
70 $name = 'menu-item-' . $setting['id'];
71
72 $class = 'menu-item-quadmenu-setting ' . $id;
73
74 $ops = '';
75
76 if (isset($setting['ops'])) {
77 $ops = $setting['ops'];
78 if (!is_array($ops) && function_exists($ops)) {
79 if (isset($setting['ops_args'])) {
80 $ops = $ops($setting['ops_args']);
81 } else
82 $ops = $ops();
83 }
84 }
85
86 switch ($type) {
87
88 case 'checkbox':
89 ?>
90 <label class="multicheck-label">
91 <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'); ?> />
92 <?php echo esc_html($setting['placeholder']); ?>
93 </label>
94 <?php
95 break;
96
97 case 'multicheck':
98 ?>
99 <span class="field-wrapper">
100 <?php
101 $value = is_array($value) ? $value : array();
102
103 foreach ($ops as $_val => $_name):
104 ?>
105 <label class="multicheck-label" title="<?php echo esc_html($_val); ?>" >
106 <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)); ?> />
107 <?php echo esc_html($_name); ?>
108 </label>
109 <?php endforeach; ?>
110 </span>
111 <?php
112 break;
113
114 case 'text':
115 if (is_array($value)) {
116 $value = implode(' ', $value);
117 }
118 ?>
119 <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); ?>" />
120 <?php
121 break;
122
123 case 'number':
124 if (is_array($value)) {
125 $value = implode(' ', $value);
126 }
127 ?>
128 <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); ?>" />
129 <?php
130 break;
131
132 case 'hidden':
133 ?>
134 <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); ?>" />
135 <?php
136 break;
137
138 case 'textarea':
139 ?>
140 <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>
141 <?php
142 break;
143
144 case 'select':
145 ?>
146 <select id="<?php echo esc_attr($id); ?>" class="<?php echo esc_attr($class); ?>" name="<?php echo esc_attr($name); ?>" >
147 <?php foreach ($ops as $_val => $_name): ?>
148 <option value="<?php echo esc_html($_val); ?>" <?php selected($value, $_val); ?> ><?php echo $_name; ?></option>
149 <?php endforeach; ?>
150 </select>
151 <?php
152 break;
153
154 case 'radio':
155 ?>
156 <span class="field-wrapper">
157 <?php foreach ($ops as $_val => $_name): ?>
158 <label class="radio-label" title="<?php echo esc_html($_val); ?>" >
159 <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); ?> />
160 <?php echo esc_html($_name); ?>
161 </label>
162 <?php endforeach; ?>
163 </span>
164 <?php
165 break;
166
167 case 'width':
168
169 extract($ops);
170 ?>
171 <div class="quadmenu-setting-width-icons">
172 <div>
173 <span class="title">#</span>
174 </div>
175 <?php
176 if (!empty($icons)):
177 foreach ($icons as $size) :
178 ?>
179 <div class="<?php echo esc_attr($size); ?>"><i></i></div>
180 <?php
181 endforeach;
182 endif;
183 ?>
184 </div>
185 <?php if (!empty($columns)): ?>
186 <div class="quadmenu-setting-width-columns">
187 <div class="col">
188 <span class="title"><?php esc_html_e('Width', 'quadmenu'); ?></span>
189 </div>
190 <?php
191 foreach ($columns as $size) :
192
193 if ($size != '') {
194 $size = '-' . $size;
195 }
196 ?>
197 <div class="col<?php echo esc_attr($size) ?>">
198 <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][]">
199 <?php //if ($size != ''): ?>
200 <option value="">
201 <?php esc_html_e('Inherit from smaller', 'quadmenu'); ?>
202 </option>
203 <?php //endif; ?>
204 <?php
205 for ($i = 1; $i <= 12; $i++) :
206 $current = 'col' . $size . '-' . $i;
207 ?>
208 <option value="<?php echo esc_attr($current); ?>" <?php selected(true, in_array(sanitize_key($current), str_replace('col-xs-', 'col-', $value))); ?>>
209 <?php printf(esc_html('%1$s column', 'quadmenu'), $i); ?>
210 </option>
211 <?php endfor; ?>
212 </select>
213 </div>
214 <?php endforeach; ?>
215 </div>
216 <?php endif; ?>
217 <?php if (!empty($offset)): ?>
218 <div class="quadmenu-setting-width-offset">
219 <div>
220 <span class="title"><?php esc_html_e('Offset', 'quadmenu'); ?></span>
221 </div>
222 <?php foreach ($offset as $size) : ?>
223 <div class="<?php echo esc_attr($size) ?>">
224 <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][]">
225 <option value="">
226 <?php esc_html_e('Inherit from smaller', 'quadmenu'); ?>
227 </option>
228 <?php
229 for ($i = 1; $i <= 12; $i++) :
230 $current = 'offset-' . $size . '-' . $i;
231 ?>
232 <option value="<?php echo esc_attr($current); ?>" <?php selected(true, in_array(sanitize_key($current), $value)); ?>>
233 <?php printf(esc_html('%1$s column', 'quadmenu'), $i); ?>
234 </option>
235 <?php endfor; ?>
236 </select>
237 </div>
238 <?php endforeach; ?>
239 </div>
240 <?php endif; ?>
241 <?php if (!empty($hidden)): ?>
242 <div class="quadmenu-setting-width-hidden">
243 <div>
244 <span class="title"><?php esc_html_e('Hidden', 'quadmenu'); ?></span>
245 </div>
246 <?php
247 foreach ($hidden as $size) :
248 $current = 'hidden-' . $size;
249 ?>
250 <div class="<?php echo esc_attr($size) ?>">
251 <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)); ?>>
252 </div>
253 <?php endforeach; ?>
254 </div>
255 <?php endif; ?>
256 <?php
257 break;
258
259 case 'icon':
260 ?>
261 <div class="quadmenu-setting">
262 <label>
263 <span class="title"><?php esc_html_e('Icon', 'quadmenu'); ?></span>
264 <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); ?>"/>
265 </label>
266 </div>
267 <div class="quadmenu-setting">
268 <div class="quadmenu-icons-search">
269 <span class="button-icon button-secondary" class="button"><i class="<?php echo esc_html($value); ?>"></i><?php echo _QuadMenu()->selected_icons()->name; ?></span>
270 <input type="search" value="" placeholder="<?php echo esc_html($setting['placeholder']); ?>"/>
271 </div>
272 <div class="quadmenu-icons-scroll">
273 <?php foreach (explode(',', _QuadMenu()->selected_icons()->iconmap) as $icon) : ?>
274 <a style="display: block;" class="icon _<?php echo esc_attr(str_replace(' ', '_', trim($icon))); ?>"><i class="<?php echo esc_attr($icon); ?>"></i></a>
275 <?php endforeach; ?>
276 <div class="clearfix"></div>
277 </div>
278 </div>
279 <?php
280 break;
281
282 case 'background':
283
284 $defaults = array(
285 'thumbnail-id' => 0,
286 'size' => '',
287 'position' => '',
288 'repeat' => '',
289 'origin' => 'border-box',
290 'opacity' => 1,
291 );
292
293 $value = wp_parse_args($value, $defaults);
294
295 $_src = !empty($value['thumbnail-id']) ? wp_get_attachment_image_src($value['thumbnail-id'], 'thumbnail') : false;
296 $_url = !empty($value['thumbnail-id']) ? wp_get_attachment_image_src($value['thumbnail-id'], 'full') : false;
297
298 $have_media = ( strlen($_src[0]) > 0 ? 'active' : '' );
299 ?>
300 <span class="field-background"
301 style="
302 background-image: url(<?php echo esc_attr($_url[0]); ?>);
303 background-size: <?php echo esc_attr($value['size']); ?>;
304 background-repeat: <?php echo esc_attr($value['repeat']); ?>;
305 background-position: <?php echo esc_attr($value['position']); ?>;
306 background-origin: <?php echo esc_attr($value['origin']); ?>;
307 opacity: <?php echo esc_attr($value['opacity']); ?>;
308 "></span>
309 <span class="field-wrapper <?php echo esc_attr($have_media); ?>">
310 <span class="edit-menu-item-media-thumbnail">
311 <?php if ($have_media): ?>
312 <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">
313 <?php endif ?>
314 </span>
315 <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']); ?>" />
316 <span class="edit-menu-item-media-text"><?php esc_html_e('Select media image', 'quadmenu'); ?></span>
317 <a id="<?php echo esc_attr($item->ID); ?>" class="menu-item-media-upload" href="javascript:void(0)"><?php esc_html_e('Edit', 'quadmenu'); ?></a>
318 <a id="<?php echo esc_attr($item->ID); ?>" class="menu-item-media-clear" href="javascript:void(0)" ><?php esc_html_e('Remove', 'quadmenu'); ?></a>
319 <div class="clearfix"></div>
320 <label class="setting">
321 <b><?php esc_html_e('Opacity', 'quadmenu'); ?></b>
322 <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']); ?>"/>
323 </label>
324 <label class="setting">
325 <b><?php esc_html_e('Position', 'quadmenu'); ?></b>
326 <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]'); ?>">
327 <option value="left top" <?php selected('left top', $value['position']); ?>>left top</option>
328 <option value="left center" <?php selected('left center', $value['position']); ?>>left center</option>
329 <option value="left bottom" <?php selected('left bottom', $value['position']); ?>>left bottom</option>
330 <option value="right top" <?php selected('right top', $value['position']); ?>>right top</option>
331 <option value="right center" <?php selected('right center', $value['position']); ?>>right center</option>
332 <option value="right bottom" <?php selected('right bottom', $value['position']); ?>>right bottom</option>
333 <option value="center top" <?php selected('center top', $value['position']); ?>>center top</option>
334 <option value="center center" <?php selected('center center', $value['position']); ?>>center center</option>
335 <option value="center bottom" <?php selected('center bottom', $value['position']); ?>>center bottom</option>
336 </select>
337 </label>
338 <label class="setting">
339 <b><?php esc_html_e('Repeat', 'quadmenu'); ?></b>
340 <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]'); ?>">
341 <option value="repeat" <?php selected('repeat', $value['repeat']); ?>>repeat</option>
342 <option value="no-repeat" <?php selected('no-repeat', $value['repeat']); ?>>no-repeat</option>
343 </select>
344 </label>
345 <label class="setting">
346 <b><?php esc_html_e('Size', 'quadmenu'); ?></b>
347 <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']); ?>">
348 <option value="auto" <?php selected('auto', $value['size']); ?>>auto</option>
349 <option value="cover" <?php selected('cover', $value['size']); ?>>cover</option>
350 <option value="contain" <?php selected('contain', $value['size']); ?>>contain</option>
351 </select>
352 </label>
353 <label class="setting">
354 <b><?php esc_html_e('Origin', 'quadmenu'); ?></b>
355 <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']); ?>">
356 <option value="content-box" <?php selected('content-box', $value['origin']); ?>>Boxed</option>
357 <option value="border-box" <?php selected('border-box', $value['origin']); ?>>Stretch</option>
358 </select>
359 </label>
360 <div class="clearfix"></div>
361 </span>
362 <?php
363 break;
364
365 case 'media':
366
367 $_src = !empty($value['thumbnail-id']) ? wp_get_attachment_image_src($value['thumbnail-id'], 'thumbnail') : false;
368
369 $have_media = ( strlen($_src[0]) > 0 ? 'active' : '' );
370 ?>
371 <span class="field-wrapper <?php echo esc_attr($have_media); ?>">
372 <span class="edit-menu-item-media-thumbnail">
373 <?php if ($have_media): ?>
374 <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">
375 <?php endif ?>
376 </span>
377 <span class="edit-menu-item-media-text"><?php esc_html_e('Select media image', 'quadmenu'); ?></span>
378 <a id="<?php echo esc_attr($item->ID); ?>" class="menu-item-media-upload" href="javascript:void(0)"><?php esc_html_e('Edit', 'quadmenu'); ?></a>
379 <a id="<?php echo esc_attr($item->ID); ?>" class="menu-item-media-clear" href="javascript:void(0)" ><?php esc_html_e('Remove', 'quadmenu'); ?></a>
380 <span class="edit-menu-item-media-css"><?php
381 if ($have_media): echo $value['position'] . ',' . $value['repeat'] . ',' . $value['attachment'] . ',' . $value['size'];
382 endif
383 ?>
384 </span>
385 <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']); ?>" />
386 <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']); ?>" />
387 <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']); ?>" />
388 <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']); ?>" />
389 <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>
390 <?php
391 break;
392
393 default:
394 printf(esc_html__('Unknown field %s.', 'quadmenu'), $type);
395 }
396
397 //echo $desc;
398 //echo $tip;
399 }
400
401 public function form($menu_obj, $menu_item_depth = 0, $settings = array()) {
402
403 $fields = $this->nav_menu_item_fields($menu_obj);
404 ob_start();
405
406 if (in_array($menu_obj->object, array('search', 'cart', 'login', 'column'))) {
407 $settings = array_diff($settings, array('url', 'target', 'xfn', 'description'));
408 }
409 if (in_array($menu_obj->type, array('taxonomy', 'post_type', 'post_type_archive'))) {
410 $settings = array_diff($settings, array('url'));
411 }
412 ?>
413 <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); ?>">
414 <?php
415 foreach ($settings as $key):
416
417 $classes = array();
418
419 $classes[] = 'quadmenu-setting';
420
421 $classes[] = 'quadmenu-setting-' . $fields[$key]['type'];
422
423 $classes[] = 'quadmenu-setting-' . $fields[$key]['db'];
424
425 if (isset($fields[$key]['depth'])) {
426
427 if (is_array($fields[$key]['depth'])) {
428
429 foreach ($fields[$key]['depth'] as $depth) {
430
431 $classes[] = 'quadmenu-setting-depth-' . $depth;
432 }
433 } else {
434
435 $classes[] = 'quadmenu-setting-depth-' . $fields[$key]['depth'];
436 }
437 }
438 ?>
439 <div class="<?php echo join(' ', array_map('sanitize_html_class', $classes)); ?>">
440 <label>
441 <?php if (!empty($fields[$key]['title'])) : ?>
442 <span class="title"><?php echo esc_html($fields[$key]['title']); ?></span>
443 <?php endif; ?>
444 <?php $this->nav_menu_item_settings($fields[$key], $menu_obj); ?>
445 <?php if (!empty($fields[$key]['desc'])) : ?>
446 <span class="description"><?php echo esc_html($fields[$key]['desc']); ?></span>
447 <?php endif; ?>
448 </label>
449 </div>
450 <?php endforeach;
451 ?>
452 </form>
453 <?php
454 return ob_get_clean();
455 }
456
457 public function ajax_add_nav_menu_item_panel() {
458
459 if (!check_ajax_referer('quadmenu', 'nonce', false)) {
460 QuadMenu::send_json_error(esc_html__('Please reload page.', 'quadmenu'));
461 }
462
463 $panel = sanitize_text_field($_REQUEST['menu_item_panel']);
464
465 $menu_item_id = absint($_REQUEST['menu_item_id']);
466
467 $menu_id = absint($_REQUEST['menu_id']);
468
469 if (ob_get_contents())
470 ob_clean();
471
472 $menu_obj = QuadMenu::wp_setup_nav_menu_item($menu_item_id);
473
474 $items = QuadMenu_Configuration::custom_nav_menu_items();
475
476 if (!$settings = $items->{$menu_obj->quadmenu}->panels->$panel->settings) {
477 QuadMenu::send_json_error(json_encode($menu_obj));
478 }
479
480 if ($form = $this->form($menu_obj, 0, $settings)) {
481 QuadMenu::send_json_success($form);
482 } else {
483 QuadMenu::send_json_error(json_encode($menu_obj));
484 }
485
486 wp_die();
487 }
488
489 public function panels($menu_item_depth, $menu_obj, $menu_id) {
490
491 $items = QuadMenu_Configuration::custom_nav_menu_items();
492
493 $this->panels = $items->{$menu_obj->quadmenu}->panels;
494 ?>
495 <ul role="tablist" id="settings_<?php echo esc_attr($menu_obj->ID); ?>" class="quadmenu-tabs vertical">
496 <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>
497 <?php foreach ($this->panels as $key => $panel) : ?>
498 <?php
499 $classes = array();
500
501 if (isset($panel->depth)) {
502 foreach ($panel->depth as $depth) {
503 $classes[] = 'quadmenu-panel-depth-' . $depth;
504 }
505 }
506
507 $classes[] = 'quadmenu-panel-' . $key;
508 ?>
509 <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>
510 <?php $this->panels->{$key} = $panel->settings; ?>
511 <?php endforeach; ?>
512 <?php do_action('quadmenu_modal_panels_tab', $menu_item_depth, $menu_obj, $menu_id); ?>
513 </ul>
514 <div class="quadmenu-tabs-content<?php //echo join(' ', array_map('sanitize_html_class', $classes)); ?>">
515 <div role="tabpanel" class="quadmenu-tab-pane quadmenu-tab-pane-default active" id="setting_default_<?php echo esc_attr($menu_obj->ID); ?>">
516 <?php echo $this->form($menu_obj, 0, array('url', 'target', 'title', 'attr-title', 'classes', 'xfn', 'description')); ?>
517 </div>
518 <?php foreach ($this->panels as $key => $settings) : ?>
519 <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); ?>">
520 <span class="spinner"></span>
521 </div>
522 <?php endforeach; ?>
523 <?php do_action('quadmenu_modal_panels_pane', $menu_item_depth, $menu_obj, $menu_id); ?>
524 </div>
525 <?php
526 }
527
528 }
529
530 new QuadMenu_Settings();
531