PluginProbe
QuadMenu – Mega Menu / trunk
QuadMenu – Mega Menu vtrunk
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 / class-module.php

class-module.php in QuadMenu – Mega Menu trunk, at lib/integrations/beaver/class-module.php

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