]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-includes/js/media-grid.js
WordPress 4.1.1-scripts
[autoinstalls/wordpress.git] / wp-includes / js / media-grid.js
index 043702c35090a0dcd02984376c0126292ef1d2d0..25670e16aee429c14dbacb2893669cae26afd450 100644 (file)
                        media.mixin.removeAllPlayers();
                        this.$( 'audio, video' ).each( function (i, elem) {
                                var el = media.view.MediaDetails.prepareSrc( elem );
-                               new MediaElementPlayer( el, media.mixin.mejsSettings );
+                               setTimeout( function() {
+                                       new MediaElementPlayer( el, media.mixin.mejsSettings );
+                               }, 0 );
                        } );
                }
        });
 
                events: {
                        'click .left':  'previousMediaItem',
-                       'click .right': 'nextMediaItem',
-                       'keydown':      'keyEvent'
+                       'click .right': 'nextMediaItem'
                },
 
                initialize: function() {
                        return ( this.getCurrentIndex() - 1 ) > -1;
                },
                /**
-                * Respond to the keyboard events: right arrow, left arrow, escape.
+                * Respond to the keyboard events: right arrow, left arrow, except when
+                * focus is in a textarea or input field.
                 */
                keyEvent: function( event ) {
-                       if ( 'INPUT' === event.target.tagName && ! ( event.target.readOnly || event.target.disabled ) ) {
+                       if ( ( 'INPUT' === event.target.nodeName || 'TEXTAREA' === event.target.nodeName ) && ! ( event.target.readOnly || event.target.disabled ) ) {
                                return;
                        }
 
 
                        children = toolbar.$( '.media-toolbar-secondary > *, .media-toolbar-primary > *');
 
+                       // TODO: the Frame should be doing all of this.
                        if ( this.controller.isModeActive( 'select' ) ) {
                                this.model.set( 'text', l10n.cancelSelection );
-                               children.not( '.delete-selected-button' ).hide();
-                               toolbar.$( '.select-mode-toggle-button' ).show();
+                               children.not( '.media-button' ).hide();
+                               this.$el.show();
                                toolbar.$( '.delete-selected-button' ).removeClass( 'hidden' );
                        } else {
                                this.model.set( 'text', l10n.bulkSelect );
-                               this.controller.content.get().$el.removeClass('fixed');
-                               toolbar.$el.css('width', '');
+                               this.controller.content.get().$el.removeClass( 'fixed' );
+                               toolbar.$el.css( 'width', '' );
                                toolbar.$( '.delete-selected-button' ).addClass( 'hidden' );
-                               children.not( '.spinner, .delete-selected-button' ).show();
+                               children.not( '.spinner, .media-button' ).show();
                                this.controller.state().get( 'selection' ).reset();
                        }
                }
        });
 
+       /**
+        * A button that handles bulk Delete/Trash logic
+        *
+        * @constructor
+        * @augments wp.media.view.Button
+        * @augments wp.media.View
+        * @augments wp.Backbone.View
+        * @augments Backbone.View
+        */
        media.view.DeleteSelectedButton = media.view.Button.extend({
                initialize: function() {
                        media.view.Button.prototype.initialize.apply( this, arguments );
                        } else {
                                this.$el.addClass( 'delete-selected-button hidden' );
                        }
+                       this.toggleDisabled();
                        return this;
                }
        });
 
        /**
-        * A filter dropdown for month/dates.
+        * When MEDIA_TRASH is true, a button that handles bulk Delete Permanently logic
+        *
+        * @constructor
+        * @augments wp.media.view.DeleteSelectedButton
+        * @augments wp.media.view.Button
+        * @augments wp.media.View
+        * @augments wp.Backbone.View
+        * @augments Backbone.View
         */
-       media.view.DateFilter = media.view.AttachmentFilters.extend({
-               id: 'media-attachment-date-filters',
-
-               createFilters: function() {
-                       var filters = {};
-                       _.each( media.view.settings.months || {}, function( value, index ) {
-                               filters[ index ] = {
-                                       text: value.text,
-                                       props: {
-                                               year: value.year,
-                                               monthnum: value.month
-                                       }
-                               };
-                       });
-                       filters.all = {
-                               text:  l10n.allDates,
-                               props: {
-                                       monthnum: false,
-                                       year:  false
-                               },
-                               priority: 10
-                       };
-                       this.filters = filters;
+       media.view.DeleteSelectedPermanentlyButton = media.view.DeleteSelectedButton.extend({
+               initialize: function() {
+                       media.view.DeleteSelectedButton.prototype.initialize.apply( this, arguments );
+                       this.listenTo( this.controller, 'select:activate', this.selectActivate );
+                       this.listenTo( this.controller, 'select:deactivate', this.selectDeactivate );
+               },
+
+               filterChange: function( model ) {
+                       this.canShow = ( 'trash' === model.get( 'status' ) );
+               },
+
+               selectActivate: function() {
+                       this.toggleDisabled();
+                       this.$el.toggleClass( 'hidden', ! this.canShow );
+               },
+
+               selectDeactivate: function() {
+                       this.toggleDisabled();
+                       this.$el.addClass( 'hidden' );
+               },
+
+               render: function() {
+                       media.view.Button.prototype.render.apply( this, arguments );
+                       this.selectActivate();
+                       return this;
                }
        });