Make WordPress Core

Ticket #24056: 24056.2.patch

File 24056.2.patch, 3.9 KB (added by a.hoereth, 11 years ago)

Rough pagination implementation for revisions. Breaks stuff!

  • 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        $page_size = ! empty( $_GET['page_size'] ) ? absint( $_GET['page_size'] ) : -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' => $page_size, 'paged' => $page ) ) )
    21352137                return;
    21362138
    21372139        $left_revision = get_post( $compare_to );
  • wp-admin/js/revisions.js

     
    142142                },
    143143
    144144                // load the models for the single handle mode
    145                 reloadModelSingle: function() {
     145                reloadModelSingle: function( options ) {
    146146                        var self = this;
     147                       
     148                        options = _.defaults( options || {}, {
     149                                'showAutosaves': self.autosaves,
     150                                'showSplitView': self.showSplitView
     151                        });
    147152
    148153                        self.startRightModelLoading();
    149154
    150155                        self.revisions.reload({
    151                                 options: {
    152                                 'showAutosaves': self.autosaves,
    153                                 'showSplitView': self.showSplitView
    154                                 },
     156                                options: options,
    155157
    156158                                success: function() {
    157159                                        var revisionCount = self.revisions.length;
     
    540542                // next and previous buttons, only available in compare one mode
    541543                events: {
    542544                        'click #next':     'nextRevision',
    543                         'click #previous': 'previousRevision'
     545                        'click #previous': 'previousRevision',
     546                        'click .paginate': 'changePage'
    544547                },
    545548
    546549                render: function() {
     
    600603                        Diff.slider.refresh({
    601604                                value: Diff.rightDiff - 1
    602605                        }, true );
     606                },
     607               
     608                changePage: function(e) {
     609                        $( '.paginate'  ).removeClass( 'button-disabled' );
     610                        $( e.currentTarget ).addClass( 'button-disabled' );
     611                       
     612                        Diff.reloadModelSingle({
     613                                'page' : $( e.currentTarget ).data( 'id' )
     614                        });
    603615                }
    604616        });
    605617
     
    751763                                'showSplitView': true,
    752764                                'rightHandleAt': 0,
    753765                                'leftHandleAt': 0,
     766                                'page_size' : revisions.model.settings.page_size,
     767                                'page' : 1,
    754768                                'nonce': revisions.model.settings.nonce
    755769                        });
    756770                },
     
    764778                                '&show_split_view=' + this.options.showSplitView +
    765779                                '&right_handle_at=' + this.options.rightHandleAt +
    766780                                '&left_handle_at=' + this.options.leftHandleAt +
     781                                '&page_size=' + this.options.page_size +
     782                                '&page=' + this.options.page +
    767783                                '&nonce=' + this.options.nonce;
    768784                },
    769785
  • 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        'page_size'   => 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['page_size'];
     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">