PluginProbe
QuadMenu – Mega Menu / 3.3.4
QuadMenu – Mega Menu v3.3.4
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 / lib / integrations / beaver / module.php

module.php in QuadMenu – Mega Menu 3.3.4, at lib/integrations/beaver/module.php

298 lines 9.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 class FLQuadMenuModule extends FLBuilderModule {
4
5 public static $fl_builder_page_id;
6
7 public function __construct() {
8
9 parent::__construct(
10 array(
11 'name' => __( 'QuadMenu', 'quadmenu' ),
12 'description' => __( 'Renders a WordPress menu.', 'quadmenu' ),
13 'category' => __( 'Actions', 'quadmenu' ),
14 'partial_refresh' => true,
15 'editor_export' => false,
16 'icon' => 'hamburger-menu.svg',
17 )
18 );
19
20 add_action( 'pre_get_posts', __CLASS__ . '::set_pre_get_posts_query', 10, 2 );
21 }
22
23 public static function get_attachment_data( $id ) {
24 $data = wp_prepare_attachment_for_js( $id );
25
26 if ( gettype( $data ) == 'array' ) {
27 return json_decode( json_encode( $data ) );
28 }
29
30 return $data;
31 }
32
33 public static function _get_menus() {
34 $get_menus = get_terms(
35 'nav_menu',
36 array(
37 'hide_empty' => true,
38 )
39 );
40 $fields = array(
41 'type' => 'select',
42 'label' => __( 'Menu', 'quadmenu' ),
43 'helper' => __( 'Select a WordPress menu that you created in the admin under Appearance > Menus.', 'quadmenu' ),
44 );
45
46 if ( $get_menus ) {
47
48 foreach ( $get_menus as $key => $menu ) {
49
50 if ( 0 == $key ) {
51 $fields['default'] = $menu->name;
52 }
53
54 $menus[ $menu->slug ] = $menu->name;
55 }
56
57 $fields['options'] = $menus;
58 } else {
59 $fields['options'] = array(
60 '' => __( 'No Menus Found', 'quadmenu' ),
61 );
62 }
63
64 return $fields;
65 }
66
67 public static function set_pre_get_posts_query( $query ) {
68 if ( ! is_admin() && $query->is_main_query() ) {
69
70 if ( $query->queried_object_id ) {
71
72 self::$fl_builder_page_id = $query->queried_object_id;
73
74 // Fix when menu module is rendered via hook
75 } elseif ( isset( $query->query_vars['page_id'] ) && 0 != $query->query_vars['page_id'] ) {
76
77 self::$fl_builder_page_id = $query->query_vars['page_id'];
78 }
79 }
80 }
81 }
82
83 FLBuilder::register_module(
84 'FLQuadMenuModule',
85 array(
86 'general' => array(// Tab
87 'title' => __( 'General', 'quadmenu' ), // Tab title
88 'sections' => array(// Tab Sections
89 'general' => array(// Section
90 'title' => '', // Section Title
91 'fields' => array(// Section Fields
92 'menu' => FLQuadMenuModule::_get_menus(),
93 'layout' => array(
94 'type' => 'select',
95 'label' => __( 'Layout', 'quadmenu' ),
96 'default' => 'collapse',
97 'options' => array(
98 // 'embed' => esc_html__('Embed', 'quadmenu'),
99 'collapse' => esc_html__( 'Collapse', 'quadmenu' ),
100 'offcanvas' => esc_html__( 'Offcanvas', 'quadmenu' ),
101 // 'vertical' => esc_html__('Vertical', 'quadmenu'),
102 'inherit' => esc_html__( 'Inherit', 'quadmenu' ),
103 ),
104 ),
105 'theme' => array(
106 'type' => 'select',
107 'label' => __( 'Theme', 'quadmenu' ),
108 'default' => 'default_theme',
109 'options' => $GLOBALS['quadmenu_themes'],
110 ),
111 ),
112 ),
113 'layout' => array(
114 'title' => __( 'Layout', 'quadmenu' ),
115 'fields' => array(
116 'navbar_logo' => array(
117 'type' => 'photo',
118 'label' => esc_html__( 'Logo', 'quadmenu' ),
119 'connections' => array( 'photo' ),
120 'show_remove' => true,
121 'default' => QUADMENU_PLUGIN_URL . 'assets/frontend/images/logo.png',
122 ),
123 /*
124 'navbar_logo_height' => array(
125 'type' => 'number',
126 'label' => esc_html__('Height', 'quadmenu'),
127 'description' => esc_html__('Max logo height in px.', 'quadmenu'),
128 'required' => array(
129 array('layout', '=', array('collapse', 'offcanvas', 'vertical', 'inherit')),
130 ),
131 'default' => QUADMENU_PLUGIN_URL . 'assets/frontend/images/logo.png'
132 ),*/
133 'layout_align' => array(
134 'customizer' => true,
135 'transport' => 'selective',
136 'id' => 'layout_align',
137 'type' => 'select',
138 'label' => esc_html__( 'Align', 'quadmenu' ),
139 'subtitle' => esc_html__( 'Menu items alignment.', 'quadmenu' ),
140 'options' => array(
141 'left' => esc_html__( 'Left', 'quadmenu' ),
142 'center' => esc_html__( 'Center', 'quadmenu' ),
143 'right' => esc_html__( 'Right', 'quadmenu' ),
144 ),
145 'required' => array(
146 array( 'layout', '=', array( 'embed', 'collapse', 'offcanvas' ) ),
147 ),
148 'default' => 'left',
149 ),
150 // Behaviour
151 // ---------------------------------------------------------
152 'layout_breakpoint' => array(
153 'type' => 'text',
154 'label' => esc_html__( 'Breakpoint', 'quadmenu' ),
155 'default' => '768',
156 'maxlength' => '4',
157 'size' => '4',
158 'description' => 'px',
159 'preview' => array(
160 // 'type' => 'css',
161 // 'selector' => '.menu',
162 // 'property' => 'font-size',
163 'unit' => 'px',
164 ),
165 ),
166 'layout_width' => array(
167 'type' => 'select',
168 'label' => esc_html__( 'Width', 'quadmenu' ),
169 'description' => esc_html__( 'Try to force menu width to fit screen.', 'quadmenu' ),
170 'options' => array(
171 'yes' => esc_html__( 'Yes', 'quadmenu' ),
172 'false' => esc_html__( 'No', 'quadmenu' ),
173 ),
174 'required' => array(
175 array( 'layout', '=', array( 'collapse', 'offcanvas' ) ),
176 ),
177 'default' => 'false',
178 ),
179 'layout_width_inner' => array(
180 'type' => 'select',
181 'label' => esc_html__( 'Inner', 'quadmenu' ),
182 'options' => array(
183 'yes' => esc_html__( 'Yes', 'quadmenu' ),
184 'false' => esc_html__( 'No', 'quadmenu' ),
185 ),
186 'required' => array(
187 array( 'layout', '=', array( 'collapse', 'offcanvas' ) ),
188 ),
189 'default' => 'false',
190 ),
191 'layout_width_inner_selector' => array(
192 'type' => 'text',
193 'label' => esc_html__( 'Selector', 'quadmenu' ),
194 'description' => esc_html__( 'The menu container will take the width of this selector.', 'quadmenu' ),
195 'default' => '.container',
196 'required' => array(
197 array( 'layout', '=', array( 'collapse', 'offcanvas' ) ),
198 ),
199 'required' => array(
200 array( 'layout_width_inner', '=', 1 ),
201 ),
202 ),
203 'layout_lazyload' => array(
204 'type' => 'select',
205 'label' => esc_html__( 'Lazyload', 'quadmenu' ),
206 'options' => array(
207 'yes' => esc_html__( 'Yes', 'quadmenu' ),
208 'false' => esc_html__( 'No', 'quadmenu' ),
209 ),
210 'default' => 'false',
211 'description' => esc_html__( 'This is a beta function, please test it carefully.', 'quadmenu' ),
212 ),
213 'layout_current' => array(
214 'type' => 'select',
215 'label' => esc_html__( 'Open', 'quadmenu' ),
216 'options' => array(
217 'yes' => esc_html__( 'Yes', 'quadmenu' ),
218 'false' => esc_html__( 'No', 'quadmenu' ),
219 ),
220 'default' => 'false',
221 'description' => esc_html__( 'Open dropdown if is current page.', 'quadmenu' ),
222 ),
223 'layout_divider' => array(
224 'type' => 'select',
225 'label' => esc_html__( 'Divider', 'quadmenu' ),
226 'description' => esc_html__( 'Show a small divider bar between each menu item.', 'quadmenu' ),
227 'options' => array(
228 'show' => esc_html__( 'Show', 'quadmenu' ),
229 'hide' => esc_html__( 'Hide', 'quadmenu' ),
230 ),
231 'required' => array(
232 array( 'layout', '=', array( 'embed', 'collapse', 'offcanvas' ) ),
233 ),
234 'default' => 'hide',
235 ),
236 'layout_caret' => array(
237 'type' => 'select',
238 'label' => esc_html__( 'Caret', 'quadmenu' ),
239 'description' => esc_html__( 'Show carets on items with dropdown menus.', 'quadmenu' ),
240 'options' => array(
241 'show' => esc_html__( 'Show', 'quadmenu' ),
242 'hide' => esc_html__( 'Hide', 'quadmenu' ),
243 ),
244 'required' => array(
245 array( 'layout', '=', array( 'embed', 'collapse', 'offcanvas' ) ),
246 ),
247 'default' => 'hide',
248 ),
249 'layout_classes' => array(
250 'type' => 'text',
251 'label' => esc_html__( 'Classes', 'quadmenu' ),
252 'default' => '',
253 ),
254 ),
255 ),
256 ),
257 ),
258 // Dropdown
259 // ---------------------------------------------------------
260 'dropdown' => array(// Tab
261 'title' => __( 'Dropdown', 'quadmenu' ), // Tab title
262 'sections' => array(// Tab Sections
263 'general_style' => array(
264 'title' => '',
265 'fields' => array(
266 'layout_trigger' => array(
267 'type' => 'select',
268 'label' => esc_html__( 'Trigger', 'quadmenu' ),
269 'options' => array(
270 'hoverintent' => esc_html__( 'Hover', 'quadmenu' ),
271 'click' => esc_html__( 'Click', 'quadmenu' ),
272 ),
273 'subtitle' => esc_html__( 'Open dropdown menu on mouseover or click.', 'quadmenu' ),
274 'default' => 'hoverintent',
275 'required' => array(
276 array( 'layout', '=', array( 'embed', 'collapse', 'offcanvas' ) ),
277 ),
278 ),
279 'layout_dropdown_maxheight' => array(
280 'type' => 'select',
281 'label' => esc_html__( 'Max Height', 'quadmenu' ),
282 'subtitle' => esc_html__( 'Set the max height of dropdowns.', 'quadmenu' ),
283 'options' => array(
284 'yes' => esc_html__( 'Yes', 'quadmenu' ),
285 'false' => esc_html__( 'No', 'quadmenu' ),
286 ),
287 'default' => 'false',
288 'required' => array(
289 array( 'layout', '=', array( 'embed', 'collapse', 'offcanvas' ) ),
290 ),
291 ),
292 ),
293 ),
294 ),
295 ),
296 )
297 );
298