WordPress.org

Make WordPress Core

Ticket #24346: 24346.4.diff

File 24346.4.diff, 6.7 KB (added by adamsilverstein, 2 years ago)
  • wp-admin/includes/ajax-actions.php

     
    22082208                        if ( ( ( 0 != $left_handle_at && $count < $left_handle_at ) || 
    22092209                                 ( 0 != $right_handle_at && $count > ( $right_handle_at - 2 ) ) ) ) { 
    22102210                                $all_the_revisions[] = array ( 
    2211                                         'ID' => $revision->ID, 
     2211                                        'ID'        => $revision->ID, 
     2212                                        'completed' => true, //mark as completed, no need to load diff 
    22122213                                ); 
    22132214                                continue; 
    22142215                        } 
     
    22162217                        if ( ( 0 != $left_handle_at && $count > ( $left_handle_at - 1 ) || 
    22172218                                 ( 0 != $left_handle_at && $count < $right_handle_at ) ) ) { 
    22182219                                $all_the_revisions[] = array ( 
    2219                                         'ID' => $revision->ID, 
     2220                                        'ID'        => $revision->ID, 
     2221                                        'completed' => true, //mark as completed, no need to load diff 
    22202222                                ); 
    22212223                                continue; 
    22222224                        } 
  • wp-admin/js/revisions.js

     
    5656                        } 
    5757                }, 
    5858 
    59                 loadDiffs: function( models ) { 
     59                loadDiffs: function( models, otherModels ) { 
    6060                        var self = this, 
    6161                                revisionsToLoad = models.where( { completed: false } ), 
    6262                                delay = 0, 
    63                                 totalChanges; 
     63                                totalChanges, 
     64                                foundModel; 
    6465 
     66                        // in two handle mode, pass the other handle's models and copy over scopeOfChanges (tick width) from that model for positions this handle can't reach (but the other handle can reach) 
     67                        if ( 'undefined' !== typeof otherModels ) { // otherModels only passed in two handle mode 
     68                                _.each( models.where( { completed: true } ), // select just the models that are marked as not needing loading, eg. positions this handle can't reach 
     69                                        function( theModel ) { 
     70                                                foundModel = otherModels.findWhere( { ID: theModel.id } ); //find the matching position from the other handle's models 
     71                                                if ( 'undefined' !== typeof foundModel ) { 
     72                                                        theModel.set( 'scopeOfChanges', // set the displayed scope of changes for ticks this handle can't get to 
     73                                                                foundModel 
     74                                                                .get( 'scopeOfChanges' ) ); // copy the scope of changes from the other handle which can reach this spot 
     75                                                } 
     76                                        } 
     77                                ); 
     78                        } 
     79 
    6580                        // match slider to passed revision_id 
    6681                        _.each( revisionsToLoad, function( revision ) { 
    6782                                if ( revision.get( 'ID' ) == revisions.model.settings.revision_id ) 
     
    6984                        }); 
    7085 
    7186                        _.each( revisionsToLoad, function( revision ) { 
    72                                         _.delay( function() { 
    73                                                 revision.fetch( { 
    74                                                         update: true, 
    75                                                         add: false, 
    76                                                         remove: false, 
    77                                                         success: function( model ) { 
    78                                                                 model.set( 'completed', true ); 
     87                                revision.fetch( { 
     88                                        update: true, 
     89                                        add: false, 
     90                                        remove: false, 
     91                                        success: function( model ) { 
     92                                                model.set( 'completed', true ); 
    7993 
    80                                                                 // stop spinner when all models are loaded 
    81                                                                 if ( 0 === models.where( { completed: false } ).length ) 
    82                                                                         self.stopModelLoadingSpinner(); 
     94                                                // stop spinner when all models are loaded 
     95                                                if ( 0 === models.where( { completed: false } ).length ) 
     96                                                        self.stopModelLoadingSpinner(); 
    8397 
    84                                                                 totalChanges = model.get( 'linesAdded' ) + model.get( 'linesDeleted' ), 
    85                                                                         scopeOfChanges = 'vsmall'; 
     98                                                totalChanges = model.get( 'linesAdded' ) + model.get( 'linesDeleted' ), 
     99                                                        scopeOfChanges = 'vsmall'; 
    86100 
    87                                                                 // Note: hard coded scope of changes 
    88                                                                 // TODO change to dynamic based on range of values 
    89                                                                 if ( totalChanges > 1 && totalChanges <= 3 ) { 
    90                                                                         scopeOfChanges = 'small'; 
    91                                                                 } else if ( totalChanges > 3 && totalChanges <= 5 ) { 
    92                                                                         scopeOfChanges = 'med'; 
    93                                                                 } else if ( totalChanges > 5 && totalChanges <= 10 ) { 
    94                                                                         scopeOfChanges = 'large'; 
    95                                                                 } else if ( totalChanges > 10 ) { 
    96                                                                         scopeOfChanges = 'vlarge'; 
    97                                                                 } 
    98                                                                 model.set( 'scopeOfChanges', scopeOfChanges ); 
    99                                                                 if ( 0 !== self.rightDiff && 
    100                                                                         model.get( 'ID' ) === self.revisions.at( self.rightDiff - 1 ).get( 'ID' ) ) { 
    101                                                                         // reload if current model refreshed 
    102                                                                         self.revisionView.render(); 
    103                                                                 } 
    104                                                                 self.tickmarkView.render(); 
    105                                                         } 
    106                                         } ); 
    107                                         }, delay ) ; 
    108                                         delay = delay + 150; // stagger model loads to avoid hammering server with requests 
    109                                 } 
    110                         ); 
     101                                                // Note: hard coded scope of changes 
     102                                                // TODO change to dynamic based on range of values 
     103                                                if ( totalChanges > 1 && totalChanges <= 3 ) { 
     104                                                        scopeOfChanges = 'small'; 
     105                                                } else if ( totalChanges > 3 && totalChanges <= 5 ) { 
     106                                                        scopeOfChanges = 'med'; 
     107                                                } else if ( totalChanges > 5 && totalChanges <= 10 ) { 
     108                                                        scopeOfChanges = 'large'; 
     109                                                } else if ( totalChanges > 10 ) { 
     110                                                        scopeOfChanges = 'vlarge'; 
     111                                                } 
     112                                                model.set( 'scopeOfChanges', scopeOfChanges ); 
     113                                                if ( 0 !== self.rightDiff && 
     114                                                        model.get( 'ID' ) === self.revisions.at( self.rightDiff - 1 ).get( 'ID' ) ) { 
     115                                                        // reload if current model refreshed 
     116                                                        self.revisionView.render(); 
     117                                                } 
     118                                                self.tickmarkView.render(); 
     119                                        } 
     120                                } ); 
     121                        } ); 
    111122                }, 
    112123 
    113124                startLeftModelLoading: function() { 
     
    186197                        self.leftHandleRevisions.fetch({ 
    187198                                success: function(){ 
    188199                                        self.stopLeftModelLoading(); 
    189                                         self.loadDiffs( self.leftHandleRevisions ); 
     200                                        self.loadDiffs( self.leftHandleRevisions, self.rightHandleRevisions ); 
    190201                                        self.tickmarkView.model = self.leftHandleRevisions; 
    191202                                        self.slider.refresh({ 
    192203                                                'max': self.revisions.length 
     
    216227                        self.rightHandleRevisions.fetch({ 
    217228                                success: function(){ 
    218229                                        self.stopRightModelLoading(); 
    219                                         self.loadDiffs( self.rightHandleRevisions ); 
     230                                        self.loadDiffs( self.rightHandleRevisions, self.leftHandleRevisions ); 
    220231                                        self.tickmarkView.model = self.rightHandleRevisions; 
    221232                                        self.slider.refresh({ 
    222233                                                'max': self.revisions.length 
     
    242253 
    243254                disabledButtonCheck: function( val ) { 
    244255                        var maxVal = this.revisions.length - 1, 
    245                                 next = ! isRtl ? $( '#next' ) : $( '#previous' ), 
    246                                 prev = ! isRtl ? $( '#previous' ) : $( '#next' ); 
     256                                next = isRtl ? $( '#previous' ) : $( '#next' ), 
     257                                prev = isRtl ? $( '#next' ) : $( '#previous' ); 
    247258 
    248259                        // Disable "Next" button if you're on the last node 
    249260                        if ( maxVal === val ) 
     
    567578 
    568579                // next and previous buttons, only available in compare one mode 
    569580                events: { 
    570                         'click #next':     ! isRtl ? 'nextRevision' : 'previousRevision', 
    571                         'click #previous': ! isRtl ? 'previousRevision' : 'nextRevision' 
     581                        'click #next':     isRtl ? 'previousRevision' : 'nextRevision', 
     582                        'click #previous': isRtl ? 'nextRevision' : 'previousRevision' 
    572583                }, 
    573584 
    574585                render: function() {