WordPress.org

Make WordPress Core

Ticket #49177: 49177.patch

File 49177.patch, 10.4 KB (added by passoniate, 6 weeks ago)

Patch

  • wp-admin/js/revisions.js

     
    7171                        this.frame = options.frame;
    7272                        this.revisions = options.revisions;
    7373
    74                         // Listen for changes to the revisions or mode from outside
     74                        // Listen for changes to the revisions or mode from outside.
    7575                        this.listenTo( this.frame, 'update:revisions', this.receiveRevisions );
    7676                        this.listenTo( this.frame, 'change:compareTwoMode', this.updateMode );
    7777
    78                         // Listen for internal changes
     78                        // Listen for internal changes.
    7979                        this.on( 'change:from', this.handleLocalChanges );
    8080                        this.on( 'change:to', this.handleLocalChanges );
    8181                        this.on( 'change:compareTwoMode', this.updateSliderSettings );
    8282                        this.on( 'update:revisions', this.updateSliderSettings );
    8383
    84                         // Listen for changes to the hovered revision
     84                        // Listen for changes to the hovered revision.
    8585                        this.on( 'change:hoveredRevision', this.hoverRevision );
    8686
    8787                        this.set({
     
    105105                                                this.getSliderValue( 'from', 'to' )
    106106                                        ],
    107107                                        value: null,
    108                                         range: true // ensures handles cannot cross
     108                                        range: true // ensures handles cannot cross.
    109109                                });
    110110                        } else {
    111111                                this.set({
     
    117117                        this.trigger( 'update:slider' );
    118118                },
    119119
    120                 // Called when a revision is hovered
     120                // Called when a revision is hovered.
    121121                hoverRevision: function( model, value ) {
    122122                        this.trigger( 'hovered:revision', value );
    123123                },
    124124
    125                 // Called when `compareTwoMode` changes
     125                // Called when `compareTwoMode` changes.
    126126                updateMode: function( model, value ) {
    127127                        this.set({ compareTwoMode: value });
    128128                },
    129129
    130                 // Called when `from` or `to` changes in the local model
     130                // Called when `from` or `to` changes in the local model.
    131131                handleLocalChanges: function() {
    132132                        this.frame.set({
    133133                                from: this.get('from'),
     
    135135                        });
    136136                },
    137137
    138                 // Receives revisions changes from outside the model
     138                // Receives revisions changes from outside the model.
    139139                receiveRevisions: function( from, to ) {
    140140                        // Bail if nothing changed
    141141                        if ( this.get('from') === from && this.get('to') === to ) {
     
    152152                defaults: {
    153153                        revision: null,
    154154                        offset: {},
    155                         hovering: false, // Whether the mouse is hovering
    156                         scrubbing: false // Whether the mouse is scrubbing
     155                        hovering: false, // Whether the mouse is hovering.
     156                        scrubbing: false // Whether the mouse is scrubbing.
    157157                },
    158158
    159159                initialize: function( options ) {
     
    255255                        } else {
    256256                                this.trigger( 'ensure:load', ids, from, to, deferred.promise() );
    257257                                _.each( ids, _.bind( function( id ) {
    258                                         // Remove anything that has an ongoing request
     258                                        // Remove anything that has an ongoing request.
    259259                                        if ( this.requests[ id ] ) {
    260260                                                delete ids[ id ];
    261261                                        }
    262                                         // Remove anything we already have
     262                                        // Remove anything we already have.
    263263                                        if ( this.get( id ) ) {
    264264                                                delete ids[ id ];
    265265                                        }
    266266                                }, this ) );
    267267                                if ( ! request ) {
    268                                         // Always include the ID that started this ensure
     268                                        // Always include the ID that started this ensure.
    269269                                        ids[ id ] = true;
    270270                                        request   = this.load( _.keys( ids ) );
    271271                                }
     
    280280                        return deferred.promise();
    281281                },
    282282
    283                 // Returns an array of proximal diffs
     283                // Returns an array of proximal diffs.
    284284                getClosestUnloaded: function( ids, centerId ) {
    285285                        var self = this;
    286286                        return _.chain([0].concat( ids )).initial().zip( ids ).sortBy( function( pair ) {
     
    303303                                }).fail( function() {
    304304                                        if ( 1 === num ) { // Already tried 1. This just isn't working. Give up.
    305305                                                deferred.reject();
    306                                         } else { // Request fewer diffs this time
     306                                        } else { // Request fewer diffs this time.
    307307                                                self._loadAll( allRevisionIds, centerId, Math.ceil( num / 2 ) ).done( function() {
    308308                                                        deferred.resolve();
    309309                                                });
     
    410410                                compareTwoMode : state.compareTwoMode
    411411                        } );
    412412
    413                         // Start the router if browser supports History API
     413                        // Start the router if browser supports History API.
    414414                        if ( window.history && window.history.pushState ) {
    415415                                this.router = new revisions.Router({ model: this });
    416416                                if ( Backbone.History.started ) {
     
    593593                initialize: function() {
    594594                        _.bindAll( this, 'setWidth' );
    595595
    596                         // Add the button view
     596                        // Add the button view.
    597597                        this.views.add( new revisions.view.Buttons({
    598598                                model: this.model
    599599                        }) );
    600600
    601                         // Add the checkbox view
     601                        // Add the checkbox view.
    602602                        this.views.add( new revisions.view.Checkbox({
    603603                                model: this.model
    604604                        }) );
    605605
    606                         // Prep the slider model
     606                        // Prep the slider model.
    607607                        var slider = new revisions.model.Slider({
    608608                                frame: this.model,
    609609                                revisions: this.model.revisions
    610610                        }),
    611611
    612                         // Prep the tooltip model
     612                        // Prep the tooltip model.
    613613                        tooltip = new revisions.model.Tooltip({
    614614                                frame: this.model,
    615615                                revisions: this.model.revisions,
     
    616616                                slider: slider
    617617                        });
    618618
    619                         // Add the tooltip view
     619                        // Add the tooltip view.
    620620                        this.views.add( new revisions.view.Tooltip({
    621621                                model: tooltip
    622622                        }) );
    623623
    624                         // Add the tickmarks view
     624                        // Add the tickmarks view.
    625625                        this.views.add( new revisions.view.Tickmarks({
    626626                                model: tooltip
    627627                        }) );
    628628
    629                         // Add the slider view
     629                        // Add the slider view.
    630630                        this.views.add( new revisions.view.Slider({
    631631                                model: slider
    632632                        }) );
    633633
    634                         // Add the Metabox view
     634                        // Add the Metabox view.
    635635                        this.views.add( new revisions.view.Metabox({
    636636                                model: this.model
    637637                        }) );
     
    672672                }
    673673        });
    674674
    675         // The tickmarks view
     675        // The tickmarks view.
    676676        revisions.view.Tickmarks = wp.Backbone.View.extend({
    677677                className: 'revisions-tickmarks',
    678678                direction: isRtl ? 'right' : 'left',
     
    686686                        thisOffset = this.$el.allOffsets();
    687687                        parentOffset = this.$el.parent().allOffsets();
    688688                        if ( index === this.model.revisions.length - 1 ) {
    689                                 // Last one
     689                                // Last one.
    690690                                offset = {
    691691                                        rightPlusWidth: thisOffset.left - parentOffset.left + 1,
    692692                                        leftPlusWidth: thisOffset.right - parentOffset.right + 1
    693693                                };
    694694                        } else {
    695                                 // Normal tick
     695                                // Normal tick.
    696696                                tick = this.$('div:nth-of-type(' + (index + 1) + ')');
    697697                                offset = tick.allPositions();
    698698                                _.extend( offset, {
     
    719719                }
    720720        });
    721721
    722         // The metabox view
     722        // The metabox view.
    723723        revisions.view.Metabox = wp.Backbone.View.extend({
    724724                className: 'revisions-meta',
    725725
    726726                initialize: function() {
    727                         // Add the 'from' view
     727                        // Add the 'from' view.
    728728                        this.views.add( new revisions.view.MetaFrom({
    729729                                model: this.model,
    730730                                className: 'diff-meta diff-meta-from'
    731731                        }) );
    732732
    733                         // Add the 'to' view
     733                        // Add the 'to' view.
    734734                        this.views.add( new revisions.view.MetaTo({
    735735                                model: this.model
    736736                        }) );
     
    737737                }
    738738        });
    739739
    740         // The revision meta view (to be extended)
     740        // The revision meta view (to be extended).
    741741        revisions.view.Meta = wp.Backbone.View.extend({
    742742                template: wp.template('revisions-meta'),
    743743
     
    760760                }
    761761        });
    762762
    763         // The revision meta 'from' view
     763        // The revision meta 'from' view.
    764764        revisions.view.MetaFrom = revisions.view.Meta.extend({
    765765                className: 'diff-meta diff-meta-from',
    766766                type: 'from'
    767767        });
    768768
    769         // The revision meta 'to' view
     769        // The revision meta 'to' view.
    770770        revisions.view.MetaTo = revisions.view.Meta.extend({
    771771                className: 'diff-meta diff-meta-to',
    772772                type: 'to'
     
    880880                        this.disabledButtonCheck();
    881881                },
    882882
    883                 // Go to a specific model index
     883                // Go to a specific model index.
    884884                gotoModel: function( toIndex ) {
    885885                        var attributes = {
    886886                                to: this.model.revisions.at( toIndex )
     
    895895                        this.model.set( attributes );
    896896                },
    897897
    898                 // Go to the 'next' revision
     898                // Go to the 'next' revision.
    899899                nextRevision: function() {
    900900                        var toIndex = this.model.revisions.indexOf( this.model.get('to') ) + 1;
    901901                        this.gotoModel( toIndex );
    902902                },
    903903
    904                 // Go to the 'previous' revision
     904                // Go to the 'previous' revision.
    905905                previousRevision: function() {
    906906                        var toIndex = this.model.revisions.indexOf( this.model.get('to') ) - 1;
    907907                        this.gotoModel( toIndex );
     
    970970                                currentModelIndex = this.model.revisions.length - 1;
    971971                        }
    972972
    973                         // Update the tooltip mode
     973                        // Update the tooltip mode.
    974974                        this.model.set({ hoveredRevision: this.model.revisions.at( currentModelIndex ) });
    975975                },
    976976
     
    987987                        var handles = this.$('a.ui-slider-handle');
    988988
    989989                        if ( this.model.get('compareTwoMode') ) {
    990                                 // in RTL mode the 'left handle' is the second in the slider, 'right' is first
     990                                // in RTL mode the 'left handle' is the second in the slider, 'right' is first.
    991991                                handles.first()
    992992                                        .toggleClass( 'to-handle', !! isRtl )
    993993                                        .toggleClass( 'from-handle', ! isRtl );
     
    10191019                                // Adjust left/right boundaries and reset points.
    10201020                                if ( view.model.get('compareTwoMode') ) {
    10211021                                        handles = handle.parent().find('.ui-slider-handle');
    1022                                         if ( handle.is( handles.first() ) ) { // We're the left handle
     1022                                        if ( handle.is( handles.first() ) ) { // We're the left handle.
    10231023                                                rightDragBoundary = handles.last().offset().left;
    10241024                                                rightDragReset    = rightDragBoundary - sliderOffset;
    1025                                         } else { // We're the right handle
     1025                                        } else { // We're the right handle.
    10261026                                                leftDragBoundary = handles.first().offset().left + handles.first().width();
    10271027                                                leftDragReset    = leftDragBoundary - sliderOffset;
    10281028                                        }
     
    10431043                        return isRtl ? this.model.revisions.length - position - 1: position;
    10441044                },
    10451045
    1046                 // Responds to slide events
     1046                // Responds to slide events.
    10471047                slide: function( event, ui ) {
    10481048                        var attributes, movedRevision;
    1049                         // Compare two revisions mode
     1049                        // Compare two revisions mode.
    10501050                        if ( this.model.get('compareTwoMode') ) {
    1051                                 // Prevent sliders from occupying same spot
     1051                                // Prevent sliders from occupying same spot.
    10521052                                if ( ui.values[1] === ui.values[0] ) {
    10531053                                        return false;
    10541054                                }
     
    10721072                        }
    10731073                        movedRevision = this.model.revisions.at( this.getPosition( ui.value ) );
    10741074
    1075                         // If we are scrubbing, a scrub to a revision is considered a hover
     1075                        // If we are scrubbing, a scrub to a revision is considered a hover.
    10761076                        if ( this.model.get('scrubbing') ) {
    10771077                                attributes.hoveredRevision = movedRevision;
    10781078                        }
     
    10821082
    10831083                stop: function() {
    10841084                        $( window ).off('mousemove.wp.revisions');
    1085                         this.model.updateSliderSettings(); // To snap us back to a tick mark
     1085                        this.model.updateSliderSettings(); // To snap us back to a tick mark.
    10861086                        this.model.set({ scrubbing: false });
    10871087                }
    10881088        });