WordPress.org

Make WordPress Core

Ticket #21603: 21603.3.diff

File 21603.3.diff, 7.6 KB (added by maxpertici, 7 months ago)
  • src/js/_enqueues/lib/nav-menu.js

    diff --git a/src/js/_enqueues/lib/nav-menu.js b/src/js/_enqueues/lib/nav-menu.js
    index d3b9663487..aa8a276683 100644
    a b  
    4444                        this.jQueryExtensions();
    4545
    4646                        this.attachMenuEditListeners();
     47                       
     48                        this.attachBulkSelectButtonListeners();
     49                        this.attachCancelBulkSelectButtonListeners();
     50                        this.attachMenuCheckBoxListeners();
    4751
    4852                        this.attachQuickSearchListeners();
    4953                        this.attachThemeLocationsListeners();
     
    862866                        });
    863867                },
    864868
     869                attachCancelBulkSelectButtonListeners : function() {
     870                        var that = this;
     871                       
     872                        $('.cancel-bulk-select').on( 'click', function(e){
     873                                e.preventDefault();
     874                                that.disableBulkSelection();
     875                        });
     876
     877                },
     878
     879                attachBulkSelectButtonListeners : function() {
     880                        var that = this;
     881                       
     882                        $('.enable-bulk-select').on( 'click', function(e){
     883                                e.preventDefault();
     884                                that.enableBulkSelection();
     885                        });
     886
     887                },
     888
     889                enableBulkSelection : function(){
     890                        $('#menu-to-edit').addClass('bulk-selection');
     891                        $('#nav-menu-bulk-actions').addClass('bulk-selection');
     892                       
     893                        $('.enable-bulk-select').prop('disabled',true);
     894                        $('.cancel-bulk-select').prop('disabled',false);
     895
     896                        var checkbox = $('#menu-to-edit .menu-item-checkbox');
     897                        $.each( checkbox, function(){
     898                                $(this).prop('disabled',false);
     899                        });
     900                },
     901
     902                disableBulkSelection : function(){
     903                        $('#menu-to-edit').removeClass('bulk-selection');
     904                        $('#nav-menu-bulk-actions').removeClass('bulk-selection');
     905                       
     906                        $('.enable-bulk-select').prop('disabled',false);
     907                        $('.cancel-bulk-select').prop('disabled',true);
     908
     909                        var checkbox = $('#menu-to-edit .menu-item-checkbox');
     910                        $.each( checkbox, function(){
     911                                $(this).prop('disabled',true).prop('checked',false);
     912                        });
     913                        $('.menu-items-delete').addClass('disabled');
     914                },
     915               
     916
     917                attachMenuCheckBoxListeners : function() {
     918                        var that = this;
     919                               
     920                        $( '#menu-to-edit' ).on( 'change','.menu-item-checkbox', function(){
     921                        that.setRemoveSelectedButtonStatus();
     922                        });
     923                               
     924                        $( document ).on('click', '.menu-items-delete', function(e){
     925                        e.preventDefault();
     926
     927                                if( ! $(this).hasClass('disabled') ){
     928                                        $.each( $('.menu-item-checkbox:checked'), function( index, element) {
     929                                                $( element ).parents( 'li' ).find( 'a.item-delete' ).trigger( 'click' );
     930                                        });
     931
     932                                        $('.menu-items-delete').addClass('disabled');
     933                                        $('input.cancel-bulk-select').trigger('click');
     934                                }
     935                        });
     936                },
     937
     938                setBulkDeleteCheckboxStatus : function(){
     939
     940                        var that = this;
     941                        var checkbox = $('#menu-to-edit .menu-item-checkbox');
     942
     943                        $.each( checkbox, function(){
     944                               
     945                                if( $(this).prop('disabled') == true ){
     946                                        $(this).prop( 'disabled', false );
     947                                }else{
     948                                        $(this).prop( 'disabled', true );
     949                                }
     950
     951                                if( $(this).is(':checked')) {
     952                                        $(this).prop('checked',false);
     953                                }
     954                        });
     955
     956                        that.setRemoveSelectedButtonStatus();
     957
     958                },
     959
     960                setRemoveSelectedButtonStatus : function(){
     961                       
     962                        var button = $('.menu-items-delete');
     963
     964                        if( $('.menu-item-checkbox:checked').length > 0 ) {
     965                                $('.menu-items-delete').removeClass('disabled');
     966                        }else{
     967                                $('.menu-items-delete').addClass('disabled');
     968                        }
     969                },
     970                               
     971                oveSelectedButtonStatus : function(){
     972                        var button = $('.menu-items-delete');
     973                        if( $('.menu-item-checkbox:checked').length > 0 ) {
     974                        button.prop('disabled', false);
     975                        }else{
     976                        button.prop('disabled', true);
     977                        }
     978                },
     979               
    865980                attachMenuSaveSubmitListeners : function() {
    866981                        /*
    867982                         * When a navigation menu is saved, store a JSON representation of all form data
  • src/wp-admin/css/common.css

    diff --git a/src/wp-admin/css/common.css b/src/wp-admin/css/common.css
    index 0848c93615..d0d624a784 100644
    a b hr { 
    878878#media-items a.delete,
    879879#media-items a.delete-permanently,
    880880#nav-menu-footer .menu-delete,
     881#nav-menu-bulk-actions input.menu-items-delete,
    881882#delete-link a.delete {
    882883        color: #b32d2e;
    883884}
    span.required, 
    895896#media-items a.delete:hover,
    896897#media-items a.delete-permanently:hover,
    897898#nav-menu-footer .menu-delete:hover,
     899#nav-menu-bulk-actions input.menu-items-delete:hover,
    898900#delete-link a.delete:hover {
    899901        color: #b32d2e;
    900902        border: none;
  • src/wp-admin/css/nav-menus.css

    diff --git a/src/wp-admin/css/nav-menus.css b/src/wp-admin/css/nav-menus.css
    index 971cae4381..8b4fdcd933 100644
    a b ul.add-menu-item-tabs li { 
    9797        margin: 1em 0 10px;
    9898}
    9999
     100#nav-menu-bulk-actions {
     101        margin-top: 2em;
     102}
     103
     104#nav-menu-bulk-actions input.button {
     105        margin-right: 12px;
     106}
     107
     108#nav-menu-bulk-actions input.cancel-bulk-select,
     109#nav-menu-bulk-actions input.menu-items-delete {
     110        display: none;
     111}
     112
     113#nav-menu-bulk-actions.bulk-selection  input.cancel-bulk-select,
     114#nav-menu-bulk-actions.bulk-selection  input.menu-items-delete {
     115        display: inline-block;
     116}
     117
     118#nav-menu-bulk-actions input.menu-items-delete {
     119        -webkit-appearance: none;
     120        -moz-appearance: none;
     121        appearance: none;
     122        font-size: inherit;
     123        border: 0;
     124        line-height: 2.1em;
     125        background: none;
     126        cursor: pointer;
     127        text-decoration: underline;
     128}
     129
     130#nav-menu-bulk-actions input.menu-items-delete.disabled {
     131        cursor: default;
     132        color: #a7aaad;
     133        box-shadow: none;
     134}
     135
     136#nav-menu-bulk-actions.bulk-selection input.enable-bulk-select {
     137        display: none;
     138}
     139
    100140.menu-settings {
    101141        border-top: 1px solid #f0f0f1;
    102142        margin-top: 2em;
    ul.add-menu-item-tabs li { 
    481521        margin-right: 13em;
    482522}
    483523
     524.menu-item-handle input[type=checkbox] {
     525        display: none;
     526}
     527
     528.bulk-selection .menu-item-handle input[type=checkbox] {
     529        display: inline-block;
     530}
     531
    484532.menu-item-handle .menu-item-title.no-title {
    485533        color: #646970;
    486534}
  • src/wp-admin/includes/class-walker-nav-menu-edit.php

    diff --git a/src/wp-admin/includes/class-walker-nav-menu-edit.php b/src/wp-admin/includes/class-walker-nav-menu-edit.php
    index 39835e091c..56f606d82e 100644
    a b class Walker_Nav_Menu_Edit extends Walker_Nav_Menu { 
    118118                <li id="menu-item-<?php echo $item_id; ?>" class="<?php echo implode( ' ', $classes ); ?>">
    119119                        <div class="menu-item-bar">
    120120                                <div class="menu-item-handle">
    121                                         <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>
     121                                        <span class="item-title"><input type="checkbox" class="menu-item-checkbox" disabled="disabled"/><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>
    122122                                        <span class="item-controls">
    123123                                                <span class="item-type"><?php echo esc_html( $item->type_label ); ?></span>
    124124                                                <span class="item-order hide-if-js">
  • src/wp-admin/nav-menus.php

    diff --git a/src/wp-admin/nav-menus.php b/src/wp-admin/nav-menus.php
    index f224964553..ccf8c6483a 100644
    a b require_once ABSPATH . 'wp-admin/admin-header.php'; 
    10131013                                                                $no_menus_style = 'style="display: none;"';
    10141014                                                        }
    10151015                                                        ?>
     1016                                                        <div id="nav-menu-bulk-actions" class="bulk-actions">
     1017                                                                <input type="button" class="button enable-bulk-select" value="<?php echo __( 'Bulk Select' ) ; ?>">
     1018                                                                <input type="button" class="button cancel-bulk-select" value="<?php echo __( 'Cancel Selection' ) ; ?>">
     1019                                                                <input type="button" class="deletion menu-items-delete disabled" value="<?php echo __( 'Remove Selected Items' ) ; ?>">
     1020                                                        </div>
    10161021                                                        <div class="menu-settings" <?php echo $no_menus_style; ?>>
    10171022                                                                <h3><?php _e( 'Menu Settings' ); ?></h3>
    10181023                                                                <?php