File: /var/www/html/wp-content/themes/thegem-elementor/inc/megamenu/edit-megamenu-walker.class.php
<?php
/**
* TheGem Mega Menu Edit Walker class.
*
*/
/**
* Create HTML list of nav menu input items.
*
* @package WordPress
* @since 3.0.0
* @uses Walker_Nav_Menu_Edit
*/
class TheGem_Edit_Mega_Menu_Walker extends Walker_Nav_Menu_Edit {
/**
* Start the element output.
*
* @see Walker_Nav_Menu_Edit::start_el()
* @since 3.0.0
*
* @param string $output Passed by reference. Used to append additional content.
* @param object $item Menu item data object.
* @param int $depth Depth of menu item. Used for padding.
* @param array $args Not used.
* @param int $id Not used.
*/
function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
// vars
$item_output = '';
// First, make item with standard class
parent::start_el( $item_output, $item, $depth, $args, $id );
ob_start();
if (!isset($item->thegem_mega_menu))
$item->thegem_mega_menu = $item->thegem_mega_menu_default;
$mega_menu_container_classes = array( 'thegem-megamenu-fields' );
if ( $item->thegem_mega_menu['enable'] ) {
$mega_menu_container_classes[] = 'field-thegem-megamenu-enabled thegem-megamenu-source-'.$item->thegem_mega_menu['source'];
if ($item->thegem_mega_menu['template_width'] == 'custom') {
$mega_menu_container_classes[] = 'thegem-edit-menu-template-width-custom';
}
}
$mega_menu_container_classes = implode( ' ', $mega_menu_container_classes );
$item_id = esc_attr( $item->ID );
?>
<div class="wrapper-thegem-mobile-clickable" style="clear: both;">
<p class="field-thegem-mobile-clickable">
<label for="edit-thegem-mobile-clickable-<?php echo esc_attr($item_id); ?>">
<input id="edit-thegem-mobile-clickable-<?php echo esc_attr($item_id); ?>" type="checkbox" class="thegem-edit-thegem-mobile-clickable" name="thegem_mobile_clickable[<?php echo esc_attr($item_id); ?>]" <?php checked( $item->thegem_mobile_clickable ); ?>/>
<?php esc_html_e( 'Make clickable on mobile', 'thegem' ); ?>
<br>
<span class="description">
<?php esc_html_e( 'Activates page loading on mobiles by clicking on this menu item for default built-in mobile navigation type.', 'thegem' ); ?>
</span>
</label>
</p>
</div>
<div class="wrapper-thegem-mobile-collapsible" style="clear: both;">
<p class="field-thegem-mobile-collapsible">
<label for="edit-thegem-mobile-collapsible-<?php echo esc_attr($item_id); ?>">
<input id="edit-thegem-mobile-collapsible-<?php echo esc_attr($item_id); ?>" type="checkbox" class="thegem-edit-thegem-mobile-collapsible" name="thegem_mobile_collapsible[<?php echo esc_attr($item_id); ?>]" <?php checked( $item->thegem_mobile_collapsible ); ?>/>
<?php esc_html_e( 'Open submenu on mobile', 'thegem' ); ?>
<br>
<span class="description">
<?php esc_html_e( 'Activates opening of submenu by clicking on this menu item for overlay, left to right and top to bottom built-in mobile navigation types.', 'thegem' ); ?>
</span>
</label>
</p>
</div>
<!-- TheGem Mega Menu Start -->
<div class="<?php echo esc_attr( $mega_menu_container_classes ); ?>" style="clear: both;">
<p class="field-thegem-megamenu-icon description">
<label for="edit-thegem_mega_menu_icon-<?php echo esc_attr($item_id); ?>">
<?php esc_html_e( 'Icon', 'thegem' ); ?><br />
<input id="edit-thegem_mega_menu_icon-<?php echo esc_attr($item_id); ?>" class="thegem-edit-menu-item-icon" type="text" name="thegem_mega_menu_icon[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_html( $item->thegem_mega_menu['icon']); ?>"/><br />
<span class="description">
<?php esc_html_e('Enter icon code', 'thegem'); ?>:
<a class="gem-icon-info gem-icon-info-fontawesome" href="<?php echo esc_url(thegem_user_icons_info_link('fontawesome')); ?>" onclick="tb_show('<?php esc_attr_e('Icons info', 'thegem'); ?>', this.href+'?TB_iframe=true'); return false;"><?php esc_html_e('Show FontAwesome Icon Codes', 'thegem'); ?></a>
</span>
</label>
</p>
<!-- first level -->
<p class="field-thegem-megamenu-enable">
<label for="edit-thegem_mega_menu_enable-<?php echo esc_attr($item_id); ?>">
<input id="edit-thegem_mega_menu_enable-<?php echo esc_attr($item_id); ?>" type="checkbox" class="thegem-edit-menu-item-icon-enable" name="thegem_mega_menu_enable[<?php echo esc_attr($item_id); ?>]" <?php checked( $item->thegem_mega_menu['enable'] ); ?>/>
<?php _e( 'Enable Mega Menu', 'thegem' ); ?>
</label>
</p>
<p class="field-thegem-megamenu-source description">
<label for="edit-thegem_mega_menu_source-<?php echo esc_attr($item_id); ?>">
<?php _e('Mega Menu Source', 'thegem'); ?><br/>
<select name="thegem_mega_menu_source[<?php echo esc_attr($item_id); ?>]"
id="edit-thegem_mega_menu_source-<?php echo esc_attr($item_id); ?>"
class="thegem-edit-menu-item-source">
<?php foreach ($item->thegem_mega_menu_sources_values as $value => $title): ?>
<option value="<?php echo esc_attr($value); ?>" <?php selected($value, $item->thegem_mega_menu['source']); ?>><?php echo esc_html($title); ?></option>
<?php endforeach; ?>
</select>
</label>
</p>
<p class="field-thegem-megamenu-template description">
<label for="edit-thegem_mega_menu_template-<?php echo esc_attr($item_id); ?>">
<?php _e('Select Mega Menu Template', 'thegem'); ?><br/>
<select name="thegem_mega_menu_template[<?php echo esc_attr($item_id); ?>]"
id="edit-thegem_mega_menu_template-<?php echo esc_attr($item_id); ?>"
class="thegem-edit-menu-item-template">
<?php
$getTemplatesArray = thegem_get_megamenus_list();
foreach ($getTemplatesArray as $value => $data): ?>
<option value="<?php echo esc_attr($value); ?>" data-etit-link="<?php echo esc_url($data['edit']); ?>" <?php selected($value, $item->thegem_mega_menu['template']); ?>><?php echo esc_html($data['label']); ?></option>
<?php endforeach; ?>
</select>
</label>
<button type="button" class="edit-template-link">
Edit Template
</button>
</p>
<p class="field-thegem-megamenu-template description">
<a href="<?=admin_url('edit.php?post_type=thegem_templates&action=thegem_templates_new&_wpnonce='.wp_create_nonce( 'thegem_templates_new' ).'&template_type=megamenu')?>" target="_blank">Create New Template</a>
<span class="meta-sep hide-if-no-js"> | </span>
<a href="<?=admin_url('edit.php?post_type=thegem_templates&templates_type=megamenu#open-modal-import')?>" target="_blank">Import Pre-Built Template</a>
</p>
<p class="field-thegem-megamenu-template-width description">
<label for="edit-thegem_mega_menu_template_width-<?php echo esc_attr($item_id); ?>">
<?php _e('Width', 'thegem'); ?><br/>
<select name="thegem_mega_menu_template_width[<?php echo esc_attr($item_id); ?>]"
id="edit-thegem_mega_menu_template_width-<?php echo esc_attr($item_id); ?>"
class="thegem-edit-menu-template-width">
<?php foreach ($item->thegem_mega_menu_template_width_values as $value => $title): ?>
<option value="<?php echo esc_attr($value); ?>" <?php selected($value, $item->thegem_mega_menu['template_width']); ?>><?php echo esc_html($title); ?></option>
<?php endforeach; ?>
</select>
</label>
</p>
<p class="field-thegem-megamenu-template-width-custom description">
<label for="edit-thegem_mega_menu_template_width_custom-<?php echo esc_attr($item_id); ?>">
<?php esc_html_e('Custom Width', 'thegem'); ?><br/>
<input id="edit-thegem_mega_menu_template_width_custom-<?php echo esc_attr($item_id); ?>"
class="thegem-edit-menu-item-template-width-custom" type="text"
name="thegem_mega_menu_template_width_custom[<?php echo esc_attr($item_id); ?>]"
value="<?php echo esc_html($item->thegem_mega_menu['template_width_custom']); ?>"/>
</label>
</p>
<p class="field-thegem-megamenu-template-framing description">
<label for="edit-thegem_mega_menu_template_framing-<?php echo esc_attr($item_id); ?>">
<?php _e('Framing', 'thegem'); ?><br/>
<select name="thegem_mega_menu_template_framing[<?php echo esc_attr($item_id); ?>]"
id="edit-thegem_mega_menu_template_framing-<?php echo esc_attr($item_id); ?>"
class="thegem-edit-menu-template-framing">
<?php foreach ($item->thegem_mega_menu_template_framing_values as $value => $title): ?>
<option value="<?php echo esc_attr($value); ?>" <?php selected($value, $item->thegem_mega_menu['template_framing']); ?>><?php echo esc_html($title); ?></option>
<?php endforeach; ?>
</select>
</label>
</p>
<p class="field-thegem-megamenu-template-ajax">
<label for="edit-thegem_mega_menu_template_ajax-<?php echo esc_attr($item_id); ?>">
<input id="edit-thegem_mega_menu_template_ajax-<?php echo esc_attr($item_id); ?>" type="checkbox" class="thegem-edit-menu-item-icon-mega-template-ajax" name="thegem_mega_menu_template_ajax[<?php echo esc_attr($item_id); ?>]" <?php checked( $item->thegem_mega_menu['template_ajax'] ); ?>/>
<?php esc_html_e( 'Enable AJAX loading', 'thegem' ); ?>
<br><span class="description">
<?php esc_html_e( 'Activates inline loading of styles. Use in case JavaScript delay is activated in one-click optimization.', 'thegem' ); ?>
</span>
</label>
</p>
<p class="field-thegem-megamenu-style description">
<label for="edit-thegem_mega_menu_style-<?php echo esc_attr($item_id); ?>">
<?php _e( 'Mega Menu Style', 'thegem' ); ?><br />
<select name="thegem_mega_menu_style[<?php echo esc_attr($item_id); ?>]" id="edit-thegem_mega_menu_style-<?php echo esc_attr($item_id); ?>">
<?php foreach( $item->thegem_mega_menu_styles_values as $value=>$title): ?>
<option value="<?php echo esc_attr($value); ?>" <?php selected($value, $item->thegem_mega_menu['style']); ?>><?php echo esc_html($title); ?></option>
<?php endforeach; ?>
</select>
</label>
</p>
<p class="field-thegem-megamenu-masonry">
<label for="edit-thegem_mega_menu_masonry-<?php echo esc_attr($item_id); ?>">
<input id="edit-thegem_mega_menu_masonry-<?php echo esc_attr($item_id); ?>" type="checkbox" class="thegem-edit-menu-item-icon-mega-masonry" name="thegem_mega_menu_masonry[<?php echo esc_attr($item_id); ?>]" <?php checked( $item->thegem_mega_menu['masonry'] ); ?>/>
<?php esc_html_e( 'Mega Menu Masonry Style', 'thegem' ); ?>
</label>
</p>
<p class="field-thegem-megamenu-columns description">
<label for="edit-thegem_mega_menu_columns-<?php echo esc_attr($item_id); ?>">
<?php esc_html_e( 'Number of columns: ', 'thegem' ); ?><br />
<select name="thegem_mega_menu_columns[<?php echo esc_attr($item_id); ?>]" for="edit-thegem_mega_menu_columns-<?php echo esc_attr($item_id); ?>">
<?php foreach( $item->thegem_mega_menu_columns_values as $value=>$title): ?>
<option value="<?php echo esc_attr($value); ?>" <?php selected($value, $item->thegem_mega_menu['columns']); ?>><?php echo esc_html($title); ?></option>
<?php endforeach; ?>
</select>
</label>
</p>
<p class="field-thegem-megamenu-image description">
<label for="edit-thegem_mega_menu_image-<?php echo esc_attr($item_id); ?>">
<?php esc_html_e( 'Background image', 'thegem' ); ?><br />
<input id="edit-thegem_mega_menu_image-<?php echo esc_attr($item_id); ?>" class= "thegem-edit-menu-item-image picture-select" type="text" name="thegem_mega_menu_image[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_html( $item->thegem_mega_menu['image'] ); ?>"/>
<button class="picture-select-button"><?php esc_html_e( 'Select', 'thegem' ); ?></button>
</label>
</p>
<p class="field-thegem-megamenu-image-position description">
<label for="edit-thegem_mega_menu_image_position-<?php echo esc_attr($item_id); ?>">
<?php esc_html_e( 'Position: ', 'thegem' ); ?><br />
<select name="thegem_mega_menu_image_position[<?php echo esc_attr($item_id); ?>]" for="edit-thegem_mega_menu_image_position-<?php echo esc_attr($item_id); ?>">
<?php foreach( $item->thegem_mega_menu_image_position_values as $value=>$title): ?>
<option value="<?php echo esc_attr($value); ?>" <?php selected($value, $item->thegem_mega_menu['image_position']); ?>><?php echo esc_html($title); ?></option>
<?php endforeach; ?>
</select>
</label>
</p>
<fieldset class="fieldset-thegem-megamenu-padding">
<legend><?php esc_html_e( 'Padding: ', 'thegem' ); ?></legend>
<p class="field-thegem-megamenu-padding-left description description-thin">
<label for="edit-thegem_mega_menu_padding_left-<?php echo esc_attr($item_id); ?>">
<?php esc_html_e( 'Left', 'thegem' ); ?><br />
<input id="edit-thegem_mega_menu_padding_left-<?php echo esc_attr($item_id); ?>" class="thegem-edit-menu-item-padding-left" type="text" name="thegem_mega_menu_padding_left[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_html( $item->thegem_mega_menu['padding_left'] ); ?>"/>
</label>
</p>
<p class="field-thegem-megamenu-padding-right description description-thin">
<label for="edit-thegem_mega_menu_padding_right-<?php echo esc_attr($item_id); ?>">
<?php esc_html_e( 'Right', 'thegem' ); ?><br />
<input id="edit-thegem_mega_menu_padding_right-<?php echo esc_attr($item_id); ?>" class="thegem-edit-menu-item-padding-right" type="text" name="thegem_mega_menu_padding_right[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_html( $item->thegem_mega_menu['padding_right'] ); ?>"/>
</label>
</p>
<p class="field-thegem-megamenu-padding-top description description-thin">
<label for="edit-thegem_mega_menu_padding_top-<?php echo esc_attr($item_id); ?>">
<?php esc_html_e( 'Top', 'thegem' ); ?><br />
<input id="edit-thegem_mega_menu_padding_top-<?php echo esc_attr($item_id); ?>" class="thegem-edit-menu-item-padding-top" type="text" name="thegem_mega_menu_padding_top[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_html( $item->thegem_mega_menu['padding_top'] ); ?>"/>
</label>
</p>
<p class="field-thegem-megamenu-padding-bottom description description-thin">
<label for="edit-thegem_mega_menu_padding_bottom-<?php echo esc_attr($item_id); ?>">
<?php esc_html_e( 'Bottom', 'thegem' ); ?><br />
<input id="edit-thegem_mega_menu_padding_bottom-<?php echo esc_attr($item_id); ?>" class="thegem-edit-menu-item-padding-bottom" type="text" name="thegem_mega_menu_padding_bottom[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_html( $item->thegem_mega_menu['padding_bottom'] ); ?>"/>
</label>
</p>
<br class="clear" />
</fieldset>
<!-- second level -->
<p class="field-thegem-megamenu-width description">
<label for="edit-thegem_mega_menu_width-<?php echo esc_attr($item_id); ?>">
<?php esc_html_e( 'Column width', 'thegem' ); ?><br />
<input id="edit-thegem_mega_menu_width-<?php echo esc_attr($item_id); ?>" class= "thegem-edit-menu-item-width" type="text" name="thegem_mega_menu_width[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_html( $item->thegem_mega_menu['width'] ); ?>"/>
</label>
</p>
<p class="field-thegem-megamenu-not-link">
<label for="edit-thegem_mega_menu_not_link-<?php echo esc_attr($item_id); ?>">
<input id="edit-thegem_mega_menu_not_link-<?php echo esc_attr($item_id); ?>" type="checkbox" class="thegem-edit-menu-item-not-link" name="thegem_mega_menu_not_link[<?php echo esc_attr($item_id); ?>]" <?php checked( $item->thegem_mega_menu['not_link'] ); ?>/>
<?php esc_html_e( 'Don\'t link', 'thegem' ); ?>
</label>
</p>
<p class="field-thegem-megamenu-not-show">
<label for="edit-thegem_mega_menu_not_show-<?php echo esc_attr($item_id); ?>">
<input id="edit-thegem_mega_menu_not_show-<?php echo esc_attr($item_id); ?>" type="checkbox" class="thegem-edit-menu-item-not-show" name="thegem_mega_menu_not_show[<?php echo esc_attr($item_id); ?>]" <?php checked( $item->thegem_mega_menu['not_show'] ); ?>/>
<?php esc_html_e( 'Don\'t show', 'thegem' ); ?>
</label>
</p>
<p class="field-thegem-megamenu-new-row">
<label for="edit-thegem_mega_menu_new_row-<?php echo esc_attr($item_id); ?>">
<input id="edit-thegem_mega_menu_new_row-<?php echo esc_attr($item_id); ?>" type="checkbox" class="thegem-edit-menu-item-new-root" name="thegem_mega_menu_new_row[<?php echo esc_attr($item_id); ?>]" <?php checked( $item->thegem_mega_menu['new_row'] ); ?>/>
<?php esc_html_e( 'This item should start a new row', 'thegem' ); ?>
</label>
</p>
<!-- third level -->
<p class="field-thegem-megamenu-label description">
<label for="edit-thegem_mega_menu_label-<?php echo esc_attr($item_id); ?>">
<?php esc_html_e( 'Label', 'thegem' ); ?><br />
<input id="edit-thegem_mega_menu_label-<?php echo esc_attr($item_id); ?>" class= "thegem-edit-menu-item-label" type="text" name="thegem_mega_menu_label[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_html( $item->thegem_mega_menu['label'] ); ?>"/>
</label>
</p>
</div>
<!-- TheGem Mega Menu End -->
<?php
// inject custom field HTML
$output .= preg_replace(
// NOTE: Check this regex from time to time!
'/(?=<(fieldset|p)[^>]+class="[^"]*field-move)/',
ob_get_clean(),
$item_output
);
}
}