Make WordPress Core

Changeset 22363


Ignore:
Timestamp:
11/05/2012 02:43:47 AM (14 years ago)
Author:
koopersmith
Message:

Media: Show an inline uploader when the media library is empty.

Merges most of wp.media.controller.Upload into wp.media.controller.Library, so we always create an inline uploader instead of an attachments browser if the state's library is empty.

props rzen, fixes #22323, see #21390.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/js/media-views.js

    r22362 r22363  
    192192                        this.get('selection').on( 'selection:single', this.buildDetails, this );
    193193                        this.get('selection').on( 'selection:unsingle', this.clearDetails, this );
     194
     195                        this._updateEmpty();
     196                        this.get('library').on( 'add remove reset', this._updateEmpty, this );
     197                        this.on( 'change:empty', this.refresh, this );
     198                        this.refresh();
    194199                },
    195200
     
    203208                        this.get('selection').off( 'selection:single', this.buildDetails, this );
    204209                        this.get('selection').off( 'selection:unsingle', this.clearDetails, this );
     210                        this.get('library').off( 'add remove reset', this._updateEmpty, this );
     211                        this.off( 'change:empty', this.refresh, this );
    205212                },
    206213
     
    231238
    232239                content: function() {
    233                         var frame = this.frame;
     240                        var frame = this.frame,
     241                                library = this.get('library'),
     242                                view;
    234243
    235244                        // Content.
    236                         frame.content( new media.view.AttachmentsBrowser({
    237                                 controller: frame,
    238                                 collection: this.get('library'),
    239                                 model:      this
    240                         }).render() );
     245                        if ( this.get('empty') ) {
     246                                // Attempt to fetch any Attachments we don't already have.
     247                                library.more();
     248
     249                                // In the meantime, render an inline uploader.
     250                                view = new media.view.UploaderInline({
     251                                        controller: frame
     252                                });
     253                        } else {
     254                                // Browse our library of attachments.
     255                                view = new media.view.AttachmentsBrowser({
     256                                        controller: frame,
     257                                        collection: library,
     258                                        model:      this
     259                                });
     260                        }
     261
     262                        frame.content( view.render() );
     263                },
     264
     265                refresh: function() {
     266                        this.frame.$el.toggleClass( 'hide-sidebar hide-toolbar', this.get('empty') );
     267                        this.content();
     268                },
     269
     270                _updateEmpty: function() {
     271                        this.set( 'empty', ! this.get('library').length );
    241272                },
    242273
     
    310341
    311342                        media.controller.Library.prototype.initialize.apply( this, arguments );
    312                 },
    313 
    314                 activate: function() {
    315                         this.get('library').on( 'add remove reset', this.refresh, this );
    316                         media.controller.Library.prototype.activate.apply( this, arguments );
    317                         this.refresh();
    318                 },
    319 
    320                 deactivate: function() {
    321                         this.get('library').off( 'add remove reset', this.refresh, this );
    322                         media.controller.Library.prototype.deactivate.apply( this, arguments );
    323                 },
    324 
    325                 refresh: function() {
    326                         this.frame.$el.toggleClass( 'hide-sidebar hide-toolbar', ! this.get('library').length );
    327                         this.content();
    328                 },
    329 
    330                 content: function() {
    331                         var frame = this.frame,
    332                                 upload;
    333 
    334                         if ( this.get('library').length ) {
    335                                 media.controller.Library.prototype.content.apply( this, arguments );
    336                         } else {
    337                                 upload = new media.view.UploaderInline({
    338                                         controller: frame
    339                                 }).render();
    340 
    341                                 frame.content( upload );
    342                         }
    343                 }
     343                }
     344
    344345        });
    345346
Note: See TracChangeset for help on using the changeset viewer.