Make WordPress Core

Ticket #24859: 24859.12.diff

File 24859.12.diff, 1.9 KB (added by kadamwhite, 11 years ago)

Show spinner for scroll-triggered media lazy-load

  • 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 76f689b..8b41933 100644
    a b  
    51155115                },
    51165116
    51175117                scroll: function() {
     5118                        var view = this,
     5119                                toolbar;
     5120
    51185121                        // @todo: is this still necessary?
    51195122                        if ( ! this.$el.is(':visible') ) {
    51205123                                return;
    51215124                        }
    51225125
    51235126                        if ( this.collection.hasMore() && this.el.scrollHeight < this.el.scrollTop + ( this.el.clientHeight * this.options.refreshThreshold ) ) {
    5124                                 this.collection.more().done( this.scroll );
     5127                                toolbar = this.views.parent.toolbar;
     5128                                toolbar.get('spinner').show();
     5129
     5130                                this.collection.more().done(function() {
     5131                                        view.scroll();
     5132                                        toolbar.get('spinner').hide();
     5133                                });
    51255134                        }
    51265135                }
    51275136        }, {
     
    53615370
    53625371                        this.collection.on( 'add remove reset', this.updateContent, this );
    53635372                },
    5364                 toggleSpinner: function( state ) {
    5365                         if ( state ) {
    5366                                 this.spinnerTimeout = _.delay(function( view ) {
    5367                                         view.toolbar.get( 'spinner' ).show();
    5368                                 }, 600, this );
    5369                         } else {
    5370                                 this.toolbar.get( 'spinner' ).hide();
    5371                                 clearTimeout( this.spinnerTimeout );
    5372                         }
    5373                 },
    53745373                /**
    53755374                 * @returns {wp.media.view.AttachmentsBrowser} Returns itself to allow chaining
    53765375                 */
     
    54355434                        }
    54365435
    54375436                        if ( ! this.collection.length ) {
    5438                                 this.toggleSpinner( true );
     5437                                this.toolbar.get( 'spinner' ).show();
    54395438                                this.collection.more().done(function() {
    54405439                                        if ( ! view.collection.length ) {
    54415440                                                view.createUploader();
    54425441                                        }
    5443                                         view.toggleSpinner( false );
     5442                                        view.toolbar.get( 'spinner' ).hide();
    54445443                                });
    54455444                        }
    54465445                },
     
    65796578                className: 'spinner',
    65806579
    65816580                show: function() {
    6582                         this.$el.show();
     6581                        this.spinnerTimeout = _.delay(function( $el ) {
     6582                                $el.show();
     6583                        }, 300, this.$el );
     6584
    65836585                        return this;
    65846586                },
    65856587
    65866588                hide: function() {
    65876589                        this.$el.hide();
     6590                        clearTimeout( this.spinnerTimeout );
     6591
    65886592                        return this;
    65896593                }
    65906594        });