WordPress.org

Make WordPress Core

Ticket #22656: 22656.2.diff

File 22656.2.diff, 3.6 KB (added by koopersmith, 17 months ago)
  • wp-includes/js/media-models.js

     
    490490                }, 
    491491 
    492492                more: function( options ) { 
    493                         if ( this.mirroring && this.mirroring.more ) 
    494                                 return this.mirroring.more( options ); 
    495                         return $.Deferred().resolve().promise(); 
     493                        var deferred = $.Deferred(), 
     494                                mirroring = this.mirroring, 
     495                                attachments = this; 
     496 
     497                        if ( ! mirroring || ! mirroring.more ) 
     498                                return deferred.resolveWith( this ).promise(); 
     499 
     500                        // If we're mirroring another collection, forward `more` to 
     501                        // the mirrored collection. Account for a race condition by 
     502                        // checking if we're still mirroring that collection when 
     503                        // the request resolves. 
     504                        mirroring.more( options ).done( function() { 
     505                                if ( this === attachments.mirroring ) 
     506                                        deferred.resolveWith( this ); 
     507                        }); 
     508 
     509                        return deferred.promise(); 
    496510                }, 
    497511 
     512                hasMore: function() { 
     513                        return this.mirroring ? this.mirroring.hasMore() : false; 
     514                }, 
     515 
    498516                parse: function( resp, xhr ) { 
    499517                        return _.map( resp, function( attrs ) { 
    500518                                var attachment = Attachment.get( attrs.id ); 
     
    583601                        options = options || {}; 
    584602                        Attachments.prototype.initialize.apply( this, arguments ); 
    585603 
    586                         this.args    = options.args; 
    587                         this.hasMore = true; 
    588                         this.created = new Date(); 
     604                        this.args     = options.args; 
     605                        this._hasMore = true; 
     606                        this.created  = new Date(); 
    589607 
    590608                        this.filters.order = function( attachment ) { 
    591609                                var orderby = this.props.get('orderby'), 
     
    627645                                this.observe( wp.Uploader.queue ); 
    628646                }, 
    629647 
     648                hasMore: function() { 
     649                        return this._hasMore; 
     650                }, 
     651 
    630652                more: function( options ) { 
    631653                        var query = this; 
    632654 
    633655                        if ( this._more && 'pending' === this._more.state() ) 
    634656                                return this._more; 
    635657 
    636                         if ( ! this.hasMore ) 
    637                                 return $.Deferred().resolve().promise(); 
     658                        if ( ! this.hasMore() ) 
     659                                return $.Deferred().resolveWith( this ).promise(); 
    638660 
    639661                        options = options || {}; 
    640662                        options.add = true; 
    641663 
    642664                        return this._more = this.fetch( options ).done( function( resp ) { 
    643665                                if ( _.isEmpty( resp ) || -1 === this.args.posts_per_page || resp.length < this.args.posts_per_page ) 
    644                                         query.hasMore = false; 
     666                                        query._hasMore = false; 
    645667                        }); 
    646668                }, 
    647669 
  • wp-includes/js/media-views.js

     
    28212821                        if ( ! this.$el.is(':visible') ) 
    28222822                                return; 
    28232823 
    2824                         if ( this.el.scrollHeight < this.el.scrollTop + ( this.el.clientHeight * this.options.refreshThreshold ) ) { 
     2824                        if ( this.collection.hasMore() && this.el.scrollHeight < this.el.scrollTop + ( this.el.clientHeight * this.options.refreshThreshold ) ) { 
    28252825                                this.collection.more().done( this.scroll ); 
    28262826                        } 
    28272827                } 
     
    30713071                        } 
    30723072                }, 
    30733073 
     3074                removeContent: function() { 
     3075                        _.each(['attachments','uploader'], function( key ) { 
     3076                                if ( this[ key ] ) { 
     3077                                        this[ key ].remove(); 
     3078                                        delete this[ key ]; 
     3079                                } 
     3080                        }, this ); 
     3081                }, 
     3082 
    30743083                createUploader: function() { 
    3075                         if ( this.attachments ) { 
    3076                                 this.attachments.remove(); 
    3077                                 delete this.attachments; 
    3078                         } 
     3084                        this.removeContent(); 
    30793085 
    30803086                        this.uploader = new media.view.UploaderInline({ 
    30813087                                controller: this.controller 
     
    30853091                }, 
    30863092 
    30873093                createAttachments: function() { 
    3088                         if ( this.uploader ) { 
    3089                                 this.uploader.remove(); 
    3090                                 delete this.uploader; 
    3091                         } 
     3094                        this.removeContent(); 
    30923095 
    30933096                        this.attachments = new media.view.Attachments({ 
    30943097                                controller: this.controller,