WordPress.org

Make WordPress Core

Ticket #24056: 24056.patch

File 24056.patch, 4.2 KB (added by a.hoereth, 5 years ago)

Rough pagination for revisions

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

     
    21172117        $right_handle_at = ! empty( $_GET['right_handle_at'] ) ? (int) $_GET['right_handle_at'] : 0;
    21182118        $left_handle_at = ! empty( $_GET['left_handle_at'] ) ? (int) $_GET['left_handle_at'] : 0;
    21192119        $single_revision_id = ! empty( $_GET['single_revision_id'] ) ? absint( $_GET['single_revision_id'] ) : 0;
     2120        $pageSize = ! empty( $_GET['pageSize'] ) ? absint( $_GET['pageSize'] ) : -1;
     2121        $page = ! empty( $_GET['page'] ) ? absint( $_GET['page'] ) : 1;
    21202122        $compare_two_mode = (bool) $post_id;
    21212123
    21222124        //
     
    21312133        if ( ! current_user_can( 'read_post', $post_id ) )
    21322134                continue;
    21332135
    2134         if ( ! $revisions = wp_get_post_revisions( $post_id ) )
     2136        if ( ! $revisions = wp_get_post_revisions( $post_id, array( 'posts_per_page' => $pageSize, 'paged' => $page ) ) )
    21352137                return;
    21362138
    21372139        $left_revision = get_post( $compare_to );
  • wp-admin/js/revisions.js

     
    237237                        this.reloadLeft();
    238238                        this.reloadRight();
    239239                },
     240               
     241                loadPage: function( page ) {
     242                        var self = this;
    240243
     244                        self.startRightModelLoading();
     245
     246                        self.revisions.reload({
     247                                options: {
     248                                        'showAutosaves': self.autosaves,
     249                                        'showSplitView': self.showSplitView,
     250                                        'numberposts'  : 5,
     251                                        'page' : page
     252                                },
     253
     254                                success: function() {
     255                                        var revisionCount = self.revisions.length;
     256                                        self.revisionView.model = self.revisions;
     257                                        self.revisionView.render();
     258                                        self.loadDiffs( self.revisions );
     259                                        self.tickmarkView.model = self.revisions;
     260                                        self.tickmarkView.render();
     261                                        self.slider.refresh({
     262                                                'max': revisionCount - 1,
     263                                                'value': self.rightDiff - 1
     264                                        }, true);
     265                                },
     266
     267                                error: function() {
     268                                        self.stopRightModelLoading();
     269                                }
     270                        });
     271                },
     272
    241273                disabledButtonCheck: function( val ) {
    242274                        var maxVal = this.revisions.length - 1,
    243275                                next = $( '#next' ),
     
    540572                // next and previous buttons, only available in compare one mode
    541573                events: {
    542574                        'click #next':     'nextRevision',
    543                         'click #previous': 'previousRevision'
     575                        'click #previous': 'previousRevision',
     576                        'click .paginate': 'changePage'
    544577                },
    545578
    546579                render: function() {
     
    600633                        Diff.slider.refresh({
    601634                                value: Diff.rightDiff - 1
    602635                        }, true );
     636                },
     637               
     638                changePage: function(e) {
     639                        $( '.paginate'  ).removeClass( 'button-disabled' );
     640                        $( e.currentTarget ).addClass( 'button-disabled' );
     641                       
     642                        Diff.loadPage( $( e.currentTarget ).data( 'id' ) );
    603643                }
    604644        });
    605645
     
    751791                                'showSplitView': true,
    752792                                'rightHandleAt': 0,
    753793                                'leftHandleAt': 0,
     794                                'pageSize' : revisions.model.settings.pageSize,
     795                                'page' : 1,
    754796                                'nonce': revisions.model.settings.nonce
    755797                        });
    756798                },
     
    764806                                '&show_split_view=' + this.options.showSplitView +
    765807                                '&right_handle_at=' + this.options.rightHandleAt +
    766808                                '&left_handle_at=' + this.options.leftHandleAt +
     809                                '&pageSize=' + this.options.pageSize +
     810                                '&page=' + this.options.page +
    767811                                '&nonce=' + this.options.nonce;
    768812                },
    769813
  • wp-admin/revision.php

     
    8282$settings = array(
    8383        'post_id'     => $post->ID,
    8484        'nonce'       => wp_create_nonce( 'revisions-ajax-nonce' ),
    85         'revision_id' => $revision_id
     85        'revision_id' => $revision_id,
     86        'pageSize'        => 5
    8687);
    8788
    8889wp_localize_script( 'revisions', 'wpRevisionsSettings', $settings );
     
    170171        </div>
    171172
    172173        <div id="diff-slider" class="wp-slider"></div>
     174       
     175        <div id="diff-paginate" style="text-align: center; margin: 5px 0 0 0;">
     176                <?php
     177                $pages = count( wp_get_post_revisions( $post->ID ) ) / $settings['pageSize'];
     178                for( $i = 1; $i <= $pages; $i++ )
     179                        echo '<input class="button'.($i==1 ? ' button-disabled' : '').' paginate" type="button" value="'.$i.'" data-id="'.$i.'" />';
     180                ?>
     181        </div>
    173182</script>
    174183
    175184<script id="tmpl-revision-ticks" type="text/html">