diff --git a/src/wp-includes/js/media-views.js b/src/wp-includes/js/media-views.js index 3be94766f9..3655c0337d 100644 --- a/src/wp-includes/js/media-views.js +++ b/src/wp-includes/js/media-views.js @@ -6029,7 +6029,7 @@ controller: this.controller, priority: -60, click: function() { - var model, changed = [], self = this, + var changed = [], removed = [], self = this, selection = this.controller.state().get( 'selection' ), library = this.controller.state().get( 'library' ); @@ -6048,22 +6048,28 @@ return; } - while ( selection.length > 0 ) { - model = selection.at( 0 ); + selection.each( function( model ) { + if ( ! model.get( 'nonces' )['delete'] ) { + removed.push( model ); + return; + } + if ( media.view.settings.mediaTrash && 'trash' === model.get( 'status' ) ) { model.set( 'status', 'inherit' ); changed.push( model.save() ); - selection.remove( model ); + removed.push( model ); } else if ( media.view.settings.mediaTrash ) { model.set( 'status', 'trash' ); changed.push( model.save() ); - selection.remove( model ); + removed.push( model ); } else { model.destroy(); } - } + } ); if ( changed.length ) { + selection.remove( removed ); + $.when.apply( null, changed ).then( function() { library._requery( true ); self.controller.trigger( 'selection:action:done' );