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 / 3rd / elementor / module.php

module.php in QuadMenu – Mega Menu 2.0.3, at includes/3rd/elementor/module.php

316 lines 10.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Elementor;
4
5 if (!defined('ABSPATH')) {
6 die('-1');
7 }
8
9 class QuadMenu extends Widget_Base {
10
11 public function get_name() {
12 return 'quadmenu';
13 }
14
15 public function get_title() {
16 return __('QuadMenu', 'quadmenu');
17 }
18
19 public function get_icon() {
20 return 'eicon-menu-bar';
21 }
22
23 private function get_available_menus() {
24 $menus = wp_get_nav_menus();
25
26 $options = array();
27
28 foreach ($menus as $menu) {
29 $options[$menu->slug] = $menu->name;
30 }
31
32 return $options;
33 }
34
35 protected function _register_controls() {
36
37 $this->start_controls_section(
38 'general', array('label' => esc_html__('QuadMenu', 'quadmenu'))
39 );
40
41 $menus = $this->get_available_menus();
42
43 if (!empty($menus)) {
44 $this->add_control(
45 'menu', array(
46 'label' => __('Menu', 'quadmenu'),
47 'type' => Controls_Manager::SELECT,
48 'options' => $menus,
49 'default' => array_keys($menus)[0],
50 'save_default' => true,
51 'separator' => 'after',
52 'description' => sprintf(__('Go to the <a href="%s" target="_blank">Menus screen</a> to manage your menus.', 'quadmenu'), admin_url('nav-menus.php')),
53 )
54 );
55 } else {
56 $this->add_control(
57 'menu', array(
58 'type' => Controls_Manager::RAW_HTML,
59 'raw' => sprintf(__('There are no menus in your site.<br>Go to the <a href="%s" target="_blank">Menus screen</a> to create one.', 'quadmenu'), admin_url('nav-menus.php')),
60 'separator' => 'after',
61 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
62 )
63 );
64 }
65
66 $this->add_control('layout', array(
67 'type' => Controls_Manager::SELECT,
68 'label' => __('Layout', 'quadmenu'),
69 'default' => 'collapse',
70 'options' => array(
71 //'embed' => esc_html__('Embed', 'quadmenu'),
72 'collapse' => esc_html__('Collapse', 'quadmenu'),
73 'offcanvas' => esc_html__('Offcanvas', 'quadmenu'),
74 //'vertical' => esc_html__('Vertical', 'quadmenu'),
75 'inherit' => esc_html__('Inherit', 'quadmenu'),
76 ),
77 ));
78
79 $this->add_control('theme', array(
80 'type' => Controls_Manager::SELECT,
81 'label' => __('Theme', 'quadmenu'),
82 'default' => 'default_theme',
83 'options' => $GLOBALS['quadmenu_themes'],
84 'description' => sprintf(__('Go to the <a href="%s" target="_blank">QuadMenu Options</a> to manage your menu themes.', 'quadmenu'), admin_url('admin.php?page=' . QUADMENU_PANEL)),
85 'separator' => 'after',
86 ));
87
88 $this->add_control('navbar_logo', array(
89 'type' => Controls_Manager::MEDIA,
90 'label' => __('Logo', 'quadmenu'),
91 'description' => esc_html__('Max logo height in px.', 'quadmenu'),
92 'default' => array(
93 'url' => QUADMENU_PLUGIN_URL . 'assets/frontend/images/logo.png'
94 ),
95 'show_label' => false,
96 ));
97
98 /* $this->add_control('navbar_logo_height', array(
99 'type' => Controls_Manager::SLIDER,
100 'label' => __('Height', 'quadmenu'),
101 'default' => array(
102 'unit' => 'px',
103 'size' => 25,
104 ),
105 'range' => array(
106 'px' => array(
107 'min' => 20,
108 'max' => 160,
109 ),
110 ),
111 )); */
112
113 $this->add_control('layout_align', array(
114 'type' => Controls_Manager::SELECT,
115 'label' => esc_html__('Align', 'quadmenu'),
116 'subtitle' => esc_html__('Menu items alignment.', 'quadmenu'),
117 'options' => array(
118 'left' => esc_html__('Left', 'quadmenu'),
119 'center' => esc_html__('Center', 'quadmenu'),
120 'right' => esc_html__('Right', 'quadmenu'),
121 ),
122 'condition' => array(
123 'layout' => array('embed', 'collapse', 'offcanvas'),
124 ),
125 'default' => 'left',
126 ));
127
128 // Behaviour
129 // ---------------------------------------------------------
130 $this->add_control('layout_breakpoint', array(
131 'type' => Controls_Manager::SLIDER,
132 'label' => esc_html__('Breakpoint', 'quadmenu'),
133 'default' => array(
134 'unit' => 'px',
135 'size' => 768,
136 ),
137 'range' => array(
138 'px' => array(
139 'min' => 10,
140 'max' => 300,
141 ),
142 ),
143 ));
144
145 $this->add_control('layout_width', array(
146 'type' => Controls_Manager::SELECT,
147 'type' => 'select',
148 'label' => esc_html__('Width', 'quadmenu'),
149 'description' => esc_html__('Try to force menu width to fit screen.', 'quadmenu'),
150 'options' => array(
151 'yes' => esc_html__('Yes', 'quadmenu'),
152 'false' => esc_html__('No', 'quadmenu'),
153 ),
154 'condition' => array(
155 'layout' => array('collapse', 'offcanvas'),
156 ),
157 'default' => 'false',
158 ));
159 $this->add_control('layout_width_inner', array(
160 'type' => Controls_Manager::SELECT,
161 'label' => esc_html__('Inner', 'quadmenu'),
162 'options' => array(
163 'yes' => esc_html__('Yes', 'quadmenu'),
164 'false' => esc_html__('No', 'quadmenu'),
165 ),
166 'condition' => array(
167 'layout' => array('collapse', 'offcanvas'),
168 ),
169 'default' => 'false',
170 ));
171 $this->add_control('layout_width_inner_selector', array(
172 'type' => Controls_Manager::TEXT,
173 'label' => esc_html__('Selector', 'quadmenu'),
174 'description' => esc_html__('The menu container will take the width of this selector.', 'quadmenu'),
175 'default' => '.container',
176 'condition' => array(
177 'layout' => array('collapse', 'offcanvas'),
178 'layout_width_inner' => 'yes'
179 ),
180 ));
181 $this->add_control('layout_lazyload', array(
182 'type' => Controls_Manager::SELECT,
183 'label' => esc_html__('Lazyload', 'quadmenu'),
184 'options' => array(
185 'yes' => esc_html__('Yes', 'quadmenu'),
186 'false' => esc_html__('No', 'quadmenu'),
187 ),
188 'default' => 'false',
189 'description' => esc_html__('This is a beta function, please test it carefully.', 'quadmenu'),
190 ));
191 $this->add_control('layout_current', array(
192 'type' => Controls_Manager::SELECT,
193 'label' => esc_html__('Open', 'quadmenu'),
194 'options' => array(
195 'yes' => esc_html__('Yes', 'quadmenu'),
196 'false' => esc_html__('No', 'quadmenu'),
197 ),
198 'default' => 'false',
199 'description' => esc_html__('Open dropdown if is current page.', 'quadmenu'),
200 ));
201 $this->add_control('layout_divider', array(
202 'type' => Controls_Manager::SELECT,
203 'label' => esc_html__('Divider', 'quadmenu'),
204 'description' => esc_html__('Show a small divider bar between each menu item.', 'quadmenu'),
205 'options' => array(
206 'show' => esc_html__('Show', 'quadmenu'),
207 'hide' => esc_html__('Hide', 'quadmenu')
208 ),
209 'condition' => array(
210 'layout' => array('embed', 'collapse', 'offcanvas'),
211 ),
212 'default' => 'hide',
213 ));
214 $this->add_control('layout_caret', array(
215 'type' => Controls_Manager::SELECT,
216 'label' => esc_html__('Caret', 'quadmenu'),
217 'description' => esc_html__('Show carets on items with dropdown menus.', 'quadmenu'),
218 'options' => array(
219 'show' => esc_html__('Show', 'quadmenu'),
220 'hide' => esc_html__('Hide', 'quadmenu')
221 ),
222 'condition' => array(
223 'layout' => array('embed', 'collapse', 'offcanvas'),
224 ),
225 'default' => 'hide',
226 ));
227 $this->add_control('layout_classes', array(
228 'type' => Controls_Manager::TEXT,
229 'label' => esc_html__('Classes', 'quadmenu'),
230 'default' => '',
231 //'separator' => 'after',
232 ));
233
234 $this->add_control('layout_trigger', array(
235 'type' => Controls_Manager::SELECT,
236 'label' => esc_html__('Trigger', 'quadmenu'),
237 'options' => array(
238 'hoverintent' => esc_html__('Hover', 'quadmenu'),
239 'click' => esc_html__('Click', 'quadmenu')
240 ),
241 'subtitle' => esc_html__('Open dropdown menu on mouseover or click.', 'quadmenu'),
242 'default' => 'hoverintent',
243 'condition' => array(
244 'layout' => array('embed', 'collapse', 'offcanvas'),
245 ),
246 ));
247
248 $this->add_control('layout_dropdown_maxheight', array(
249 'type' => Controls_Manager::SELECT,
250 'type' => 'select',
251 'label' => esc_html__('Max Height', 'quadmenu'),
252 'subtitle' => esc_html__('Set the max height of dropdowns.', 'quadmenu'),
253 'options' => array(
254 'yes' => esc_html__('Yes', 'quadmenu'),
255 'false' => esc_html__('No', 'quadmenu'),
256 ),
257 'default' => 'false',
258 'condition' => array(
259 'layout' => array('embed', 'collapse', 'offcanvas'),
260 ),
261 ));
262
263 $this->end_controls_section();
264 }
265
266 protected function render() {
267
268 $available_menus = $this->get_available_menus();
269
270 if (!$available_menus) {
271 return;
272 }
273
274 $settings = $this->get_active_settings();
275
276 if (!empty($settings['menu'])) {
277
278 $args = array(
279 'echo' => false,
280 'menu' => $settings['menu'],
281 'theme' => $settings['theme'],
282 'layout' => $settings['layout'],
283 'layout_align' => $settings['layout_align'],
284 'layout_divider' => $settings['layout_divider'],
285 'layout_caret' => $settings['layout_caret'],
286 'layout_classes' => $settings['layout_classes'],
287 'layout_width' => wp_validate_boolean($settings['layout_width']),
288 'layout_width_inner' => wp_validate_boolean($settings['layout_width_inner']),
289 'layout_width_inner_selector' => esc_html($settings['layout_width_inner_selector']),
290 'layout_lazyload' => wp_validate_boolean($settings['layout_lazyload']),
291 'layout_current' => wp_validate_boolean($settings['layout_current']),
292 //'navbar_logo_height' => $settings['navbar_logo_height'],
293 );
294
295 if (isset($settings['navbar_logo']['url'])) {
296 $args['navbar_logo']['url'] = $settings['navbar_logo']['url'];
297 }
298
299 if (wp_doing_ajax()) {
300 $args['layout_classes'] = 'js';
301 }
302
303 echo quadmenu($args);
304 }
305 }
306
307 protected function content_template() {
308
309 }
310
311 public function render_plain_content($instance = array()) {
312
313 }
314
315 }
316