WordPress.org

Make WordPress Core

Changeset 29811


Ignore:
Timestamp:
10/02/2014 04:12:01 AM (5 years ago)
Author:
wonderboymusic
Message:

Media Grid/List Table parity: when MEDIA_TRASH is true and trash is the current filter for the grid, add a second bulk action button: "Delete Selected"

Fixes #29742.

Location:
trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/css/media.css

    r29687 r29811  
    586586}
    587587
    588 .attachments-browser .media-toolbar-secondary > .select-mode-toggle-button {
     588.attachments-browser .media-toolbar-secondary > .media-button {
    589589    margin-right: 10px;
    590590}
  • trunk/src/wp-includes/js/media-grid.js

    r29777 r29811  
    631631            children = toolbar.$( '.media-toolbar-secondary > *, .media-toolbar-primary > *');
    632632
     633            // TODO: the Frame should be doing all of this.
    633634            if ( this.controller.isModeActive( 'select' ) ) {
    634635                this.model.set( 'text', l10n.cancelSelection );
    635                 children.not( '.delete-selected-button' ).hide();
    636                 toolbar.$( '.select-mode-toggle-button' ).show();
     636                children.not( '.media-button' ).hide();
     637                this.$el.show();
    637638                toolbar.$( '.delete-selected-button' ).removeClass( 'hidden' );
    638639            } else {
    639640                this.model.set( 'text', l10n.bulkSelect );
    640                 this.controller.content.get().$el.removeClass('fixed');
    641                 toolbar.$el.css('width', '');
     641                this.controller.content.get().$el.removeClass( 'fixed' );
     642                toolbar.$el.css( 'width', '' );
    642643                toolbar.$( '.delete-selected-button' ).addClass( 'hidden' );
    643                 children.not( '.spinner, .delete-selected-button' ).show();
     644                children.not( '.spinner, .media-button' ).show();
    644645                this.controller.state().get( 'selection' ).reset();
    645646            }
     
    647648    });
    648649
     650    /**
     651     * A button that handles bulk Delete/Trash logic
     652     *
     653     * @constructor
     654     * @augments wp.media.view.Button
     655     * @augments wp.media.View
     656     * @augments wp.Backbone.View
     657     * @augments Backbone.View
     658     */
    649659    media.view.DeleteSelectedButton = media.view.Button.extend({
    650660        initialize: function() {
     
    677687                this.$el.addClass( 'delete-selected-button hidden' );
    678688            }
     689            this.toggleDisabled();
     690            return this;
     691        }
     692    });
     693
     694    /**
     695     * When MEDIA_TRASH is true, a button that handles bulk Delete Permanently logic
     696     *
     697     * @constructor
     698     * @augments wp.media.view.DeleteSelectedButton
     699     * @augments wp.media.view.Button
     700     * @augments wp.media.View
     701     * @augments wp.Backbone.View
     702     * @augments Backbone.View
     703     */
     704    media.view.DeleteSelectedPermanentlyButton = media.view.DeleteSelectedButton.extend({
     705        initialize: function() {
     706            media.view.DeleteSelectedButton.prototype.initialize.apply( this, arguments );
     707            this.listenTo( this.controller, 'select:activate', this.selectActivate );
     708            this.listenTo( this.controller, 'select:deactivate', this.selectDeactivate );
     709        },
     710
     711        filterChange: function( model ) {
     712            this.canShow = ( 'trash' === model.get( 'status' ) );
     713        },
     714
     715        selectActivate: function() {
     716            this.toggleDisabled();
     717            this.$el.toggleClass( 'hidden', ! this.canShow );
     718        },
     719
     720        selectDeactivate: function() {
     721            this.toggleDisabled();
     722            this.$el.addClass( 'hidden' );
     723        },
     724
     725        render: function() {
     726            media.view.Button.prototype.render.apply( this, arguments );
     727            this.selectActivate();
    679728            return this;
    680729        }
  • trunk/src/wp-includes/js/media-views.js

    r29755 r29811  
    60806080                    }
    60816081                }).render() );
     6082
     6083                if ( media.view.settings.mediaTrash ) {
     6084                    this.toolbar.set( 'deleteSelectedPermanentlyButton', new media.view.DeleteSelectedPermanentlyButton({
     6085                        filters: Filters,
     6086                        style: 'primary',
     6087                        disabled: true,
     6088                        text: l10n.deleteSelected,
     6089                        controller: this.controller,
     6090                        priority: -55,
     6091                        click: function() {
     6092                            var removed = [], selection = this.controller.state().get( 'selection' );
     6093
     6094                            if ( ! selection.length ) {
     6095                                return;
     6096                            }
     6097
     6098                            if ( ! confirm( l10n.warnBulkDelete ) ) {
     6099                                return;
     6100                            }
     6101
     6102                            selection.each( function( model ) {
     6103                                if ( ! model.get( 'nonces' )['delete'] ) {
     6104                                    removed.push( model );
     6105                                    return;
     6106                                }
     6107
     6108                                model.destroy();
     6109                            } );
     6110
     6111                            selection.remove( removed );
     6112                            this.controller.trigger( 'selection:action:done' );
     6113                        }
     6114                    }).render() );
     6115                }
     6116
    60826117            }
    60836118
Note: See TracChangeset for help on using the changeset viewer.