WordPress.org

Make WordPress Core

Ticket #21603: 21603.2.diff

File 21603.2.diff, 4.0 KB (added by welcher, 2 years ago)

Alternate approach using a checkbox and dedicated button

  • src/wp-admin/includes/class-walker-nav-menu-edit.php

    diff --git src/wp-admin/includes/class-walker-nav-menu-edit.php src/wp-admin/includes/class-walker-nav-menu-edit.php
    index 1f68576..9b0338c 100644
    class Walker_Nav_Menu_Edit extends Walker_Nav_Menu { 
    113113                <li id="menu-item-<?php echo $item_id; ?>" class="<?php echo implode(' ', $classes ); ?>">
    114114                        <div class="menu-item-bar">
    115115                                <div class="menu-item-handle">
    116                                         <span class="item-title"><span class="menu-item-title"><?php echo esc_html( $title ); ?></span> <span class="is-submenu" <?php echo $submenu_text; ?>><?php _e( 'sub item' ); ?></span></span>
     116                                        <span class="item-title"><input type="checkbox" class="menu-item-checkbox"/><span class="menu-item-title"><?php echo esc_html( $title ); ?></span> <span class="is-submenu" <?php echo $submenu_text; ?>><?php _e( 'sub item' ); ?></span></span>
    117117                                        <span class="item-controls">
    118118                                                <span class="item-type"><?php echo esc_html( $item->type_label ); ?></span>
    119119                                                <span class="item-order hide-if-js">
  • src/wp-admin/js/nav-menu.js

    diff --git src/wp-admin/js/nav-menu.js src/wp-admin/js/nav-menu.js
    index bcce09a..463c8e2 100644
    var wpNavMenu; 
    4040                        this.jQueryExtensions();
    4141
    4242                        this.attachMenuEditListeners();
     43                        this.attachMenuCheckBoxListeners();
    4344
    4445                        this.attachQuickSearchListeners();
    4546                        this.attachThemeLocationsListeners();
    var wpNavMenu; 
    840841                        });
    841842                },
    842843
     844                attachMenuCheckBoxListeners: function() {
     845                        var that = this;
     846
     847                        $( '#menu-to-edit' ).on( 'change','.menu-item-checkbox', function(){
     848                                that.setRemoveSelectedButtonStatus();
     849                        });
     850
     851                        $( document ).on('click', '.remove-checked-menu-items', function(e){
     852                                e.preventDefault();
     853                                $.each( $('.menu-item-checkbox:checked'), function( index, element) {
     854                                        $( element ).parents( 'li' ).find( 'a.item-delete' ).trigger( 'click' );
     855                                });
     856                                $('.remove-checked-menu-items').prop('disabled', true);
     857                        });
     858                },
     859
     860                setRemoveSelectedButtonStatus : function(){
     861                        var button = $('.remove-checked-menu-items');
     862                        if( $('.menu-item-checkbox:checked').length > 0 ) {
     863                                button.prop('disabled', false);
     864                        }else{
     865                                button.prop('disabled', true);
     866                        }
     867                },
     868
    843869                attachMenuSaveSubmitListeners : function() {
    844870                        /*
    845871                         * When a navigation menu is saved, store a JSON representation of all form data
  • src/wp-admin/nav-menus.php

    diff --git src/wp-admin/nav-menus.php src/wp-admin/nav-menus.php
    index d8fc77f..ab1ff8f 100644
    require_once( ABSPATH . 'wp-admin/admin-header.php' ); 
    762762                                                        <label class="menu-name-label" for="menu-name"><?php _e( 'Menu Name' ); ?></label>
    763763                                                        <input name="menu-name" id="menu-name" type="text" class="menu-name regular-text menu-item-textbox" <?php echo $menu_name_val . $menu_name_aria_desc; ?> />
    764764                                                        <div class="publishing-action">
     765                                                                <?php submit_button( __( 'Remove Selected Items' ), 'button remove-checked-menu-items', '', false, array( 'disabled' => 'disabled' ) ); ?>
    765766                                                                <?php submit_button( empty( $nav_menu_selected_id ) ? __( 'Create Menu' ) : __( 'Save Menu' ), 'primary large menu-save', 'save_menu', false, array( 'id' => 'save_menu_header' ) ); ?>
    766767                                                        </div><!-- END .publishing-action -->
    767768                                                </div><!-- END .major-publishing-actions -->
    require_once( ABSPATH . 'wp-admin/admin-header.php' ); 
    841842                                                        </span><!-- END .delete-action -->
    842843                                                        <?php endif; ?>
    843844                                                        <div class="publishing-action">
     845                                                                <?php submit_button( __( 'Remove Selected Items' ), 'button remove-checked-menu-items', '', false, array( 'disabled' => 'disabled' ) ); ?>
    844846                                                                <?php submit_button( empty( $nav_menu_selected_id ) ? __( 'Create Menu' ) : __( 'Save Menu' ), 'primary large menu-save', 'save_menu', false, array( 'id' => 'save_menu_footer' ) ); ?>
    845847                                                        </div><!-- END .publishing-action -->
    846848                                                </div><!-- END .major-publishing-actions -->