%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/shaban/laviva/wp-content/themes/levelup/inc/nav_menu/
Upload File :
Create Path :
Current File : /var/www/html/shaban/laviva/wp-content/themes/levelup/inc/nav_menu/mega-menu.class.php

<?php


if ( ! class_exists( 'Levelup_Mega_menu', false ) ) {

    class Levelup_Mega_menu {

        public $fat_menu = false;

        function __construct() {

            add_action( 'admin_enqueue_scripts', 	array( $this, 'register_scripts' ) );

            // setup custom menu fields
            add_filter( 'wp_setup_nav_menu_item', array( $this, 'setup_custom_nav_fields' ) );

            // save menu custom fields
            add_action( 'wp_update_nav_menu_item', array( $this, 'update_custom_nav_fields' ), 10, 3 );

            // replace menu walker
            add_filter( 'wp_edit_nav_menu_walker', array( $this, 'replace_walker_class' ), 90, 2 );

            // add menu item custom fields
            add_action( 'wp_nav_menu_item_custom_fields', array( $this, 'wp_nav_menu_item_custom_fields' ), 99, 4 );

            // add admin css
            add_action( 'admin_print_styles-nav-menus.php', array( $this, 'add_admin_menu_inline_css' ), 15 );

            // add some javascript
            add_action( 'admin_print_footer_scripts', array( $this, 'javascript_magic' ), 99 );
        }

        function register_scripts(){
            wp_enqueue_media();
        }

        /**
         * Setup custom menu item fields before output.
         */
        function setup_custom_nav_fields( $menu_item ) {

            // first level
            $menu_item->rdy_mega_menu_enabled = get_post_meta( $menu_item->ID, '_menu_item_rdy_mega_menu_enabled', true );
            $menu_item->rdy_mega_menu_background = get_post_meta( $menu_item->ID, '_menu_item_rdy_mega_menu_background', true );
            $menu_item->rdy_mega_menu_styles = get_post_meta( $menu_item->ID, '_menu_item_rdy_mega_menu_styles', true );

            return $menu_item;
        }

        /**
         * Update custom menu item fields.
         */
        function update_custom_nav_fields( $menu_id, $menu_item_db_id, $args ) {

            // mega menu enabled
            $enable_mega_menu = isset( $_REQUEST['menu-item-rdy-enable-mega-menu'], $_REQUEST['menu-item-rdy-enable-mega-menu'][ $menu_item_db_id ] ) ? 1 : '';
            update_post_meta( $menu_item_db_id, '_menu_item_rdy_mega_menu_enabled', $enable_mega_menu );

            // background
            if ( isset( $_REQUEST['menu-item-rdy-background'] ) && array_key_exists( $menu_item_db_id, $_REQUEST['menu-item-rdy-background'] ) ) {
                $background = $_REQUEST['menu-item-rdy-background'][ $menu_item_db_id ];
                update_post_meta( $menu_item_db_id, '_menu_item_rdy_mega_menu_background', esc_attr( $background ) );
            }
            // styles
            if ( isset( $_REQUEST['menu-item-rdy-mega-menu-styles'] ) && array_key_exists( $menu_item_db_id, $_REQUEST['menu-item-rdy-mega-menu-styles'] ) ) {
                update_post_meta( $menu_item_db_id, '_menu_item_rdy_mega_menu_styles', esc_attr( $_REQUEST['menu-item-rdy-mega-menu-styles'][ $menu_item_db_id ] ) );
            }

        }

        /**
         * Replace Walker_Nav_Menu_Edit with custom one.
         */
        function replace_walker_class( $walker, $menu_id ) {

            if ( 'Walker_Nav_Menu_Edit' == $walker ) {
                $walker = 'Levelup_Edit_Menu_Walker';
            }

            return $walker;
        }

        /**
         * Add custom menu item fields.
         */
        public function wp_nav_menu_item_custom_fields( $item_id, $item, $depth, $args ) {
            // set default item fields
            $default_mega_menu_fields = array(
                'rdy_mega_menu_icon' => 'none',
                'rdy_mega_menu_enabled' => '',
                'rdy_mega_menu_background' => '',
                'rdy_mega_menu_styles' => '',
            );

            // set defaults
            foreach ( $default_mega_menu_fields as $field=>$value ) {
                if ( !isset($item->$field) ) {
                    $item->$field = $value;
                }
            }

            $mega_menu_container_classes = array( 'rdy-mega-menu-feilds' );

            $mega_menu_container_classes = implode( ' ', $mega_menu_container_classes );
            ?>

            <!-- Mega Menu Start -->

            <div class="<?php echo esc_attr( $mega_menu_container_classes ); ?>">

                <!-- first level -->
                <p class="field-rdy-enable-mega-menu">
                    <label for="edit-menu-item-rdy-enable-mega-menu-<?php echo esc_attr( $item_id ); ?>">
                        <input id="edit-menu-item-rdy-enable-mega-menu-<?php echo esc_attr( $item_id ); ?>" type="checkbox" class="menu-item-rdy-enable-mega-menu" name="menu-item-rdy-enable-mega-menu[<?php echo esc_attr( $item_id ); ?>]" <?php checked( $item->rdy_mega_menu_enabled ); ?>/>
                        <?php _ex( 'Enable Mega Menu', 'edit menu walker', 'LEVELUP' ); ?>
                    </label>
                </p>

                <p class="field-rdy-mega-menu-background description description-wide">
                    <a href="#" id="rdy-media-upload-<?php echo esc_attr( $item_id ); ?>" class="rdy-open-media button button-primary rdy-megamenu-upload-background"><?php esc_html_e( 'Set Background Image', 'LEVELUP' ); ?></a>
                    <label for="edit-menu-item-megamenu-background-<?php echo esc_attr( $item_id ); ?>">
                        <input type="hidden" id="edit-menu-item-megamenu-background-<?php echo esc_attr( $item_id ); ?>" class="rdy-new-media-image widefat code edit-menu-item-megamenu-background" name="menu-item-rdy-background[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $item->rdy_mega_menu_background ); ?>" />
                        <img src="<?php echo esc_url( $item->rdy_mega_menu_background ); ?>" id="rdy-media-img-<?php echo esc_attr( $item_id ); ?>" class="rdy-megamenu-background-image" style="<?php echo ( trim( $item->rdy_mega_menu_background ) ) ? 'display: inline;' : '';?>" />
                        <a href="#" id="rdy-media-remove-<?php echo esc_attr( $item_id ); ?>" class="remove-rdy-megamenu-background" style="<?php echo ( trim( $item->rdy_mega_menu_background ) ) ? 'display: inline;' : '';?>">Remove Image</a>
                    </label>
                </p>

                <p class="field-rdy-mega-menu-styles description description-wide">
                    <label for="edit-menu-item-megamenu-styles-<?php echo esc_attr( $item_id ); ?>">
                        <?php esc_html_e( 'Mega Menu Container Styles', 'LEVELUP' ); ?><br />
                        <textarea id="edit-menu-item-megamenu-styles-<?php echo esc_attr( $item_id ); ?>" class="widefat edit-menu-item-megamenu-styles" rows="3" cols="20" name="menu-item-rdy-mega-menu-styles[<?php echo esc_attr( $item_id ); ?>]"><?php echo esc_html( $item->rdy_mega_menu_styles ); ?></textarea>
                        <span class="description"><?php esc_html_e('This option will allow you add custom styles (background position, background repeat,..) to your mega menu main container.', 'LEVELUP'); ?></span>
                    </label>
                </p>

            </div>

            <!-- Mega Menu End -->

        <?php
        }


        function add_admin_menu_inline_css() {
            $css = '
				.menu.ui-sortable .rdy-mega-menu-feilds p,
				.menu.ui-sortable .rdy-mega-menu-feilds .field-rdy-image,
				.menu.ui-sortable .custom-widget
				{
					display: none;
				}

				.menu.ui-sortable .menu-item-depth-0 .rdy-mega-menu-feilds .field-rdy-enable-mega-menu,
				.menu.ui-sortable .rdy-mega-menu-feilds .field-rdy-icon,
				.menu.ui-sortable .rdy-mega-menu-feilds.field-rdy-mega-menu-image-icon .field-rdy-image,
				.menu.ui-sortable .rdy-mega-menu-feilds.field-rdy-mega-menu-iconfont-icon .field-rdy-iconfont {
					display: block;
				}

				.menu.ui-sortable .menu-item-depth-0.field-rdy-mega-menu-enabled .rdy-mega-menu-feilds .field-rdy-mega-menu-background,
				.menu.ui-sortable .menu-item-depth-0.field-rdy-mega-menu-enabled .rdy-mega-menu-feilds .field-rdy-mega-menu-styles,
				.menu.ui-sortable .menu-item-depth-1.field-rdy-mega-menu-enabled .custom-widget,
                .menu.ui-sortable .menu-item-depth-2.field-rdy-mega-menu-enabled .custom-widget {
					display: block;
				}
				.field-rdy-mega-menu-background img {
                    max-width: 300px;
                }

                .field-rdy-mega-menu-background .rdy-open-media {
                    margin-bottom: 10px;
                }

			';
            wp_add_inline_style( 'wp-admin', $css );
        }


        function javascript_magic() {
            ?>
            <script type="text/javascript">
                jQuery(function($){

                    var rdy_fat_menu = {
                        reTimeout: false,

                        recalc : function() {
                            $menuItems = jQuery('.menu-item', '#menu-to-edit');

                            $menuItems.each( function(i) {
                                var $item = jQuery(this),
                                    $checkbox = jQuery('.menu-item-rdy-enable-mega-menu', this);

                                if ( $item.is('.menu-item-depth-0') ) {
                                    if ( $checkbox.is(':checked') ) {
                                        $item.addClass('field-rdy-mega-menu-enabled');
                                    }

                                } else {

                                    var checkItem = $menuItems.filter(':eq('+(i-1)+')');
                                    if ( checkItem.is('.field-rdy-mega-menu-enabled') ) {
                                        $item.addClass('field-rdy-mega-menu-enabled');
                                        $checkbox.attr('checked','checked');
                                    } else {
                                        $item.removeClass('field-rdy-mega-menu-enabled');
                                        $checkbox.attr('checked','');
                                    }

                                }

                            });

                        },

                        binds: function() {

                            jQuery('#menu-to-edit').on('click', '.menu-item-rdy-enable-mega-menu', function(event) {
                                var $checkbox = jQuery(this),
                                    $container = $checkbox.parents('.menu-item:eq(0)');

                                if ( $checkbox.is(':checked') ) {
                                    $container.addClass('field-rdy-mega-menu-enabled');
                                } else {
                                    $container.removeClass('field-rdy-mega-menu-enabled');
                                }

                                rdy_fat_menu.recalc();

                                return true;
                            });

                            jQuery('#menu-to-edit').on('change', '.field-rdy-icon input[type="radio"]', function(event){
                                var $this = jQuery(this),
                                    $parentContainer = $this.parents('.rdy-mega-menu-feilds');

                                switch( $this.val() ) {
                                    case 'iconfont': $parentContainer.addClass('field-rdy-mega-menu-iconfont-icon').removeClass('field-rdy-mega-menu-image-icon'); break;
                                    default: $parentContainer.removeClass('field-rdy-mega-menu-iconfont-icon field-rdy-mega-menu-image-icon');
                                }

                                return true;
                            });

                        },

                        init: function() {
                            rdy_fat_menu.binds();
                            rdy_fat_menu.recalc();

                            jQuery( ".menu-item-bar" ).live( "mouseup", function(event, ui) {
                                if ( !jQuery(event.target).is('a') ) {
                                    clearTimeout(rdy_fat_menu.reTimeout);
                                    rdy_fat_menu.reTimeout = setTimeout(rdy_fat_menu.recalc, 700);
                                }
                            });
                        }

                    };

                    rdy_fat_menu.init();


                    $.fn.manage_thumbnail_display = function( variables ) {
                        var button_id;

                        return this.click( function( e ){
                            e.preventDefault();

                            button_id = this.id.replace( 'rdy-media-remove-', '' );
                            $( '#edit-menu-item-megamenu-background-'+button_id ).val( '' );
                            $( '#rdy-media-img-'+button_id ).attr( 'src', '' ).css( 'display', 'none' );
                        });
                    };

                    $(document).ready(function () {

                        $( '.remove-rdy-megamenu-background' ).manage_thumbnail_display();
                        $( '.rdy-megamenu-background-image' ).css( 'display', 'block' );
                        $( ".rdy-megamenu-background-image[src='']" ).css( 'display', 'none' );
                        rdy_media_frame_setup();

                    });


                    function rdy_media_frame_setup() {
                        var RdyMediaFrame;
                        var item_id;

                        $( document.body ).on( 'click.rdyOpenMediaManager', '.rdy-open-media', function(e){

                            e.preventDefault();

                            item_id = this.id.replace('rdy-media-upload-', '');

                            if ( RdyMediaFrame ) {
                                RdyMediaFrame.open();
                                return;
                            }

                            RdyMediaFrame = wp.media.frames.RdyMediaFrame = wp.media({
                                className: 'media-frame rdy-media-frame',
                                frame: 'select',
                                multiple: false,
                                library: {
                                    type: 'image'
                                }
                            });

                            RdyMediaFrame.on('select', function(){

                                var media_attachment = RdyMediaFrame.state().get('selection').first().toJSON();
                                console.log('select:'+media_attachment.url);
                                $( '#edit-menu-item-megamenu-background-'+item_id ).val( media_attachment.url );
                                $( '#rdy-media-img-'+item_id ).attr( 'src', media_attachment.url ).css( 'display', 'block' );

                            });

                            RdyMediaFrame.open();
                        });

                    }

                });
            </script>
            <?php
        }

    }

}

Zerion Mini Shell 1.0