WordPress.org

Make WordPress Core

Ticket #24056: 24056-pagination.patch

File 24056-pagination.patch, 5.2 KB (added by a.hoereth, 22 months ago)
  • wp-admin/css/wp-admin.css

     
    36423642        display: block; 
    36433643} 
    36443644 
     3645#diff-paginate { 
     3646        text-align: center; 
     3647        margin: 10px 0 0 0; 
     3648} 
     3649 
     3650#diff-paginate input { 
     3651        margin: 0 2px; 
     3652} 
     3653 
    36453654#diff-title-to strong { 
    36463655        display: none; 
    36473656} 
  • wp-admin/includes/ajax-actions.php

     
    21122112        $right_handle_at = ! empty( $_GET['right_handle_at'] ) ? (int) $_GET['right_handle_at'] : 0; 
    21132113        $left_handle_at = ! empty( $_GET['left_handle_at'] ) ? (int) $_GET['left_handle_at'] : 0; 
    21142114        $single_revision_id = ! empty( $_GET['single_revision_id'] ) ? absint( $_GET['single_revision_id'] ) : 0; 
     2115        $page_size = ! empty( $_GET['page_size'] ) ? absint( $_GET['page_size'] ) : -1; 
     2116        $page = ! empty( $_GET['page'] ) ? absint( $_GET['page'] ) : 1; 
    21152117        $compare_two_mode = (bool) $post_id; 
    21162118 
    21172119        $all_the_revisions = array(); 
     
    21212123        if ( ! current_user_can( 'read_post', $post_id ) ) 
    21222124                continue; 
    21232125 
    2124         if ( ! $revisions = wp_get_post_revisions( $post_id ) ) 
     2126        if ( ! $revisions = wp_get_post_revisions( $post_id, array( 'posts_per_page' => $page_size, 'paged' => $page ) ) ) 
    21252127                return; 
    21262128 
    21272129        $left_revision = get_post( $compare_to ); 
     
    21832185 
    21842186        $count = -1; 
    21852187 
     2188        // append current live revision if not on first page 
     2189        if( $page > 1 ) { 
     2190                $current = array_pop(wp_get_post_revisions( $post_id, array( 'numberposts' => 1 ) )); 
     2191                $revisions[$current->ID] = $current; 
     2192        } 
     2193         
    21862194        // reverse the list to start with oldest revision 
    21872195        $revisions = array_reverse( $revisions ); 
    21882196 
  • wp-admin/js/revisions.js

     
    3838                rightModelLoading: false,       // disallow slider interaction, also repeat loads, while loading 
    3939                tickmarkView: null, // the slider tickmarks 
    4040                slider: null, // the slider instance 
     41                page: null, 
    4142 
    4243                constructor: function() { 
    4344                        var self    = this; 
     
    568569                // next and previous buttons, only available in compare one mode 
    569570                events: { 
    570571                        'click #next':     ! isRtl ? 'nextRevision' : 'previousRevision', 
    571                         'click #previous': ! isRtl ? 'previousRevision' : 'nextRevision' 
     572                        'click #previous': ! isRtl ? 'previousRevision' : 'nextRevision', 
     573                        'click .paginate': 'changePage' 
    572574                }, 
    573575 
    574576                render: function() { 
     
    630632                        Diff.slider.refresh({ 
    631633                                value: Diff.rightDiff - 1 
    632634                        }, true ); 
    633                 } 
     635                }, 
     636 
     637                changePage: function(e) { 
     638                        // suppress event on disabled current page button 
     639                        if( Diff.page == $( e.currentTarget ).data( 'id' ) ) 
     640                                return false; 
     641 
     642                        // change page 
     643                        Diff.page = $( e.currentTarget ).data( 'id' ); 
     644 
     645                        $( '.paginate'  ).removeClass( 'button-disabled' ); 
     646                        $( e.currentTarget ).addClass( 'button-disabled' ); 
     647 
     648                        // single handle mode 
     649                        if ( Diff.slider.singleRevision ) 
     650                                Diff.reloadModelSingle(); 
     651 
     652                        // compare two mode 
     653                        else { 
     654                                Diff.revisions.fetch({ 
     655                                        success: function() { 
     656                                                Diff.reloadLeftRight(); // load diffs for left and right handles 
     657                                                Diff.revisionView.model = Diff.rightHandleRevisions; // results in a reload of the revisionView.model 
     658                                        } 
     659                                }); 
     660                        } 
     661                } 
    634662        }); 
    635663 
    636664        /** 
     
    789817                                'showSplitView': true, 
    790818                                'rightHandleAt': 0, 
    791819                                'leftHandleAt': 0, 
     820                                'page_size' : revisions.model.settings.page_size, 
    792821                                'nonce': revisions.model.settings.nonce 
    793822                        }); 
    794823                }, 
     
    802831                                '&show_split_view=' + this.options.showSplitView + // show in split view or single column view 
    803832                                '&right_handle_at=' + this.options.rightHandleAt + // mark point for comparison list 
    804833                                '&left_handle_at=' + this.options.leftHandleAt + // mark point for comparison list 
     834                                '&page_size=' + this.options.page_size + 
     835                                '&page=' + Diff.page + 
    805836                                '&nonce=' + this.options.nonce; 
    806837                }, 
    807838 
  • wp-admin/revision.php

     
    7878 
    7979wp_enqueue_script( 'revisions' ); 
    8080 
     81$page_size = 50; 
     82$revisions_idx = array_flip( array_keys( wp_get_post_revisions( $post->ID ) ) ); 
    8183 
    8284$settings = array( 
    8385        'post_id'     => $post->ID, 
    8486        'nonce'       => wp_create_nonce( 'revisions-ajax-nonce' ), 
    85         'revision_id' => $revision_id 
     87        'revision_id' => $revision_id, 
     88        'page'            => (int)(( $revisions_idx[$revision_id]+1 ) / $page_size)+1, 
     89        'page_size'   => $page_size 
    8690); 
    8791 
    8892wp_localize_script( 'revisions', 'wpRevisionsSettings', $settings ); 
     
    172176        </div> 
    173177 
    174178        <div id="diff-slider" class="wp-slider"></div> 
     179 
     180        <div id="diff-paginate"> 
     181                <?php 
     182                $pages = count( $revisions_idx ) / $page_size; 
     183                for( $i = 1; $i <= $pages; $i++ ) 
     184                        echo '<input class="button'.( $i == $settings['page'] ? ' button-disabled' : '' ).' paginate" type="button" value="'.( ( $i - 1 ) * $page_size + 1 ) .'-'.( $i * $page_size ).'" data-id="'.$i.'" />'; 
     185                ?> 
     186        </div> 
    175187</script> 
    176188 
    177189<script id="tmpl-revision-ticks" type="text/html">