Current Path : /storage/v11800/alliedessence/public_html/wp-content/plugins/megamenu/classes/ |
Linux v11800 5.3.0-1023-aws #25~18.04.1-Ubuntu SMP Fri Jun 5 15:19:18 UTC 2020 aarch64
|
Current File : /storage/v11800/alliedessence/public_html/wp-content/plugins/megamenu/classes/menu-item-manager.class.php |
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // disable direct access
}
if ( ! class_exists( 'Mega_Menu_Menu_Item_Manager' ) ) :
/**
*
* @since 1.4
*/
class Mega_Menu_Menu_Item_Manager {
var $menu_id = 0;
var $menu_item_id = 0;
var $menu_item_title = '';
var $menu_item_depth = 0;
var $menu_item_objects = array();
var $menu_item_meta = array();
/**
* Constructor
*
* @since 1.4
*/
public function __construct() {
add_action( 'wp_ajax_mm_get_lightbox_html', array( $this, 'ajax_get_lightbox_html' ) );
add_action( 'wp_ajax_mm_get_empty_grid_column', array( $this, 'ajax_get_empty_grid_column' ) );
add_action( 'wp_ajax_mm_get_empty_grid_row', array( $this, 'ajax_get_empty_grid_row' ) );
add_action( 'wp_ajax_mm_save_menu_item_settings', array( $this, 'ajax_save_menu_item_settings' ) );
add_filter( 'megamenu_tabs', array( $this, 'add_mega_menu_tab' ), 10, 5 );
add_filter( 'megamenu_tabs', array( $this, 'add_general_settings_tab' ), 10, 5 );
add_filter( 'megamenu_tabs', array( $this, 'add_icon_tab' ), 10, 5 );
}
/**
* Set up the class
*
* @since 1.4
*/
private function init() {
if ( isset( $_POST['menu_item_id'] ) ) {
$this->menu_item_id = absint( $_POST['menu_item_id'] );
$this->menu_id = $this->get_menu_id_for_menu_item_id( $this->menu_item_id );
$this->menu_item_objects = wp_get_nav_menu_items( $this->menu_id );
$this->menu_item_title = $this->get_title_for_menu_item_id( $this->menu_item_id, $this->menu_item_objects );
$this->menu_item_depth = $this->get_menu_item_depth( $this->menu_item_id, $this->menu_item_objects );
$saved_settings = array_filter( (array) get_post_meta( $this->menu_item_id, '_megamenu', true ) );
$this->menu_item_meta = array_merge( Mega_Menu_Nav_Menus::get_menu_item_defaults(), $saved_settings );
}
}
/**
* Get the depth for a menu item ID
*
* @since 2.7.7
* @param int $menu_item_id
* @param array $menu_item_objects
* @return int
*/
public function get_menu_item_depth( $menu_item_id, $menu_item_objects ) {
$parents = array();
foreach ( $menu_item_objects as $key => $item ) {
if ( $item->menu_item_parent == 0 ) {
if ( $item->ID == $menu_item_id ) {
return 0; // top level item
}
$parents[] = $item->ID;
}
}
if ( count( $parents ) ) {
foreach ( $menu_item_objects as $key => $item ) {
if ( in_array( $item->menu_item_parent, $parents ) ) {
if ( $item->ID == $menu_item_id ) {
return 1; // second level item
}
}
}
}
return 2; // third level item or above
}
/**
* Save custom menu item fields.
*
* @since 1.4
*/
public static function ajax_save_menu_item_settings() {
check_ajax_referer( 'megamenu_edit' );
$capability = apply_filters( 'megamenu_options_capability', 'edit_theme_options' );
if ( ! current_user_can( $capability ) ) {
return;
}
$submitted_settings = isset( $_POST['settings'] ) ? $_POST['settings'] : array();
$menu_item_id = absint( $_POST['menu_item_id'] );
if ( $menu_item_id > 0 && is_array( $submitted_settings ) ) {
// only check the checkbox values if the general settings form was submitted
if ( isset( $_POST['tab'] ) && $_POST['tab'] == 'general_settings' ) {
$checkboxes = array( 'hide_text', 'disable_link', 'hide_arrow', 'hide_on_mobile', 'hide_on_desktop', 'close_after_click', 'hide_sub_menu_on_mobile', 'collapse_children' );
foreach ( $checkboxes as $checkbox ) {
if ( ! isset( $submitted_settings[ $checkbox ] ) ) {
$submitted_settings[ $checkbox ] = 'false';
}
}
}
$submitted_settings = apply_filters( 'megamenu_menu_item_submitted_settings', $submitted_settings, $menu_item_id );
$existing_settings = get_post_meta( $menu_item_id, '_megamenu', true );
if ( is_array( $existing_settings ) ) {
$submitted_settings = array_merge( $existing_settings, $submitted_settings );
}
update_post_meta( $menu_item_id, '_megamenu', $submitted_settings );
do_action( 'megamenu_save_menu_item_settings', $menu_item_id );
}
if ( isset( $_POST['clear_cache'] ) ) {
do_action( 'megamenu_delete_cache' );
}
if ( ob_get_contents() ) {
ob_clean(); // remove any warnings or output from other plugins which may corrupt the response
}
wp_send_json_success();
}
/**
* Return the HTML to display in the Lightbox
*
* @since 1.4
* @return string
*/
public function ajax_get_lightbox_html() {
check_ajax_referer( 'megamenu_edit' );
$capability = apply_filters( 'megamenu_options_capability', 'edit_theme_options' );
if ( ! current_user_can( $capability ) ) {
return;
}
$this->init();
$response = array();
$response['title'] = $this->menu_item_title;
$response['active_tab'] = 'mega_menu';
if ( $this->menu_item_depth > 0 ) {
$response['active_tab'] = 'general_settings';
}
$response = apply_filters( 'megamenu_tabs', $response, $this->menu_item_id, $this->menu_id, $this->menu_item_depth, $this->menu_item_meta );
if ( ob_get_contents() ) {
ob_clean(); // remove any warnings or output from other plugins which may corrupt the response
}
wp_send_json_success( json_encode( $response ) );
}
/**
* Returns the menu ID for a specified menu item ID
*
* @since 2.7.5
* @param int $menu_item_id
* @return int $menu_id
*/
public function get_menu_id_for_menu_item_id( $menu_item_id ) {
$terms = get_the_terms( $menu_item_id, 'nav_menu' );
$menu_id = $terms[0]->term_id;
return $menu_id;
}
/**
* Returns the title of a given menu item ID
*
* @since 2.7.5
* @param int $menu_item_id
* @return int $menu_id
*/
public function get_title_for_menu_item_id( $menu_item_id, $menu_item_objects ) {
foreach ( $menu_item_objects as $key => $item ) {
if ( $item->ID == $menu_item_id ) {
return $item->title;
}
}
return false;
}
/**
* Return the HTML to display in the 'Mega Menu' tab
*
* @since 1.7
* @return array
*/
public function add_mega_menu_tab( $tabs, $menu_item_id, $menu_id, $menu_item_depth, $menu_item_meta ) {
if ( $menu_item_depth > 0 ) {
$tabs['mega_menu'] = array(
'title' => __( 'Sub Menu', 'megamenu' ),
'content' => '<em>' . __( 'Mega Menus can only be created on top level menu items.', 'megamenu' ) . '</em>',
);
return $tabs;
}
$submenu_options = apply_filters(
'megamenu_submenu_options',
array(
'flyout' => __( 'Flyout Menu', 'megamenu' ),
'grid' => __( 'Mega Menu - Grid Layout', 'megamenu' ),
'megamenu' => __( 'Mega Menu - Standard Layout', 'megamenu' ),
),
$menu_item_meta
);
$return = "<label for='mm_enable_mega_menu'>" . __( 'Sub menu display mode', 'megamenu' ) . '</label>';
$return .= "<select id='mm_enable_mega_menu' name='settings[type]'>";
foreach ( $submenu_options as $type => $label ) {
$return .= "<option id='{$type}' value='{$type}' " . selected( $menu_item_meta['type'], $type, false ) . ">{$label}</option>";
}
$return .= '</select>';
$widget_manager = new Mega_Menu_Widget_Manager();
$all_widgets = $widget_manager->get_available_widgets();
$return .= "<div class='mm_panel_options'>";
$return .= " <select id='mm_number_of_columns' name='settings[panel_columns]'>";
$return .= " <option value='1' " . selected( $menu_item_meta['panel_columns'], 1, false ) . '>1 ' . __( 'column', 'megamenu' ) . '</option>';
$return .= " <option value='2' " . selected( $menu_item_meta['panel_columns'], 2, false ) . '>2 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='3' " . selected( $menu_item_meta['panel_columns'], 3, false ) . '>3 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='4' " . selected( $menu_item_meta['panel_columns'], 4, false ) . '>4 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='5' " . selected( $menu_item_meta['panel_columns'], 5, false ) . '>5 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='6' " . selected( $menu_item_meta['panel_columns'], 6, false ) . '>6 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='7' " . selected( $menu_item_meta['panel_columns'], 7, false ) . '>7 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='8' " . selected( $menu_item_meta['panel_columns'], 8, false ) . '>8 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='9' " . selected( $menu_item_meta['panel_columns'], 9, false ) . '>9 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='10' " . selected( $menu_item_meta['panel_columns'], 10, false ) . '>10 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='11' " . selected( $menu_item_meta['panel_columns'], 11, false ) . '>11 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='12' " . selected( $menu_item_meta['panel_columns'], 12, false ) . '>12 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= ' </select>';
$return .= " <select id='mm_widget_selector'>";
$return .= " <option value='disabled'>" . __( 'Select a Widget to add to the panel', 'megamenu' ) . '</option>';
foreach ( $all_widgets as $widget ) {
$return .= " <option value='" . $widget['value'] . "'>" . $widget['text'] . '</option>';
}
$return .= ' </select>';
$return .= '</div>';
$return .= $this->get_megamenu_html( $menu_item_id, $menu_id, $menu_item_depth, $menu_item_meta );
$return .= $this->get_megamenu_grid_html( $menu_item_id, $menu_id, $menu_item_depth, $menu_item_meta );
$tabs['mega_menu'] = array(
'title' => __( 'Mega Menu', 'megamenu' ),
'content' => $return,
);
return $tabs;
}
/**
* Return the HTML for the grid layout
*
* @since 2.4
* @return string
*/
public function get_megamenu_grid_html( $menu_item_id, $menu_id, $menu_item_depth, $menu_item_meta ) {
$css_version = get_transient( 'megamenu_css_version' );
$return = "<div id='megamenu-grid'>";
if ( $css_version && version_compare( $css_version, '2.3.9', '<=' ) ) {
$link = "<a href='" . esc_attr( admin_url( 'admin.php?page=maxmegamenu_tools' ) ) . "'>" . __( 'Mega Menu' ) . ' > ' . __( 'Tools' ) . '</a>';
$return .= "<div class='notice notice-success'><p>";
$return .= sprintf( __( 'Your menu CSS needs to be updated first. Please go to %s and Clear the CSS Cache (you will only need to do this once).', 'megamenu' ), $link );
$return .= '</p></div>';
$return .= '</div>';
return $return;
}
$widget_manager = new Mega_Menu_Widget_Manager();
$grid = $widget_manager->get_grid_widgets_and_menu_items_for_menu_id( $menu_item_id, $menu_id );
if ( count( $grid ) ) {
foreach ( $grid as $row => $row_data ) {
$column_html = '';
if ( isset( $row_data['columns'] ) && count( $row_data['columns'] ) ) {
foreach ( $row_data['columns'] as $col => $col_data ) {
$column_html .= $this->get_grid_column( $row_data, $col_data );
}
}
$return .= $this->get_grid_row( $row_data, $column_html );
}
}
$return .= " <button class='button button-primary mega-add-row'><span class='dashicons dashicons-plus'></span>" . __( 'Row', 'megamenu' ) . '</button>';
$return .= '</div>';
return $return;
}
/**
* Return the HTML to display in the Lightbox
*
* @since 2.4
* @return string
*/
public function ajax_get_empty_grid_column() {
check_ajax_referer( 'megamenu_edit' );
$capability = apply_filters( 'megamenu_options_capability', 'edit_theme_options' );
if ( ! current_user_can( $capability ) ) {
return;
}
$return = $this->get_grid_column();
if ( ob_get_contents() ) {
ob_clean(); // remove any warnings or output from other plugins which may corrupt the response
}
wp_send_json_success( $return );
}
/**
* Return the HTML to display in the Lightbox
*
* @since 2.4
* @return string
*/
public function ajax_get_empty_grid_row() {
check_ajax_referer( 'megamenu_edit' );
$capability = apply_filters( 'megamenu_options_capability', 'edit_theme_options' );
if ( ! current_user_can( $capability ) ) {
return;
}
$column_html = $this->get_grid_column();
$return = $this->get_grid_row( false, $column_html );
if ( ob_get_contents() ) {
ob_clean(); // remove any warnings or output from other plugins which may corrupt the response
}
wp_send_json_success( $return );
}
/**
* Return the HTML for a single row
*
* @param array $row_data
* @param string $column_html
* @since 2.4
* @return string
*/
public function get_grid_row( $row_data = false, $column_html = false ) {
$hide_on_desktop_checked = 'false';
$hide_on_desktop = 'mega-enabled';
if ( isset( $row_data['meta']['hide-on-desktop'] ) && $row_data['meta']['hide-on-desktop'] == 'true' ) {
$hide_on_desktop = 'mega-disabled';
$hide_on_desktop_checked = 'true';
}
$hide_on_mobile_checked = 'false';
$hide_on_mobile = 'mega-enabled';
if ( isset( $row_data['meta']['hide-on-mobile'] ) && $row_data['meta']['hide-on-mobile'] == 'true' ) {
$hide_on_mobile = 'mega-disabled';
$hide_on_mobile_checked = 'true';
}
$row_columns = 12;
if ( isset( $row_data['meta']['columns'] ) ) {
$row_columns = intval( $row_data['meta']['columns'] );
}
$desktop_tooltip_visible = __( 'Row', 'megamenu' ) . ': ' . __( 'Visible on desktop', 'megamenu' );
$desktop_tooltip_hidden = __( 'Row', 'megamenu' ) . ': ' . __( 'Hidden on desktop', 'megamenu' );
$mobile_tooltip_visible = __( 'Row', 'megamenu' ) . ': ' . __( 'Visible on mobile', 'megamenu' );
$mobile_tooltip_hidden = __( 'Row', 'megamenu' ) . ': ' . __( 'Hidden on mobile', 'megamenu' );
$row_class = isset( $row_data['meta']['class'] ) ? $row_data['meta']['class'] : '';
$return = "<div class='mega-row' data-available-cols='{$row_columns}'>";
$return .= " <div class='mega-row-header'>";
$return .= " <div class='mega-row-actions'>";
$return .= " <span class='dashicons dashicons-sort'></span>";
$return .= " <span class='dashicons dashicons-admin-generic'></span>";
$return .= " <span class='mega-tooltip {$hide_on_desktop}' data-tooltip-enabled='{$desktop_tooltip_visible}' data-tooltip-disabled='{$desktop_tooltip_hidden}'><span class='dashicons dashicons-desktop'></span></span>";
$return .= " <span class='mega-tooltip {$hide_on_mobile}' data-tooltip-enabled='{$mobile_tooltip_visible}' data-tooltip-disabled='{$mobile_tooltip_hidden}'><span class='dashicons dashicons-smartphone'></span></span>";
$return .= " <span class='dashicons dashicons-trash'></span>";
$return .= ' </div>';
$return .= " <div class='mega-row-settings'>";
$return .= " <input name='mega-hide-on-mobile' type='hidden' value='{$hide_on_mobile_checked}' />";
$return .= " <input name='mega-hide-on-desktop' type='hidden' value='{$hide_on_desktop_checked}'/>";
$return .= " <div class='mega-settings-row'>";
$return .= ' <label>' . __( 'Row class', 'megamenu' ) . '</label>';
$return .= " <input class='mega-row-class' type='text' value='{$row_class}' />";
$return .= ' </div>';
$return .= " <div class='mega-settings-row'>";
$return .= ' <label>' . __( 'Row columns', 'megamenu' ) . '</label>';
$return .= " <select class='mega-row-columns'>";
$return .= " <option value='1' " . selected( $row_columns, 1, false ) . '>1 ' . __( 'column', 'megamenu' ) . '</option>';
$return .= " <option value='2' " . selected( $row_columns, 2, false ) . '>2 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='3' " . selected( $row_columns, 3, false ) . '>3 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='4' " . selected( $row_columns, 4, false ) . '>4 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='5' " . selected( $row_columns, 5, false ) . '>5 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='6' " . selected( $row_columns, 6, false ) . '>6 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='7' " . selected( $row_columns, 7, false ) . '>7 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='8' " . selected( $row_columns, 8, false ) . '>8 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='9' " . selected( $row_columns, 9, false ) . '>9 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='10' " . selected( $row_columns, 10, false ) . '>10 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='11' " . selected( $row_columns, 11, false ) . '>11 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= " <option value='12' " . selected( $row_columns, 12, false ) . '>12 ' . __( 'columns', 'megamenu' ) . '</option>';
$return .= ' </select>';
$return .= ' </div>';
$return .= " <button class='button button-primary mega-save-row-settings' type='submit'>" . __( 'Save', 'megamenu' ) . '</button>';
$return .= ' </div>';
$return .= " <button class='button button-primary mega-add-column'><span class='dashicons dashicons-plus'></span>" . __( 'Column', 'megamenu' ) . '</button>';
$return .= ' </div>';
$return .= " <div class='error notice is-dismissible mega-too-many-cols'>";
$return .= ' <p>' . __( 'You should rearrange the content of this row so that all columns fit onto a single line.', 'megamenu' ) . '</p>';
$return .= ' </div>';
$return .= " <div class='error notice is-dismissible mega-row-is-full'>";
$return .= ' <p>' . __( 'There is not enough space on this row to add a new column.', 'megamenu' ) . '</p>';
$return .= ' </div>';
$return .= $column_html;
$return .= '</div>';
return $return;
}
/**
* Return the HTML for an individual grid column
*
* @param array $col_data
* @since 2.4
* @return string
*/
public function get_grid_column( $row_data = false, $col_data = false ) {
$col_span = 3;
$row_columns = 12;
if ( isset( $row_data['meta']['columns'] ) ) {
$row_columns = intval( $row_data['meta']['columns'] );
}
if ( isset( $col_data['meta']['span'] ) ) {
$col_span = $col_data['meta']['span'];
}
$hide_on_desktop_checked = 'false';
$hide_on_desktop = 'mega-enabled';
if ( isset( $col_data['meta']['hide-on-desktop'] ) && $col_data['meta']['hide-on-desktop'] == 'true' ) {
$hide_on_desktop = 'mega-disabled';
$hide_on_desktop_checked = 'true';
}
$hide_on_mobile_checked = 'false';
$hide_on_mobile = 'mega-enabled';
if ( isset( $col_data['meta']['hide-on-mobile'] ) && $col_data['meta']['hide-on-mobile'] == 'true' ) {
$hide_on_mobile = 'mega-disabled';
$hide_on_mobile_checked = 'true';
}
$desktop_tooltip_visible = __( 'Column', 'megamenu' ) . ': ' . __( 'Visible on desktop', 'megamenu' );
$desktop_tooltip_hidden = __( 'Column', 'megamenu' ) . ': ' . __( 'Hidden on desktop', 'megamenu' );
$mobile_tooltip_visible = __( 'Column', 'megamenu' ) . ': ' . __( 'Visible on mobile', 'megamenu' );
$mobile_tooltip_hidden = __( 'Column', 'megamenu' ) . ': ' . __( 'Hidden on mobile', 'megamenu' );
$col_class = isset( $col_data['meta']['class'] ) ? $col_data['meta']['class'] : '';
$return = "<div class='mega-col' data-span='{$col_span}'>";
$return .= " <div class='mega-col-wrap'>";
$return .= " <div class='mega-col-header'>";
$return .= " <div class='mega-col-description'>";
$return .= " <span class='dashicons dashicons-move'></span>";
$return .= " <span class='dashicons dashicons-admin-generic'></span>";
$return .= " <span class='mega-tooltip {$hide_on_desktop}' data-tooltip-enabled='{$desktop_tooltip_visible}' data-tooltip-disabled='{$desktop_tooltip_hidden}'><span class='dashicons dashicons-desktop'></span></span>";
$return .= " <span class='mega-tooltip {$hide_on_mobile}' data-tooltip-enabled='{$mobile_tooltip_visible}' data-tooltip-disabled='{$mobile_tooltip_hidden}'><span class='dashicons dashicons-smartphone'></span></span>";
$return .= " <span class='dashicons dashicons-trash'></span>";
$return .= ' </div>';
$return .= ' <div class="mega-col-actions">';
$return .= ' <a class="mega-col-option mega-col-contract" title="' . esc_attr( __( 'Contract', 'megamenu' ) ) . '"><span class="dashicons dashicons-arrow-left-alt2"></span></a>';
$return .= " <span class='mega-col-cols'><span class='mega-num-cols'>{$col_span}</span><span class='mega-of'>/</span><span class='mega-num-total-cols'>" . $row_columns . '</span></span>';
$return .= ' <a class="mega-col-options mega-col-expand" title="' . esc_attr( __( 'Expand', 'megamenu' ) ) . '"><span class="dashicons dashicons-arrow-right-alt2"></span></a>';
$return .= ' </div>';
$return .= ' </div>';
$return .= " <div class='mega-col-settings'>";
$return .= " <input name='mega-hide-on-mobile' type='hidden' value='{$hide_on_mobile_checked}' />";
$return .= " <input name='mega-hide-on-desktop' type='hidden' value='{$hide_on_desktop_checked}'/>";
$return .= ' <label>' . __( 'Column class', 'megamenu' ) . '</label>';
$return .= " <input class='mega-column-class' type='text' value='{$col_class}' />";
$return .= " <button class='button button-primary mega-save-column-settings' type='submit'>" . __( 'Save', 'megamenu' ) . '</button>';
$return .= ' </div>';
$return .= " <div class='mega-col-widgets'>";
if ( isset( $col_data['items'] ) && count( $col_data['items'] ) ) {
foreach ( $col_data['items'] as $item ) {
$return .= '<div class="widget" title="' . esc_attr( $item['title'] ) . '" id="' . esc_attr( $item['id'] ) . '" data-type="' . esc_attr( $item['type'] ) . '" data-id="' . esc_attr( $item['id'] ) . '">';
$return .= ' <div class="widget-top">';
$return .= ' <div class="widget-title">';
$return .= ' <h4>' . esc_html( $item['title'] ) . '</h4>';
$return .= ' <span class="widget-desc">' . esc_html( $item['description'] ) . '</span>';
$return .= ' </div>';
$return .= ' <div class="widget-title-action">';
$return .= ' <a class="widget-option widget-action" title="' . esc_attr( __( 'Edit', 'megamenu' ) ) . '"></a>';
$return .= ' </div>';
$return .= ' </div>';
$return .= ' <div class="widget-inner widget-inside"></div>';
$return .= '</div>';
}
}
$return .= ' </div>';
$return .= ' </div>';
$return .= '</div>';
return $return;
}
/**
* Return the HTML for the standard (non grid) mega menu builder
*
* @return string
*/
public function get_megamenu_html( $menu_item_id, $menu_id, $menu_item_depth, $menu_item_meta ) {
$widget_manager = new Mega_Menu_Widget_Manager();
$return = "<div id='widgets' data-columns='{$menu_item_meta['panel_columns']}'>";
$items = $widget_manager->get_widgets_and_menu_items_for_menu_id( $menu_item_id, $menu_id );
if ( count( $items ) ) {
foreach ( $items as $item ) {
$return .= '<div class="widget" title="' . esc_attr( $item['title'] ) . '" id="' . esc_attr( $item['id'] ) . '" data-columns="' . esc_attr( $item['columns'] ) . '" data-type="' . esc_attr( $item['type'] ) . '" data-id="' . esc_attr( $item['id'] ) . '">';
$return .= ' <div class="widget-top">';
$return .= ' <div class="widget-title-action">';
$return .= ' <a class="widget-option widget-contract" title="' . esc_attr( __( 'Contract', 'megamenu' ) ) . '"></a>';
$return .= ' <span class="widget-cols"><span class="widget-num-cols">' . $item['columns'] . '</span><span class="widget-of">/</span><span class="widget-total-cols">' . $menu_item_meta['panel_columns'] . '</span></span>';
$return .= ' <a class="widget-option widget-expand" title="' . esc_attr( __( 'Expand', 'megamenu' ) ) . '"></a>';
$return .= ' <a class="widget-option widget-action" title="' . esc_attr( __( 'Edit', 'megamenu' ) ) . '"></a>';
$return .= ' </div>';
$return .= ' <div class="widget-title">';
$return .= ' <h4>' . esc_html( $item['title'] ) . '</h4>';
$return .= ' </div>';
$return .= ' </div>';
$return .= ' <div class="widget-inner widget-inside"></div>';
$return .= '</div>';
}
} else {
$return .= "<p class='no_widgets'>" . __( 'No widgets found. Add a widget to this area using the Widget Selector (top right)', 'megamenu' ) . '</p>';
}
$return .= '</div>';
return $return;
}
/**
* Return the HTML to display in the 'General Settings' tab
*
* @since 1.7
* @return array
*/
public function add_general_settings_tab( $tabs, $menu_item_id, $menu_id, $menu_item_depth, $menu_item_meta ) {
$return = '<form>';
$return .= ' <input type="hidden" name="menu_item_id" value="' . esc_attr( $menu_item_id ) . '" />';
$return .= ' <input type="hidden" name="action" value="mm_save_menu_item_settings" />';
$return .= ' <input type="hidden" name="_wpnonce" value="' . wp_create_nonce( 'megamenu_edit' ) . '" />';
$return .= ' <input type="hidden" name="tab" value="general_settings" />';
$return .= ' <h4 class="first">' . __( 'Menu Item Settings', 'megamenu' ) . '</h4>';
$return .= ' <table>';
$return .= ' <tr>';
$return .= ' <td class="mega-name">';
$return .= __( 'Hide text', 'megamenu' );
$return .= ' </td>';
$return .= ' <td class="mega-value">';
$return .= ' <input type="checkbox" name="settings[hide_text]" value="true" ' . checked( $menu_item_meta['hide_text'], 'true', false ) . ' />';
$return .= ' </td>';
$return .= ' </tr>';
$return .= ' <tr>';
$return .= ' <td class="mega-name">';
$return .= __( 'Hide arrow', 'megamenu' );
$return .= ' </td>';
$return .= ' <td class="mega-value">';
$return .= ' <input type="checkbox" name="settings[hide_arrow]" value="true" ' . checked( $menu_item_meta['hide_arrow'], 'true', false ) . ' />';
$return .= ' </td>';
$return .= ' </tr>';
$return .= ' <tr>';
$return .= ' <td class="mega-name">';
$return .= __( 'Disable link', 'megamenu' );
$return .= ' </td>';
$return .= ' <td class="mega-value">';
$return .= ' <input type="checkbox" name="settings[disable_link]" value="true" ' . checked( $menu_item_meta['disable_link'], 'true', false ) . ' />';
$return .= ' </td>';
$return .= ' </tr>';
$return .= ' <tr>';
$return .= ' <td class="mega-name">';
$return .= __( 'Hide item on mobile', 'megamenu' );
$return .= ' </td>';
$return .= ' <td class="mega-value">';
$return .= ' <input type="checkbox" name="settings[hide_on_mobile]" value="true" ' . checked( $menu_item_meta['hide_on_mobile'], 'true', false ) . ' />';
$return .= ' </td>';
$return .= ' </tr>';
$return .= ' <tr>';
$return .= ' <td class="mega-name">';
$return .= __( 'Hide item on desktop', 'megamenu' );
$return .= ' </td>';
$return .= ' <td class="mega-value">';
$return .= ' <input type="checkbox" name="settings[hide_on_desktop]" value="true" ' . checked( $menu_item_meta['hide_on_desktop'], 'true', false ) . ' />';
$return .= ' </td>';
$return .= ' </tr>';
$return .= ' <td class="mega-name">';
$return .= __( 'Close sub menu when clicked', 'megamenu' );
$return .= ' </td>';
$return .= ' <td class="mega-value">';
$return .= ' <input type="checkbox" name="settings[close_after_click]" value="true" ' . checked( $menu_item_meta['close_after_click'], 'true', false ) . ' />';
$return .= ' <div class="mega-description">';
$return .= __( 'Intended for use on anchor links (e.g. #about)', 'megamenu' );
$return .= ' </div>'; $return .= ' </td>';
$return .= ' </tr>';
$return .= ' <tr class="mega-menu-item-align">';
$return .= ' <td class="mega-name">';
$return .= __( 'Menu item align', 'megamenu' );
$return .= ' </td>';
$return .= ' <td class="mega-value">';
if ( $menu_item_depth == 0 ) {
$item_align = $menu_item_meta['item_align'];
$float_left_display = $item_align == 'float-left' ? 'block' : 'none';
$left_display = $item_align == 'left' ? 'block' : 'none';
$right_display = $item_align == 'right' ? 'block' : 'none';
$return .= ' <select id="mega-item-align" name="settings[item_align]">';
$return .= ' <option value="float-left" ' . selected( $menu_item_meta['item_align'], 'float-left', false ) . '>' . __( 'Left', 'megamenu' ) . '</option>';
$return .= ' <option value="left" ' . selected( $menu_item_meta['item_align'], 'left', false ) . '>' . __( 'Default', 'megamenu' ) . '</option>';
$return .= ' <option value="right" ' . selected( $menu_item_meta['item_align'], 'right', false ) . '>' . __( 'Right', 'megamenu' ) . '</option>';
$return .= ' </select>';
$return .= ' <div class="mega-description">';
$return .= " <div class='float-left' style='display:{$float_left_display}'></div>";
$return .= " <div class='left' style='display:{$left_display}'>" . __( "Item will be aligned based on the 'Menu Items Align' option set in the Theme Editor", 'megamenu' ) . '</div>';
$return .= " <div class='right' style='display:{$right_display}'>" . __( 'Right aligned items will appear in reverse order on the right hand side of the menu bar', 'megamenu' ) . '</div>';
$return .= ' </div>';
} else {
$return .= '<em>' . __( 'Option only available for top level menu items', 'megamenu' ) . '</em>';
}
$return .= ' </td>';
$return .= ' </tr>';
$return .= ' <tr class="mega-menu-icon-position">';
$return .= ' <td class="mega-name">';
$return .= __( 'Icon position', 'megamenu' );
$return .= ' </td>';
$return .= ' <td class="mega-value">';
$return .= ' <select name="settings[icon_position]">';
$return .= ' <option value="left" ' . selected( $menu_item_meta['icon_position'], 'left', false ) . '>' . __( 'Left', 'megamenu' ) . '</option>';
$return .= ' <option value="top" ' . selected( $menu_item_meta['icon_position'], 'top', false ) . '>' . __( 'Top', 'megamenu' ) . '</option>';
$return .= ' <option value="right" ' . selected( $menu_item_meta['icon_position'], 'right', false ) . '>' . __( 'Right', 'megamenu' ) . '</option>';
$return .= ' </select>';
$return .= ' </td>';
$return .= ' </tr>';
$return .= apply_filters( 'megamenu_after_menu_item_settings', '', $tabs, $menu_item_id, $menu_id, $menu_item_depth, $menu_item_meta );
$return .= ' </table>';
$return .= ' <h4>' . __( 'Sub Menu Settings', 'megamenu' ) . '</h4>';
$return .= ' <table>';
$return .= ' <tr class="mega-sub-menu-align">';
$return .= ' <td class="mega-name">';
$return .= __( 'Sub menu align', 'megamenu' );
$return .= ' </td>';
$return .= ' <td class="mega-value">';
if ( $menu_item_depth == 0 ) {
$return .= ' <select name="settings[align]">';
$return .= ' <option value="bottom-left" ' . selected( $menu_item_meta['align'], 'bottom-left', false ) . '>' . __( 'Left edge of Parent', 'megamenu' ) . '</option>';
$return .= ' <option value="bottom-right" ' . selected( $menu_item_meta['align'], 'bottom-right', false ) . '>' . __( 'Right edge of Parent', 'megamenu' ) . '</option>';
$return .= ' </select>';
$return .= ' <div class="mega-description">';
$return .= __( 'Right aligned flyout menus will expand to the left', 'megamenu' );
$return .= ' </div>';
} else {
$return .= '<em>' . __( 'Option only available for top level menu items', 'megamenu' ) . '</em>';
}
$return .= ' </td>';
$return .= ' </tr>';
$return .= ' <tr>';
$return .= ' <td class="mega-name">';
$return .= __( 'Hide sub menu on mobile', 'megamenu' );
$return .= ' </td>';
$return .= ' <td class="mega-value">';
$return .= ' <input type="checkbox" name="settings[hide_sub_menu_on_mobile]" value="true" ' . checked( $menu_item_meta['hide_sub_menu_on_mobile'], 'true', false ) . ' />';
$return .= ' </td>';
$return .= ' </tr>';
if ( $menu_item_depth > 0 ) {
$css_version = get_transient( 'megamenu_css_version' );
$notice = '';
if ( $css_version && version_compare( $css_version, '2.6.1', '<' ) ) {
$link = "<a href='" . esc_attr( admin_url( 'admin.php?page=maxmegamenu_tools' ) ) . "'>" . __( 'Mega Menu' ) . ' > ' . __( 'Tools' ) . '</a>';
$notice = "<div class='notice notice-success'><p>";
$notice .= sprintf( __( 'Your menu CSS needs to be updated before you can use the following setting. Please go to %s and Clear the CSS Cache (you will only need to do this once).', 'megamenu' ), $link );
$notice .= '</p></div>';
$notice .= '</div><br />';
}
$return .= ' <tr>';
$return .= ' <td class="mega-name">';
$return .= __( 'Collapse sub menu', 'megamenu' );
$return .= ' </td>';
$return .= ' <td class="mega-value">';
$return .= $notice;
$return .= ' <input type="checkbox" name="settings[collapse_children]" value="true" ' . checked( $menu_item_meta['collapse_children'], 'true', false ) . ' />';
$return .= ' <em>' . __( 'Only applies to menu items displayed within mega sub menus.', 'megamenu' ) . '</em>';
$return .= ' </td>';
$return .= ' </tr>';
}
$return .= apply_filters( 'megamenu_after_menu_item_submenu_settings', '', $tabs, $menu_item_id, $menu_id, $menu_item_depth, $menu_item_meta );
$return .= ' </table>';
$return .= get_submit_button();
$return .= '</form>';
$tabs['general_settings'] = array(
'title' => __( 'Settings', 'megamenu' ),
'content' => $return,
);
return $tabs;
}
/**
* Return the HTML to display in the 'menu icon' tab
*
* @since 1.7
* @return array
*/
public function add_icon_tab( $tabs, $menu_item_id, $menu_id, $menu_item_depth, $menu_item_meta ) {
$icon_tabs = array(
'dashicons' => array(
'title' => __( 'Dashicons', 'megamenu' ),
'active' => ! isset( $menu_item_meta['icon'] ) || ( isset( $menu_item_meta['icon'] ) && substr( $menu_item_meta['icon'], 0, strlen( 'dash' ) ) === 'dash' || $menu_item_meta['icon'] == 'disabled' ),
'content' => $this->dashicon_selector(),
),
'fontawesome' => array(
'title' => __( 'Font Awesome', 'megamenu' ),
'active' => false,
'content' => str_replace( '{link}', "<a target='_blank' href='https://www.megamenu.com/upgrade/?utm_source=free&utm_medium=icon&utm_campaign=pro'>" . __( 'Max Mega Menu Pro', 'megamenu' ) . '</a>', __( 'Get access to over 400 Font Awesome Icons with {link}', 'megamenu' ) ),
),
'genericons' => array(
'title' => __( 'Genericons', 'megamenu' ),
'active' => false,
'content' => str_replace( '{link}', "<a target='_blank' href='https://www.megamenu.com/upgrade/?utm_source=free&utm_medium=icon&utm_campaign=pro'>" . __( 'Max Mega Menu Pro', 'megamenu' ) . '</a>', __( 'Choose from over 100 genericons with {link}', 'megamenu' ) ),
),
'custom' => array(
'title' => __( 'Custom Icon', 'megamenu' ),
'active' => false,
'content' => str_replace( '{link}', "<a target='_blank' href='https://www.megamenu.com/upgrade/?utm_source=free&utm_medium=icon&utm_campaign=pro'>" . __( 'Max Mega Menu Pro', 'megamenu' ) . '</a>', __( 'Select icons from your media library with {link}', 'megamenu' ) ),
),
);
$icon_tabs = apply_filters( 'megamenu_icon_tabs', $icon_tabs, $menu_item_id, $menu_id, $menu_item_depth, $menu_item_meta );
$return = "<h4 class='first'>" . __( 'Menu Item Icon', 'megamenu' ) . '</h4>';
$return .= "<ul class='mm_tabs horizontal'>";
foreach ( $icon_tabs as $id => $icon_tab ) {
$active = $icon_tab['active'] || count( $icon_tabs ) === 1 ? 'active' : '';
$return .= "<li rel='mm_tab_{$id}' class='mm_tab_horizontal {$active}'>";
$return .= esc_html( $icon_tab['title'] );
$return .= '</li>';
}
$return .= '</ul>';
$return .= "<input type='text' class='filter_icons' placeholder='" . __( 'Search', 'megamenu' ) . "' /><div class='clear'></div>";
foreach ( $icon_tabs as $id => $icon_tab ) {
$display = $icon_tab['active'] ? 'block' : 'none';
$return .= "<div class='mm_tab_{$id}' style='display: {$display}'>";
$return .= " <form class='icon_selector icon_selector_{$id}'>";
$return .= " <input type='hidden' name='_wpnonce' value='" . wp_create_nonce( 'megamenu_edit' ) . "' />";
$return .= " <input type='hidden' name='menu_item_id' value='" . esc_attr( $menu_item_id ) . "' />";
$return .= " <input type='hidden' name='action' value='mm_save_menu_item_settings' />";
$return .= $icon_tab['content'];
$return .= ' </form>';
$return .= '</div>';
}
$tabs['menu_icon'] = array(
'title' => __( 'Icon', 'megamenu' ),
'content' => $return,
);
return $tabs;
}
/**
* Return the form to select a dashicon
*
* @since 1.5.2
* @return string
*/
private function dashicon_selector() {
$return = "<div class='disabled'><input id='disabled' class='radio' type='radio' rel='disabled' name='settings[icon]' value='disabled' " . checked( $this->menu_item_meta['icon'], 'disabled', false ) . ' />';
$return .= "<label for='disabled'></label></div>";
foreach ( $this->all_icons() as $code => $class ) {
$bits = explode( '-', $code );
$code = '&#x' . $bits[1] . '';
$type = $bits[0];
$return .= "<div class='{$type}'>";
$return .= " <input class='radio' id='{$class}' type='radio' rel='{$code}' name='settings[icon]' value='{$class}' " . checked( $this->menu_item_meta['icon'], $class, false ) . ' />';
$return .= " <label rel='{$code}' for='{$class}' title='{$class}'></label>";
$return .= '</div>';
}
return $return;
}
/**
* List of all available DashIcon classes.
*
* @since 1.0
* @return array - Sorted list of icon classes
*/
public function all_icons() {
$icons = array(
'dash-f333' => 'dashicons-menu',
'dash-f228' => 'dashicons-menu-alt',
'dash-f329' => 'dashicons-menu-alt2',
'dash-f349' => 'dashicons-menu-alt3',
'dash-f319' => 'dashicons-admin-site',
'dash-f11d' => 'dashicons-admin-site-alt',
'dash-f11e' => 'dashicons-admin-site-alt2',
'dash-f11f' => 'dashicons-admin-site-alt3',
'dash-f226' => 'dashicons-dashboard',
'dash-f109' => 'dashicons-admin-post',
'dash-f104' => 'dashicons-admin-media',
'dash-f103' => 'dashicons-admin-links',
'dash-f105' => 'dashicons-admin-page',
'dash-f101' => 'dashicons-admin-comments',
'dash-f100' => 'dashicons-admin-appearance',
'dash-f106' => 'dashicons-admin-plugins',
'dash-f485' => 'dashicons-plugins-checked',
'dash-f110' => 'dashicons-admin-users',
'dash-f107' => 'dashicons-admin-tools',
'dash-f108' => 'dashicons-admin-settings',
'dash-f112' => 'dashicons-admin-network',
'dash-f102' => 'dashicons-admin-home',
'dash-f111' => 'dashicons-admin-generic',
'dash-f148' => 'dashicons-admin-collapse',
'dash-f536' => 'dashicons-filter',
'dash-f540' => 'dashicons-admin-customizer',
'dash-f541' => 'dashicons-admin-multisite',
'dash-f119' => 'dashicons-welcome-write-blog',
'dash-f133' => 'dashicons-welcome-add-page',
'dash-f115' => 'dashicons-welcome-view-site',
'dash-f116' => 'dashicons-welcome-widgets-menus',
'dash-f117' => 'dashicons-welcome-comments',
'dash-f118' => 'dashicons-welcome-learn-more',
'dash-f123' => 'dashicons-format-aside',
'dash-f128' => 'dashicons-format-image',
'dash-f161' => 'dashicons-format-gallery',
'dash-f126' => 'dashicons-format-video',
'dash-f130' => 'dashicons-format-status',
'dash-f122' => 'dashicons-format-quote',
'dash-f125' => 'dashicons-format-chat',
'dash-f127' => 'dashicons-format-audio',
'dash-f306' => 'dashicons-camera',
'dash-f129' => 'dashicons-camera-alt',
'dash-f232' => 'dashicons-images-alt',
'dash-f233' => 'dashicons-images-alt2',
'dash-f234' => 'dashicons-video-alt',
'dash-f235' => 'dashicons-video-alt2',
'dash-f236' => 'dashicons-video-alt3',
'dash-f501' => 'dashicons-media-archive',
'dash-f500' => 'dashicons-media-audio',
'dash-f499' => 'dashicons-media-code',
'dash-f498' => 'dashicons-media-default',
'dash-f497' => 'dashicons-media-document',
'dash-f496' => 'dashicons-media-interactive',
'dash-f495' => 'dashicons-media-spreadsheet',
'dash-f491' => 'dashicons-media-text',
'dash-f490' => 'dashicons-media-video',
'dash-f492' => 'dashicons-playlist-audio',
'dash-f493' => 'dashicons-playlist-video',
'dash-f522' => 'dashicons-controls-play',
'dash-f523' => 'dashicons-controls-pause',
'dash-f519' => 'dashicons-controls-forward',
'dash-f517' => 'dashicons-controls-skipforward',
'dash-f518' => 'dashicons-controls-back',
'dash-f516' => 'dashicons-controls-skipback',
'dash-f515' => 'dashicons-controls-repeat',
'dash-f521' => 'dashicons-controls-volumeon',
'dash-f520' => 'dashicons-controls-volumeoff',
'dash-f165' => 'dashicons-image-crop',
'dash-f531' => 'dashicons-image-rotate',
'dash-f166' => 'dashicons-image-rotate-left',
'dash-f167' => 'dashicons-image-rotate-right',
'dash-f168' => 'dashicons-image-flip-vertical',
'dash-f169' => 'dashicons-image-flip-horizontal',
'dash-f533' => 'dashicons-image-filter',
'dash-f171' => 'dashicons-undo',
'dash-f172' => 'dashicons-redo',
'dash-f170' => 'dashicons-database-add',
'dash-f17e' => 'dashicons-database',
'dash-f17a' => 'dashicons-database-export',
'dash-f17b' => 'dashicons-database-import',
'dash-f17c' => 'dashicons-database-remove',
'dash-f17d' => 'dashicons-database-view',
'dash-f134' => 'dashicons-align-full-width',
'dash-f10a' => 'dashicons-align-pull-left',
'dash-f10b' => 'dashicons-align-pull-right',
'dash-f11b' => 'dashicons-align-wide',
'dash-f12b' => 'dashicons-block-default',
'dash-f11a' => 'dashicons-button',
'dash-f137' => 'dashicons-cloud-saved',
'dash-f13b' => 'dashicons-cloud-upload',
'dash-f13c' => 'dashicons-columns',
'dash-f13d' => 'dashicons-cover-image',
'dash-f11c' => 'dashicons-ellipsis',
'dash-f13e' => 'dashicons-embed-audio',
'dash-f13f' => 'dashicons-embed-generic',
'dash-f144' => 'dashicons-embed-photo',
'dash-f146' => 'dashicons-embed-post',
'dash-f149' => 'dashicons-embed-video',
'dash-f14a' => 'dashicons-exit',
'dash-f10e' => 'dashicons-heading',
'dash-f14b' => 'dashicons-html',
'dash-f14c' => 'dashicons-info-outline',
'dash-f10f' => 'dashicons-insert',
'dash-f14d' => 'dashicons-insert-after',
'dash-f14e' => 'dashicons-insert-before',
'dash-f14f' => 'dashicons-remove',
'dash-f15e' => 'dashicons-saved',
'dash-f150' => 'dashicons-shortcode',
'dash-f151' => 'dashicons-table-col-after',
'dash-f152' => 'dashicons-table-col-before',
'dash-f15a' => 'dashicons-table-col-delete',
'dash-f15b' => 'dashicons-table-row-after',
'dash-f15c' => 'dashicons-table-row-before',
'dash-f15d' => 'dashicons-table-row-delete',
'dash-f200' => 'dashicons-editor-bold',
'dash-f201' => 'dashicons-editor-italic',
'dash-f203' => 'dashicons-editor-ul',
'dash-f204' => 'dashicons-editor-ol',
'dash-f12c' => 'dashicons-editor-ol-rtl',
'dash-f205' => 'dashicons-editor-quote',
'dash-f206' => 'dashicons-editor-alignleft',
'dash-f207' => 'dashicons-editor-aligncenter',
'dash-f208' => 'dashicons-editor-alignright',
'dash-f209' => 'dashicons-editor-insertmore',
'dash-f210' => 'dashicons-editor-spellcheck',
'dash-f211' => 'dashicons-editor-expand',
'dash-f506' => 'dashicons-editor-contract',
'dash-f212' => 'dashicons-editor-kitchensink',
'dash-f213' => 'dashicons-editor-underline',
'dash-f214' => 'dashicons-editor-justify',
'dash-f215' => 'dashicons-editor-textcolor',
'dash-f216' => 'dashicons-editor-paste-word',
'dash-f217' => 'dashicons-editor-paste-text',
'dash-f218' => 'dashicons-editor-removeformatting',
'dash-f219' => 'dashicons-editor-video',
'dash-f220' => 'dashicons-editor-customchar',
'dash-f221' => 'dashicons-editor-outdent',
'dash-f222' => 'dashicons-editor-indent',
'dash-f223' => 'dashicons-editor-help',
'dash-f224' => 'dashicons-editor-strikethrough',
'dash-f225' => 'dashicons-editor-unlink',
'dash-f320' => 'dashicons-editor-rtl',
'dash-f10c' => 'dashicons-editor-ltr',
'dash-f474' => 'dashicons-editor-break',
'dash-f475' => 'dashicons-editor-code',
'dash-f476' => 'dashicons-editor-paragraph',
'dash-f535' => 'dashicons-editor-table',
'dash-f135' => 'dashicons-align-left',
'dash-f136' => 'dashicons-align-right',
'dash-f134' => 'dashicons-align-center',
'dash-f138' => 'dashicons-align-none',
'dash-f160' => 'dashicons-lock',
'dash-f528' => 'dashicons-unlock',
'dash-f145' => 'dashicons-calendar',
'dash-f508' => 'dashicons-calendar-alt',
'dash-f177' => 'dashicons-visibility',
'dash-f530' => 'dashicons-hidden',
'dash-f173' => 'dashicons-post-status',
'dash-f464' => 'dashicons-edit',
'dash-f182' => 'dashicons-trash',
'dash-f537' => 'dashicons-sticky',
'dash-f504' => 'dashicons-external',
'dash-f142' => 'dashicons-arrow-up',
'dash-f140' => 'dashicons-arrow-down',
'dash-f139' => 'dashicons-arrow-right',
'dash-f141' => 'dashicons-arrow-left',
'dash-f342' => 'dashicons-arrow-up-alt',
'dash-f346' => 'dashicons-arrow-down-alt',
'dash-f344' => 'dashicons-arrow-right-alt',
'dash-f340' => 'dashicons-arrow-left-alt',
'dash-f343' => 'dashicons-arrow-up-alt2',
'dash-f347' => 'dashicons-arrow-down-alt2',
'dash-f345' => 'dashicons-arrow-right-alt2',
'dash-f341' => 'dashicons-arrow-left-alt2',
'dash-f156' => 'dashicons-sort',
'dash-f229' => 'dashicons-leftright',
'dash-f503' => 'dashicons-randomize',
'dash-f163' => 'dashicons-list-view',
'dash-f164' => 'dashicons-excerpt-view',
'dash-f509' => 'dashicons-grid-view',
'dash-f545' => 'dashicons-move',
'dash-f237' => 'dashicons-share',
'dash-f240' => 'dashicons-share-alt',
'dash-f242' => 'dashicons-share-alt2',
'dash-f303' => 'dashicons-rss',
'dash-f465' => 'dashicons-email',
'dash-f466' => 'dashicons-email-alt',
'dash-f467' => 'dashicons-email-alt2',
'dash-f325' => 'dashicons-networking',
'dash-f162' => 'dashicons-amazon',
'dash-f304' => 'dashicons-facebook',
'dash-f305' => 'dashicons-facebook-alt',
'dash-f18b' => 'dashicons-google',
'dash-f462' => 'dashicons-googleplus',
'dash-f12d' => 'dashicons-instagram',
'dash-f18d' => 'dashicons-linkedin',
'dash-f192' => 'dashicons-pinterest',
'dash-f19c' => 'dashicons-podio',
'dash-f195' => 'dashicons-reddit',
'dash-f196' => 'dashicons-spotify',
'dash-f199' => 'dashicons-twitch',
'dash-f301' => 'dashicons-twitter',
'dash-f302' => 'dashicons-twitter-alt',
'dash-f19a' => 'dashicons-whatsapp',
'dash-f19d' => 'dashicons-xing',
'dash-f19b' => 'dashicons-youtube',
'dash-f308' => 'dashicons-hammer',
'dash-f309' => 'dashicons-art',
'dash-f310' => 'dashicons-migrate',
'dash-f311' => 'dashicons-performance',
'dash-f483' => 'dashicons-universal-access',
'dash-f507' => 'dashicons-universal-access-alt',
'dash-f486' => 'dashicons-tickets',
'dash-f484' => 'dashicons-nametag',
'dash-f481' => 'dashicons-clipboard',
'dash-f487' => 'dashicons-heart',
'dash-f488' => 'dashicons-megaphone',
'dash-f489' => 'dashicons-schedule',
'dash-f10d' => 'dashicons-tide',
'dash-f124' => 'dashicons-rest-api',
'dash-f13a' => 'dashicons-code-standards',
'dash-f452' => 'dashicons-buddicons-activity',
'dash-f477' => 'dashicons-buddicons-bbpress-logo',
'dash-f448' => 'dashicons-buddicons-buddypress-logo',
'dash-f453' => 'dashicons-buddicons-community',
'dash-f449' => 'dashicons-buddicons-forums',
'dash-f454' => 'dashicons-buddicons-friends',
'dash-f456' => 'dashicons-buddicons-groups',
'dash-f457' => 'dashicons-buddicons-pm',
'dash-f451' => 'dashicons-buddicons-replies',
'dash-f450' => 'dashicons-buddicons-topics',
'dash-f455' => 'dashicons-buddicons-tracking',
'dash-f120' => 'dashicons-wordpress',
'dash-f324' => 'dashicons-wordpress-alt',
'dash-f157' => 'dashicons-pressthis',
'dash-f463' => 'dashicons-update',
'dash-f113' => 'dashicons-update-alt',
'dash-f180' => 'dashicons-screenoptions',
'dash-f348' => 'dashicons-info',
'dash-f174' => 'dashicons-cart',
'dash-f175' => 'dashicons-feedback',
'dash-f176' => 'dashicons-cloud',
'dash-f326' => 'dashicons-translation',
'dash-f323' => 'dashicons-tag',
'dash-f318' => 'dashicons-category',
'dash-f480' => 'dashicons-archive',
'dash-f479' => 'dashicons-tagcloud',
'dash-f478' => 'dashicons-text',
'dash-f16d' => 'dashicons-bell',
'dash-f147' => 'dashicons-yes',
'dash-f12a' => 'dashicons-yes-alt',
'dash-f158' => 'dashicons-no',
'dash-f335' => 'dashicons-no-alt',
'dash-f132' => 'dashicons-plus',
'dash-f502' => 'dashicons-plus-alt',
'dash-f543' => 'dashicons-plus-alt2',
'dash-f460' => 'dashicons-minus',
'dash-f153' => 'dashicons-dismiss',
'dash-f159' => 'dashicons-marker',
'dash-f155' => 'dashicons-star-filled',
'dash-f459' => 'dashicons-star-half',
'dash-f154' => 'dashicons-star-empty',
'dash-f227' => 'dashicons-flag',
'dash-f534' => 'dashicons-warning',
'dash-f230' => 'dashicons-location',
'dash-f231' => 'dashicons-location-alt',
'dash-f178' => 'dashicons-vault',
'dash-f332' => 'dashicons-shield',
'dash-f334' => 'dashicons-shield-alt',
'dash-f468' => 'dashicons-sos',
'dash-f179' => 'dashicons-search',
'dash-f181' => 'dashicons-slides',
'dash-f121' => 'dashicons-text-page',
'dash-f183' => 'dashicons-analytics',
'dash-f184' => 'dashicons-chart-pie',
'dash-f185' => 'dashicons-chart-bar',
'dash-f238' => 'dashicons-chart-line',
'dash-f239' => 'dashicons-chart-area',
'dash-f307' => 'dashicons-groups',
'dash-f338' => 'dashicons-businessman',
'dash-f12f' => 'dashicons-businesswoman',
'dash-f12e' => 'dashicons-businessperson',
'dash-f336' => 'dashicons-id',
'dash-f337' => 'dashicons-id-alt',
'dash-f312' => 'dashicons-products',
'dash-f313' => 'dashicons-awards',
'dash-f314' => 'dashicons-forms',
'dash-f473' => 'dashicons-testimonial',
'dash-f322' => 'dashicons-portfolio',
'dash-f330' => 'dashicons-book',
'dash-f331' => 'dashicons-book-alt',
'dash-f316' => 'dashicons-download',
'dash-f317' => 'dashicons-upload',
'dash-f321' => 'dashicons-backup',
'dash-f469' => 'dashicons-clock',
'dash-f339' => 'dashicons-lightbulb',
'dash-f482' => 'dashicons-microphone',
'dash-f472' => 'dashicons-desktop',
'dash-f547' => 'dashicons-laptop',
'dash-f471' => 'dashicons-tablet',
'dash-f470' => 'dashicons-smartphone',
'dash-f525' => 'dashicons-phone',
'dash-f510' => 'dashicons-index-card',
'dash-f511' => 'dashicons-carrot',
'dash-f512' => 'dashicons-building',
'dash-f513' => 'dashicons-store',
'dash-f514' => 'dashicons-album',
'dash-f527' => 'dashicons-palmtree',
'dash-f524' => 'dashicons-tickets-alt',
'dash-f526' => 'dashicons-money',
'dash-f18e' => 'dashicons-money-alt',
'dash-f328' => 'dashicons-smiley',
'dash-f529' => 'dashicons-thumbs-up',
'dash-f542' => 'dashicons-thumbs-down',
'dash-f538' => 'dashicons-layout',
'dash-f546' => 'dashicons-paperclip',
'dash-f131' => 'dashicons-color-picker',
'dash-f327' => 'dashicons-edit-large',
'dash-f186' => 'dashicons-edit-page',
'dash-f15f' => 'dashicons-airplane',
'dash-f16a' => 'dashicons-bank',
'dash-f16c' => 'dashicons-beer',
'dash-f16e' => 'dashicons-calculator',
'dash-f16b' => 'dashicons-car',
'dash-f16f' => 'dashicons-coffee',
'dash-f17f' => 'dashicons-drumstick',
'dash-f187' => 'dashicons-food',
'dash-f188' => 'dashicons-fullscreen-alt',
'dash-f189' => 'dashicons-fullscreen-exit-alt',
'dash-f18a' => 'dashicons-games',
'dash-f18c' => 'dashicons-hourglass',
'dash-f18f' => 'dashicons-open-folder',
'dash-f190' => 'dashicons-pdf',
'dash-f191' => 'dashicons-pets',
'dash-f193' => 'dashicons-printer',
'dash-f194' => 'dashicons-privacy',
'dash-f198' => 'dashicons-superhero',
'dash-f197' => 'dashicons-superhero-alt',
);
$icons = apply_filters( 'megamenu_dashicons', $icons );
ksort( $icons );
return $icons;
}
}
endif;