PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/myvideomania.com/wp-content/plugins/post-and-page-builder/includes/Widget/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //home/trave494/myvideomania.com/wp-content/plugins/post-and-page-builder/includes/Widget/Menu.php |
<?php /** * File: Menu.php * * Create a menu component widget. * * @since 1.14.0 * @package Boldgrid_Components * @subpackage Boldgrid_Components_Shortcode * @author BoldGrid <support@boldgrid.com> * @link https://boldgrid.com */ namespace Boldgrid\PPB\Widget; /** * Class: Menu * * Create a menu component widget. * * @since 1.14.0 */ class Menu extends \WP_Widget { /** * Default widget wrappers. * * @since 1.14.0 * @var array */ public static $widgetArgs = array( 'before_title' => '', 'after_title' => '', 'before_widget' => '<div class="widget">', 'after_widget' => '</div>', 'bgc_menu' => 0, ); /** * Default values. * * @since 1.14.0 * @var array Default values. */ public $defaults = [ ]; /** * Widget Id * * @since 1.14.0 * @var string */ public $widget_id; /** * Setup the widget configurations. * * @since 1.14.0 */ public function __construct() { parent::__construct( 'boldgrid_component_menu', __( 'Navigation Menu', 'boldgrid-editor' ), array( 'classname' => 'bgc-menu', 'description' => __( 'A customizable menu for use in Crio Premium Header Templates.', 'boldgrid-editor' ), ) ); } /** * Update a widget with a new configuration. * * @since 1.14.0 * * @param array $new_instance New instance configuration. * @param array $old_instance Old instance configuration. * @return array Updated instance config. */ public function update( $new_instance, $old_instance ) { $instance = $new_instance; return $instance; } /** * Render a widget. * * @since 1.14.0 * * @param array $args General widget configurations. * @param array $instance Widget instance arguments. */ public function widget( $args, $instance ) { $class = 'sm bgc-header-template-menu color3-border-color'; $menu_direction = isset( $instance['bgc_menu_direction'] ) ? $instance['bgc_menu_direction'] : ''; $menu_direction = 'flex-column' === $menu_direction ? $menu_direction . ' sm-vertical' : 'flex-row'; $menu_id = isset( $instance['bgc_menu'] ) && 0 !== (int) $instance['bgc_menu'] ? (int) $instance['bgc_menu'] : null; $bgc_menu_align = isset( $instance[ 'bgc_menu_align' ] ) ? $instance[ 'bgc_menu_align' ] : 'c c'; $align = $this->get_align_class( $bgc_menu_align ); $class .= ' ' . $align; $registered_locations = get_nav_menu_locations(); $this->_register(); if ( isset( $instance['bgc_menu_location'] ) && ! $this->location_is_valid( $instance['bgc_menu_location'] ) ) { ?> <p class="bgc_no_menu_notice"><?php echo __('Menu Location Name can only contain letters, numbers, and spaces.', 'boldgrid-editor' ) ?></p> <?php } else if ( isset( $instance['bgc_menu_location_id'] ) && isset( $menu_id ) ) { $menu_ul_id = str_replace( '_', '-', $instance['bgc_menu_location_id'] ) . '-menu'; $ham_control_id = 'bgtfw_menu_hamburger_display_' . str_replace( '_', '-', $instance['bgc_menu_location_id'] ); $ham_control_id = preg_replace( '/-(\d{3})/', '_$1', $ham_control_id ); $ham_class = implode( ' ', get_theme_mod( $ham_control_id, array( 'ham-phone', 'ham-tablet' ) ) ); $class .= ' ' . $ham_class; echo '<div id="' . $instance['bgc_menu_location_id'] . '-wrap" class="bgtfw-menu-wrap ' . $ham_class . ' ' . $align . '">'; // Make sure that if there is a registerd location already, that it is used. $menu_id = isset( $registered_locations[ $instance['bgc_menu_location_id'] ] ) && 0 !== $registered_locations[ $instance['bgc_menu_location_id'] ] ? $registered_locations[ $instance['bgc_menu_location_id'] ] : $menu_id; do_action( 'boldgrid_menu_' . $instance['bgc_menu_location_id'], array( 'menu_class' => $menu_direction . ' ' . $class, 'menu' => $menu_id, 'menu_id' => $menu_ul_id ) ); echo '</div>'; } else if ( isset( $instance['bgc_menu_location_id'] ) && isset( $registered_locations[ $instance['bgc_menu_location_id'] ] ) ) { $menu_ul_id = str_replace( '_', '-', $instance['bgc_menu_location_id'] ) . '-menu'; $ham_control_id = 'bgtfw_menu_hamburger_display_' . str_replace( '_', '-', $instance['bgc_menu_location_id'] ); $ham_control_id = preg_replace( '/-(\d{3})/', '_$1', $ham_control_id ); $ham_class = implode( ' ', get_theme_mod( $ham_control_id, array( 'ham-phone', 'ham-tablet' ) ) ); $class .= ' ' . $ham_class; echo '<div id="' . $instance['bgc_menu_location_id'] . '-wrap" class="bgtfw-menu-wrap ' . $ham_class . '">'; $menu_id = $registered_locations[ $instance['bgc_menu_location_id'] ]; do_action( 'boldgrid_menu_' . $instance['bgc_menu_location_id'], array( 'menu_class' => $menu_direction . ' ' . $class, 'menu' => $menu_id, 'menu_id' => $menu_ul_id ) ); echo '</div>'; } else if ( isset( $instance['bgc_menu_location_id'] ) ) { ?> <p class="bgc_no_menu_notice"><?php echo __('You must choose a menu to display in this location', 'boldgrid-editor' ) ?></p> <?php } else { ?> <p class="bgc_no_menu_notice"><?php echo __('You must register a menu location for this component to render', 'boldgrid-editor' ) ?></p> <?php } } /** * Location is Valid * * Validates location id to be sure it contains * alphanumeric characters only. * * @since 1.14.0 * * @param string $id Location ID to validate * * @return bool True if valid, False if not. */ public function location_is_valid( $id ) { if ( preg_match( '/^[a-z\s0-9][a-z\s0-9]*$/i', $id ) ) { return true; } else { return false; } } /** * Get Alignment Class * * This takes the alignment information passed from the form * and converts it into a usable class name for bgtfw. * * @since 1.14.0 * * @param string $align_value Value passed from form. * @return string Alignment class. */ public function get_align_class( $align_value ) { $align_class = 'c'; switch ( $align_value ) { case ( 'left' ): $align_class = 'w'; break; case ( 'right' ): $align_class = 'e'; break; default: $align_class = 'c'; break; } return $align_class; } /** * Get Unique Id. * * @since 1.14.0 * * @return string Unique ID for this nav menu. */ public function get_unique_id() { $referer = wp_get_referer(); $matches = array(); preg_match( '/post=(\d+)/', $referer, $matches ); $page_header = get_post( $matches[1] ); $header_name = $page_header->post_name; if ( ! empty( $page_header ) ) { return uniqid( $header_name . '-menu_' ); } else { return ''; } } /** * Print Menu Registration Controls * * @since 1.14.0 * * @param array $instance Widget instance configs. */ public function menu_registration_controls( $instance ) { $registered_locations = get_nav_menu_locations(); $location_managed_elsewhere = false; if ( isset( $instance ['bgc_menu_location'] ) ) { $location_managed_elsewhere = isset( $registered_locations[ $instance['bgc_menu_location_id'] ] ); } if ( isset( $instance['bgc_menu'] ) ) { $instance['bgc_menu'] = $location_managed_elsewhere ? $registered_locations[ $instance['bgc_menu_location_id'] ] : $instance['bgc_menu']; } else { $instance['bgc_menu'] = $location_managed_elsewhere ? $registered_locations[ $instance['bgc_menu_location_id'] ] : 0; } ?> <div class="bgc_menu_registration_container"> <h4><?php _e( 'Register this Menu Location', 'boldgrid-editor' ); ?></h4> <p><?php _e( 'In order to customize this menu, a menu location must be registered. To do so, you must enter a location name and click "Register this Menu Location"', 'boldgrid-editor' ); ?></p> <p class="invalid_characters" style="display:none" ><?php _e( 'Menu Location Name can only contain letters, numbers, and spaces', 'boldgrid-editor' ); ?></p> <input type="text" required class="bgc_menu_location" id="<?php echo $this->get_field_id( 'bgc_menu_location' ); ?>" name="<?php echo $this->get_field_name( 'bgc_menu_location' ); ?>" value="<?php echo isset( $instance['bgc_menu_location'] ) ? $instance['bgc_menu_location'] : '' ?>" > <p> <span class="hidden register_menu_nonce"><?php echo wp_create_nonce( 'crio_premium_register_menu_location' ); ?></span> <button class="button bgc_register_location"><?php _e( 'Register Menu Location', 'boldgrid-editor' ) ?></button> <span class="spinner" style="float: none"></span> <input id="<?php echo $this->get_field_id( 'bgc_menu_location_id' ) ?>" type="hidden" required class="bgc_menu_location_id" id="<?php echo $this->get_field_id( 'bgc_menu_location_id' ); ?>" name="<?php echo $this->get_field_name( 'bgc_menu_location_id' ); ?>" value="<?php echo isset( $instance['bgc_menu_location_id'] ) ? $instance['bgc_menu_location_id'] : '' ?>" > </p> <h4><?php _e( 'Select a menu:', 'boldgrid-editor' ) ?></h4> <p class="<?php echo ( $location_managed_elsewhere ) ? 'menu_location_notice' : 'menu_location_notice hidden'; ?>"> <?php esc_html_e( 'A menu has been assigned to this location elsewhere. ', 'boldgrid-editor' ); ?> <a class="button bgc_goto_menu_assignment" href="<?php echo admin_url( 'nav-menus.php?action=locations'); ?>"><?php esc_html_e( 'Go To Menu Assignment', 'boldgrid-editor' ); ?></a> </p> <p> <select id="<?php echo $this->get_field_id( 'bgc_menu' ); ?>" class="bgc_menu" name="<?php echo $this->get_field_name( 'bgc_menu' ); ?>" <?php echo ( $location_managed_elsewhere ) ? 'disabled' : ''; ?>> <option value="0">Select a Menu</option> <?php foreach ( wp_get_nav_menus() as $menu ) { $selected = ( ! empty( $instance['bgc_menu'] ) && $menu->term_id === (int) $instance['bgc_menu'] ) ? 'selected' : ''; echo '<option value="' . $menu->term_id . '" ' . $selected . '>' . $menu->name . '</option>'; } ?> </select> <?php if ( 0 === count( wp_get_nav_menus() ) ) { ?> <a class="button" href="<?php echo admin_url( 'nav-menus.php' ) ?>"><?php esc_html_e( 'Create a Menu', 'boldgrid-editor' ); ?></a> <?php } ?> </p> </div> <?php } /** * Print Menu Alignment Controls * * @since 1.14.0 * * @param array $instance Widget instance configs. */ public function menu_alignment_controls( $instance ) { $field_name = $this->get_field_name( 'bgc_menu_align' ); $selected_align = ! empty( $instance['bgc_menu_align'] ) ? $instance['bgc_menu_align'] : 'center'; ?> <div class="bgc_menu_container"> <h4><?php _e( 'Choose Menu Alignment', 'boldgrid-editor' ); ?></h4> <div class="buttonset bgc"> <input class="switch-input screen-reader-text bgc" type="radio" value="left" name="<?php echo $field_name; ?>" id="<?php echo $this->get_field_id( 'bgc_menu_align_left' ); ?>" <?php echo 'left' === $selected_align ? 'checked' : '';?> > <label class="switch-label switch-label-on " for="<?php echo $this->get_field_id( 'bgc_menu_align_left' ); ?>"><span class="dashicons dashicons-editor-alignleft"></span>Left</label> <input class="switch-input screen-reader-text bgc" type="radio" value="center" name="<?php echo $field_name; ?>" id="<?php echo $this->get_field_id( 'bgc_menu_align_center' ); ?>" <?php echo 'center' === $selected_align ? 'checked' : '';?> > <label class="switch-label switch-label-off bgc" for="<?php echo $this->get_field_id( 'bgc_menu_align_center' ); ?>"><span class="dashicons dashicons-editor-aligncenter"></span>Center</label> <input class="switch-input screen-reader-text bgc" type="radio" value="right" name="<?php echo $field_name; ?>" id="<?php echo $this->get_field_id( 'bgc_menu_align_right' ); ?>" <?php echo 'right' === $selected_align ? 'checked' : '';?> > <label class="switch-label switch-label-off bgc" for="<?php echo $this->get_field_id( 'bgc_menu_align_right' ); ?>"><span class="dashicons dashicons-editor-alignright"></span>Right</label> </div> </div> <?php } /** * Print Menu Alignment Controls * * @since 1.15.1 * * @param array $instance Widget instance configs. */ public function menu_direction_controls( $instance ) { $field_name = $this->get_field_name( 'bgc_menu_direction' ); $selected_direction = ! empty( $instance['bgc_menu_direction'] ) ? $instance['bgc_menu_direction'] : 'horizontal'; ?> <div class="bgc_menu_direction_container"> <h4><?php _e( 'Choose Menu Direction', 'boldgrid-editor' ); ?></h4> <div class="buttonset bgc"> <input class="switch-input screen-reader-text bgc" type="radio" value="flex-row" name="<?php echo $field_name; ?>" id="<?php echo $this->get_field_id( 'bgc_menu_direction_horizontal' ); ?>" <?php echo 'flex-row' === $selected_direction ? 'checked' : ''; ?> > <label class="switch-label switch-label-off bgc" for="<?php echo $this->get_field_id( 'bgc_menu_direction_horizontal' ); ?>"><span class="dashicons dashicons-leftright"></span>Horizontal</label> <input class="switch-input screen-reader-text bgc" type="radio" value="flex-column" name="<?php echo $field_name; ?>" id="<?php echo $this->get_field_id( 'bgc_menu_direction_vertical' ); ?>" <?php echo 'flex-column' === $selected_direction ? 'checked' : ''; ?> > <label class="switch-label switch-label-off bgc" for="<?php echo $this->get_field_id( 'bgc_menu_direction_vertical' ); ?>"><span class="dashicons dashicons-leftright"></span>Vertical</label> </div> </div> <?php } /** * Print Customizer Button. * * @since 1.14.0 * * @param array $instance An array of widget coni */ public function print_customizer_button( $instance ) { ?> <div class="bgc_menu_container"> <h4><?php _e( 'Additional Customization', 'boldgrid-editor' ); ?></h4> <p><?php _e( 'There are additional customization options available for this menu in the Customizer.', 'boldgrid-editor' ); ?></p> <button class="button bgc_goto_customizer" data-panel="headings" data-customize="<?php echo admin_url( '/customize.php' ); ?>"><?php _e( 'Go To Customizer', 'boldgrid-editor' ); ?></button> </div> <?php } /** * Print Return to Editor Button. * * @since 1.14.0 * * @param array $instance An array of widget coni */ public function return_to_editor( $instance ) { ?> <div class="bgc_menu_container"> <h4><?php _e( 'What\'s Next?', 'boldgrid-editor' ); ?></h4> <p><?php _e( 'If you wish to continue editing your header layout, that can be done within the editor.', 'boldgrid-editor' ); ?></p> <button class="button bgc_return_to_editor" data-customize="<?php echo admin_url( '/customize.php' ); ?>"><?php _e( 'Return to Editor', 'boldgrid-editor' ); ?></button> </div> <?php } /** * Print form styles * * @since 1.14.0 */ public function print_form_styles() { ?> <style> .bgc.buttonset { display: flex; flex-wrap: wrap; } .bgc.buttonset .switch-label { background: rgba(0, 0, 0, 0.1); border: 1px rgba(0, 0, 0, 0.1); color: #555d66; margin: 0; text-align: center; padding: 0.5em 1em; flex-grow: 1; display: -ms-flexbox; display: flex; -ms-flex-align: center; align-items: center; -ms-flex-pack: center; justify-content: center; justify-items: center; -ms-flex-line-pack: center; align-content: center; cursor: pointer; } .bgc.buttonset .switch-input:checked + .switch-label { background-color: #00a0d2; color: rgba(255, 255, 255, 0.8); } </style> <?php } /** * Print form to adjust menu configs. * * @since 1.0.0 * * @param array $instance Widget instance configs. */ public function form( $instance ) { $this->menu_registration_controls( $instance ); $this->menu_alignment_controls( $instance ); $this->menu_direction_controls( $instance ); $this->print_customizer_button( $instance ); $this->return_to_editor( $instance ); $this->print_form_styles( $instance ); } }