PluginProbe
QuadMenu – Mega Menu / 3.3.8
QuadMenu – Mega Menu v3.3.8
3.3.8 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 All 88 releases
quadmenu / lib / backend / walker / class-nav-menu-columns.php

class-nav-menu-columns.php in QuadMenu – Mega Menu 3.3.8, at lib/backend/walker/class-nav-menu-columns.php

344 lines 12.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace QuadLayers\QuadMenu\Backend\Walker;
3
4 if ( ! defined( 'ABSPATH' ) ) {
5 die( '-1' );
6 }
7
8 use QuadLayers\QuadMenu\Backend\Settings;
9 use QuadLayers\QuadMenu\Plugin;
10
11 /**
12 * Nav_Menu_Columns Class ex QuadMenu_Nav_Menu_Column
13 */
14 class Nav_Menu_Columns extends Settings {
15
16 public static $instance;
17
18 public function __construct() {
19 add_filter( 'quadmenu_edit_nav_menu_walker', array( $this, 'add_nav_menu_item_column' ), 10, 3 );
20 }
21
22 function add_nav_menu_item_column( $walker_class_name, $menu_id = null, $menu_obj = null, $menu_items = null ) {
23
24 if ( ! empty( $menu_obj->menu_item_parent ) && ! empty( $menu_obj->quadmenu ) && $menu_obj->quadmenu === 'column' ) {
25 return __CLASS__;
26 }
27
28 return $walker_class_name;
29 }
30
31 public function walk( $elements, $max_depth ) {
32
33 $output = '';
34
35 foreach ( $elements as $e ) {
36
37 $output .= $this->column( $e );
38 }
39
40 return $output;
41
42 wp_die();
43 }
44
45 public function column( $column_obj, $menu_id = 0 ) {
46
47 ob_start();
48 ?>
49 <div id="column_<?php echo esc_attr( $column_obj->ID ); ?>" class="quadmenu-column quadmenu-item-depth-2 <?php echo join( ' ', array_map( 'sanitize_html_class', $column_obj->columns ) ); ?>" data-columns="<?php echo join( ' ', array_map( 'sanitize_html_class', $column_obj->columns ) ); ?>" data-menu_item_id="<?php echo esc_attr( $column_obj->ID ); ?>">
50 <div class="inner">
51 <div class="action-top clearfix">
52 <div class="actions">
53 <!--<a class="option contract" title="<?php echo esc_attr( esc_html__( 'Contract', 'quadmenu' ) ); ?>"></a>
54 <a class="option expand" title="<?php echo esc_attr( esc_html__( 'Expand', 'quadmenu' ) ); ?>"></a>-->
55 <a class="option edit" title="<?php esc_html_e( 'Edit', 'quadmenu' ); ?>"></a>
56 <a class="option remove" title="<?php esc_html_e( 'Remove', 'quadmenu' ); ?>"></a>
57 <span class="spinner"></span>
58 </div>
59 </div>
60 <div class="settings">
61 <?php echo $this->form( $column_obj, 1, array( 'columns' ) ); ?>
62 </div>
63 <ul id="quadmenu-column-items-<?php echo esc_attr( $column_obj->ID ); ?>" class="items add-quadmenu-column-item sortable-area" data-sortable-items=".quadmenu-column-item" data-sortable-handle=".action-top" data-sortable-connect=".items" data-menu_item_parent_id="<?php echo esc_attr( $column_obj->ID ); ?>">
64 <?php
65 $items = $this->get_children_nav_menu_items( $menu_id, $column_obj->ID );
66
67 if ( is_array( $items ) && count( $items ) ) :
68 foreach ( $items as $item ) :
69
70 $menu_obj = Plugin::wp_setup_nav_menu_item( $item['id'] );
71
72 $walker_class_name = apply_filters( 'quadmenu_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', null, $menu_obj, null );
73
74 require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
75
76 if ( class_exists( $walker_class_name ) ) {
77
78 $args = array(
79 'after' => '',
80 'before' => '',
81 'link_after' => '',
82 'link_before' => '',
83 'walker' => new $walker_class_name(),
84 );
85
86 echo walk_nav_menu_tree( array( $menu_obj ), 0, (object) $args );
87 }
88
89 endforeach;
90 endif;
91 ?>
92 </ul>
93 </div>
94 </div>
95 <?php
96 return ob_get_clean();
97 }
98
99 public function columns( $menu_obj, $menu_id = 0 ) {
100
101 $columns = $this->get_children_nav_menu_items( $menu_id, $menu_obj->ID );
102
103 ob_start();
104
105 $w4 = array(
106 array(
107 'quadmenu' => 'column',
108 'columns' => array( 'col-xs-12', 'col-sm-4' ),
109 ),
110 );
111
112 $w12 = array(
113 array(
114 'quadmenu' => 'column',
115 'columns' => array( 'col-xs-12', 'col-sm-12' ),
116 ),
117 );
118
119 $w6w6 = array(
120 array(
121 'quadmenu' => 'column',
122 'columns' => array( 'col-xs-12', 'col-sm-6' ),
123 ),
124 array(
125 'quadmenu' => 'column',
126 'columns' => array( 'col-xs-12', 'col-sm-6' ),
127 ),
128 );
129
130 $w4w4w4 = array(
131 array(
132 'quadmenu' => 'column',
133 'columns' => array( 'col-xs-12', 'col-sm-4' ),
134 ),
135 array(
136 'quadmenu' => 'column',
137 'columns' => array( 'col-xs-12', 'col-sm-4' ),
138 ),
139 array(
140 'quadmenu' => 'column',
141 'columns' => array( 'col-xs-12', 'col-sm-4' ),
142 ),
143 );
144
145 $w3w3w3w3 = array(
146 array(
147 'quadmenu' => 'column',
148 'columns' => array( 'col-xs-12', 'col-sm-3' ),
149 ),
150 array(
151 'quadmenu' => 'column',
152 'columns' => array( 'col-xs-12', 'col-sm-3' ),
153 ),
154 array(
155 'quadmenu' => 'column',
156 'columns' => array( 'col-xs-12', 'col-sm-3' ),
157 ),
158 array(
159 'quadmenu' => 'column',
160 'columns' => array( 'col-xs-12', 'col-sm-3' ),
161 ),
162 );
163
164 $w2w2w2w2w2w2 = array(
165 array(
166 'quadmenu' => 'column',
167 'columns' => array( 'col-xs-12', 'col-sm-2' ),
168 ),
169 array(
170 'quadmenu' => 'column',
171 'columns' => array( 'col-xs-12', 'col-sm-2' ),
172 ),
173 array(
174 'quadmenu' => 'column',
175 'columns' => array( 'col-xs-12', 'col-sm-2' ),
176 ),
177 array(
178 'quadmenu' => 'column',
179 'columns' => array( 'col-xs-12', 'col-sm-2' ),
180 ),
181 array(
182 'quadmenu' => 'column',
183 'columns' => array( 'col-xs-12', 'col-sm-2' ),
184 ),
185 array(
186 'quadmenu' => 'column',
187 'columns' => array( 'col-xs-12', 'col-sm-2' ),
188 ),
189 );
190
191 $w4w8 = array(
192 array(
193 'quadmenu' => 'column',
194 'columns' => array( 'col-xs-12', 'col-sm-4' ),
195 ),
196 array(
197 'quadmenu' => 'column',
198 'columns' => array( 'col-xs-12', 'col-sm-8' ),
199 ),
200 );
201
202 $w3w6w3 = array(
203 array(
204 'quadmenu' => 'column',
205 'columns' => array( 'col-xs-12', 'col-sm-3' ),
206 ),
207 array(
208 'quadmenu' => 'column',
209 'columns' => array( 'col-xs-12', 'col-sm-6' ),
210 ),
211 array(
212 'quadmenu' => 'column',
213 'columns' => array( 'col-xs-12', 'col-sm-3' ),
214 ),
215 );
216
217 $w2w10 = array(
218 array(
219 'quadmenu' => 'column',
220 'columns' => array( 'col-xs-12', 'col-sm-2' ),
221 ),
222 array(
223 'quadmenu' => 'column',
224 'columns' => array( 'col-xs-12', 'col-sm-10' ),
225 ),
226 );
227
228 $w2w8w2 = array(
229 array(
230 'quadmenu' => 'column',
231 'columns' => array( 'col-xs-12', 'col-sm-2' ),
232 ),
233 array(
234 'quadmenu' => 'column',
235 'columns' => array( 'col-xs-12', 'col-sm-8' ),
236 ),
237 array(
238 'quadmenu' => 'column',
239 'columns' => array( 'col-xs-12', 'col-sm-2' ),
240 ),
241 );
242 ?>
243 <div id="columns_<?php echo esc_attr( $menu_obj->ID ); ?>" class="quadmenu-columns sortable-area row" data-drop-area="drop-column" data-sortable-items=".quadmenu-column" data-sortable-handle=".action-top" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
244 <ul role="tablist">
245 <span class="spinner"></span>
246 <li>
247 <a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w4 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
248 </a>
249 </li>
250 <li>
251 <a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w12 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
252 <div class="col col-auto">
253 </div>
254 </a>
255 </li>
256 <li>
257 <a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w6w6 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
258 <div class="col col-auto"></div>
259 <div class="col col-auto"></div>
260 </a>
261 </li>
262 <li>
263 <a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w4w4w4 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
264 <div class="col col-auto"></div>
265 <div class="col col-auto"></div>
266 <div class="col col-auto"></div>
267 </a>
268 </li>
269 <li>
270 <a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w3w3w3w3 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
271 <div class="col col-auto"></div>
272 <div class="col col-auto"></div>
273 <div class="col col-auto"></div>
274 <div class="col col-auto"></div>
275 </a>
276 </li>
277 <li>
278 <a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w2w2w2w2w2w2 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
279 <div class="col col-auto"></div>
280 <div class="col col-auto"></div>
281 <div class="col col-auto"></div>
282 <div class="col col-auto"></div>
283 <div class="col col-auto"></div>
284 <div class="col col-auto"></div>
285 </a>
286 </li>
287 <li>
288 <a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w4w8 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
289 <div class="col col-4"></div>
290 <div class="col col-8"></div>
291 </a>
292 </li>
293 <li>
294 <a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w3w6w3 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
295 <div class="col col-3"></div>
296 <div class="col col-6"></div>
297 <div class="col col-3"></div>
298 </a>
299 </li>
300 <li>
301 <a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w2w10 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
302 <div class="col col-2"></div>
303 <div class="col col-10"></div>
304 </a>
305 </li>
306 <li>
307 <a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w2w8w2 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
308 <div class="col col-2"></div>
309 <div class="col col-8"></div>
310 <div class="col col-2"></div>
311 </a>
312 </li>
313 </ul>
314 <?php
315 if ( is_array( $columns ) && count( $columns ) ) :
316 foreach ( $columns as $column ) :
317
318 $column_obj = get_post( $column['id'] );
319
320 $column_obj = Plugin::wp_setup_nav_menu_item( $column['id'] );
321
322 if ( ! isset( $column_obj->quadmenu ) || $column_obj->quadmenu != 'column' ) {
323 continue;
324 }
325
326 echo $this->column( $column_obj, $menu_id );
327
328 endforeach;
329 endif;
330 ?>
331 </div>
332 <?php
333 return ob_get_clean();
334 }
335
336 public static function instance() {
337 if ( ! isset( self::$instance ) ) {
338 self::$instance = new self();
339 }
340 return self::$instance;
341 }
342 }
343
344