Make WordPress Core

Ticket #24056: 24056-prioritize.patch

File 24056-prioritize.patch, 2.0 KB (added by a.hoereth, 11 years ago)

Prioritize revision fetching according to temporal distance to the handle/handles

  • wp-admin/includes/ajax-actions.php

     
    22092209                                 ( 0 != $right_handle_at && $count > ( $right_handle_at - 2 ) ) ) ) {
    22102210                                $all_the_revisions[] = array (
    22112211                                        'ID' => $revision->ID,
     2212                                        'timestamp' => strtotime($revision->post_modified)
    22122213                                );
    22132214                                continue;
    22142215                        }
     
    22172218                                 ( 0 != $left_handle_at && $count < $right_handle_at ) ) ) {
    22182219                                $all_the_revisions[] = array (
    22192220                                        'ID' => $revision->ID,
     2221                                        'timestamp' => strtotime($revision->post_modified)
    22202222                                );
    22212223                                continue;
    22222224                        }
     
    23052307                                'restoreLink'  => urldecode( $restore_link ),
    23062308                                'previousID'   => $previous_revision_id,
    23072309                                'isCurrent'    => $is_current_revision,
     2310                                'timestamp'    => strtotime($revision->post_modified)
    23082311                        );
    23092312                }
    23102313                $previous_revision_id = $revision->ID;
  • wp-admin/js/revisions.js

     
    6868                                        self.rightDiff = self.revisions.indexOf( revision ) + 1;
    6969                        });
    7070
     71                        // load revisions in order of their chronological closeness to the handles
     72                        var left  = this.singleRevision ? 0 : self.revisions.models[self.leftDiff -1].get('timestamp'),
     73                                right = self.revisions.models[self.rightDiff-1].get('timestamp');
     74                        revisionsToLoad = _.sortBy( revisionsToLoad, function( model ) {
     75                                var t = model.get('timestamp'),
     76                                        y = Math.abs( t - right ),
     77                                        x = Math.abs( t - left );
     78                                return _.min([x,y]);
     79                        });
     80
    7181                        _.each( revisionsToLoad, function( revision ) {
    7282                                        _.delay( function() {
    7383                                                revision.fetch( {
     
    793803                        });
    794804                },
    795805
     806                comparator: function(item) {
     807                        return item.get('timestamp');
     808                },
     809
    796810                url: function() {
    797811                        return ajaxurl +
    798812                                '?action=revisions-data' +