WordPress.org

Make WordPress Core

Ticket #28842: 28842.3.diff

File 28842.3.diff, 5.4 KB (added by ericlewis, 5 years ago)
  • src/wp-includes/css/media-views.css

    diff --git a/src/wp-includes/css/media-views.css b/src/wp-includes/css/media-views.css
    index 0f57613..58f8b3f 100644
    a b video#inline-media-node { 
    26012601        margin-top: 0;
    26022602}
    26032603
     2604.media-grid-view .attachments-browser .bulk-select {
     2605        display: inline-block;
     2606}
     2607
    26042608/**
    26052609 * Copied styles from the Add theme toolbar.
    26062610 *
    video#inline-media-node { 
    26442648        margin: 0 20px 0 0;
    26452649}
    26462650
    2647 .media-grid-view select.attachment-filters {
     2651.media-grid-view select {
    26482652        margin: 0 10px 0 0;
    26492653}
    26502654
  • src/wp-includes/js/media-grid.js

    diff --git a/src/wp-includes/js/media-grid.js b/src/wp-includes/js/media-grid.js
    index 3521bbc..760beb2 100644
    a b  
    638638                }
    639639        });
    640640
    641         media.view.BulkSelectionToggleButton = media.view.Button.extend({
     641        media.view.BulkSelection = media.View.extend({
     642                className: 'bulk-select',
     643
     644                initialize: function() {
     645                        this.model = new Backbone.Model({
     646                                currentAction: '',
     647
     648                        });
     649
     650                        this.views.add(
     651                                new media.view.BulkSelectionActionDropdown({
     652                                        controller: this
     653                                })
     654                        );
     655
     656                        this.views.add(
     657                                new media.view.BulkSelectionActionButton({
     658                                        disabled:   true,
     659                                        text:       l10n.apply,
     660                                        controller: this
     661                                })
     662                        );
     663                }
     664        });
     665
     666        media.view.BulkSelectionActionDropdown = media.View.extend({
     667                tagName:   'select',
     668
    642669                initialize: function() {
    643670                        media.view.Button.prototype.initialize.apply( this, arguments );
    644                         this.listenTo( this.controller, 'bulk-edit:activate bulk-edit:deactivate', _.bind( this.toggleBulkEditHandler, this ) );
     671                        this.listenTo( this.controller.controller.state().get( 'selection' ), 'add remove reset', _.bind( this.enabled, this ) );
     672                        this.$el.append( $('<option></option>').val( '' ).html( l10n.bulkActions ) )
     673                                .append( $('<option></option>').val( 'delete' ).html( l10n.deletePermanently ) );
     674                        this.$el.prop( 'disabled', true );
     675                        this.$el.on( 'change', _.bind( this.toggleChange, this ) );
     676                },
     677
     678                toggleChange: function() {
     679                        this.controller.model.set( { 'currentAction': this.$el.val() } );
    645680                },
    646681
    647682                click: function() {
     
    655690                        }
    656691                },
    657692
    658                 toggleBulkEditHandler: function() {
    659                         var bulkEditActive = this.controller.activeModes.where( { id: 'bulk-edit' } ).length;
    660                         if ( bulkEditActive ) {
    661                                 this.$el.addClass( 'button-primary' );
    662                         } else {
    663                                 this.$el.removeClass( 'button-primary' );
    664                                 this.controller.state().get('selection').reset();
    665                         }
     693                enabled: function() {
     694                        var disabled = ! this.controller.controller.state().get('selection').length;
     695                        this.$el.prop( 'disabled', disabled );
    666696                }
    667697        });
    668698
    669         media.view.BulkDeleteButton = media.view.Button.extend({
     699        media.view.BulkSelectionActionButton = media.view.Button.extend({
     700                tagName: 'button',
     701
    670702                initialize: function() {
    671703                        media.view.Button.prototype.initialize.apply( this, arguments );
    672                         this.$el.hide();
    673                         this.listenTo( this.controller, 'bulk-edit:activate bulk-edit:deactivate', _.bind( this.visibility, this ) );
     704
     705                        this.listenTo( this.controller.model, 'change', this.enabled, this );
    674706                },
    675707
    676708                click: function() {
     709                        var selection = this.controller.controller.state().get('selection');
    677710                        media.view.Button.prototype.click.apply( this, arguments );
    678                         while (this.controller.state().get('selection').length > 0) {
    679                                 this.controller.state().get('selection').at(0).destroy();
     711                        while ( selection.length > 0) {
     712                                selection.at(0).destroy();
    680713                        }
     714                        this.enabled();
    681715                },
    682716
    683                 visibility: function() {
    684                         var bulkEditActive = this.controller.activeModes.where( { id: 'bulk-edit' } ).length;
    685                         if ( bulkEditActive ) {
    686                                 this.$el.show();
    687                         } else {
    688                                 this.$el.hide();
    689                         }
     717                enabled: function() {
     718                        var currentAction = this.controller.model.get( 'currentAction' ),
     719                                selection = this.controller.controller.state().get('selection'),
     720                                disabled = ! currentAction || ! selection.length;
     721                        this.$el.prop( 'disabled', disabled );
    690722                }
    691723        });
    692724
  • src/wp-includes/js/media-views.js

    diff --git a/src/wp-includes/js/media-views.js b/src/wp-includes/js/media-views.js
    index 0f3246e..0f089b1 100644
    a b  
    56575657                                        priority: -90
    56585658                                }).render() );
    56595659
    5660                                 this.toolbar.set( 'bulkSelectionToggleButton', new media.view.BulkSelectionToggleButton({
    5661                                         text: 'Bulk Edit',
     5660                                this.toolbar.set( 'BulkSelection', new media.view.BulkSelection({
    56625661                                        controller: this.controller,
    56635662                                        priority: -70
    56645663                                }).render() );
    5665 
    5666                                 this.toolbar.set( 'BulkDeleteButton', new media.view.BulkDeleteButton({
    5667                                         text: 'Bulk Delete',
    5668                                         controller: this.controller,
    5669                                         priority: -69
    5670                                 }).render() );
    56715664                        }
    56725665
    56735666                        filters = this.options.filters;
  • src/wp-includes/media.php

    diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php
    index a7000b8..f8b9d00 100644
    a b function wp_enqueue_media( $args = array() ) { 
    29082908                'insertIntoPost'     => $hier ? __( 'Insert into page' ) : __( 'Insert into post' ),
    29092909                'uploadedToThisPost' => $hier ? __( 'Uploaded to this page' ) : __( 'Uploaded to this post' ),
    29102910                'warnDelete' =>      __( "You are about to permanently delete this item.\n  'Cancel' to stop, 'OK' to delete." ),
     2911                'bulkActions' =>       __( 'Bulk Actions' ),
     2912                'deletePermanently' => __( 'Delete Permanently' ),
     2913                'apply'             => __( 'Apply' ),
     2914
    29112915
    29122916                // From URL
    29132917                'insertFromUrlTitle' => __( 'Insert from URL' ),