WordPress.org

Make WordPress Core

Ticket #12432: garyc40-12432.patch

File garyc40-12432.patch, 5.8 KB (added by garyc40, 4 years ago)

there's a patch for that

  • wp-admin/admin-ajax.php

    diff --git wp-admin/admin-ajax.php wp-admin/admin-ajax.php
    index cef3981..e912aa8 100644
    case 'fetch-list' : 
    5757        $current_screen->is_network = 'false' === $current_screen->is_network ? false : true; 
    5858        $current_screen->is_user = 'false' === $current_screen->is_user ? false : true; 
    5959 
    60         $wp_list_table = get_list_table( $_GET['list_args']['class'] ); 
    61         if ( ! $wp_list_table ) 
    62                 die( '0' ); 
     60        if ( $current_screen->id == 'dashboard' ) { 
     61                require_once( ABSPATH . 'wp-admin/includes/dashboard.php' ); 
     62                 
     63                ob_start(); 
     64                wp_dashboard_recent_comments( true ); 
     65                $rows = ob_get_clean(); 
     66                 
     67                $response = array( 'rows' => $rows ); 
     68                die( json_encode( $response ) ); 
     69                exit; 
     70        } else { 
     71                $wp_list_table = get_list_table( $_GET['list_args']['class'] ); 
     72                if ( ! $wp_list_table ) 
     73                        die( '0' ); 
    6374 
    64         $wp_list_table->ajax_response(); 
     75                $wp_list_table->ajax_response(); 
     76        } 
    6577 
    6678        die( '0' ); 
    6779        break; 
  • wp-admin/includes/dashboard.php

    diff --git wp-admin/includes/dashboard.php wp-admin/includes/dashboard.php
    index fc5ca47..6ba49fb 100644
    function wp_dashboard_recent_drafts( $drafts = false ) { 
    593593 * 
    594594 * @since 2.5.0 
    595595 */ 
    596 function wp_dashboard_recent_comments() { 
     596function wp_dashboard_recent_comments( $refill = false ) { 
    597597        global $wpdb; 
    598598 
    599599        if ( current_user_can('edit_posts') ) 
    function wp_dashboard_recent_comments() { 
    604604        // Select all comment types and filter out spam later for better query performance. 
    605605        $comments = array(); 
    606606        $start = 0; 
    607  
    608607        $widgets = get_option( 'dashboard_widget_options' ); 
    609         $total_items = isset( $widgets['dashboard_recent_comments'] ) && isset( $widgets['dashboard_recent_comments']['items'] ) 
     608        $comments_shown = isset( $widgets['dashboard_recent_comments'] ) && isset( $widgets['dashboard_recent_comments']['items'] ) 
    610609                ? absint( $widgets['dashboard_recent_comments']['items'] ) : 5; 
     610         
     611        if ( $refill ) { 
     612                $total_items = 1; // only needs to fetch 1 to refill the river 
     613                $offset = $comments_shown + 2; // comments being shown plus 3 in the extra list minus 1 just deleted / spammed 
     614        } else { 
     615                $total_items = $comments_shown + 3; // extra items for the river 
     616        } 
    611617 
    612         while ( count( $comments ) < 5 && $possible = $wpdb->get_results( "SELECT * FROM $wpdb->comments c LEFT JOIN $wpdb->posts p ON c.comment_post_ID = p.ID WHERE p.post_status != 'trash' ORDER BY c.comment_date_gmt DESC LIMIT $start, 50" ) ) { 
     618        while ( count( $comments ) < $total_items && $possible = $wpdb->get_results( "SELECT * FROM $wpdb->comments c LEFT JOIN $wpdb->posts p ON c.comment_post_ID = p.ID WHERE p.post_status != 'trash' ORDER BY c.comment_date_gmt DESC LIMIT $start, 50" ) ) { 
    613619 
    614620                foreach ( $possible as $comment ) { 
    615621                        if ( count( $comments ) >= $total_items ) 
    616622                                break; 
    617                         if ( in_array( $comment->comment_approved, $allowed_states ) && current_user_can( 'read_post', $comment->comment_post_ID ) ) 
     623                        if ( in_array( $comment->comment_approved, $allowed_states ) && current_user_can( 'read_post', $comment->comment_post_ID ) ) { 
     624                                // skip if we're refilling, and this comment is already shown 
     625                                if ( $refill && $offset > 0 ) { 
     626                                        $offset --; 
     627                                        continue; 
     628                                } 
     629                                 
    618630                                $comments[] = $comment; 
     631                        } 
    619632                } 
    620633 
    621634                $start = $start + 50; 
    622635        } 
    623636 
    624637        if ( $comments ) : 
     638                if ( $refill ) : 
     639                        _wp_dashboard_recent_comments_row( $comments[0] ); 
     640                else : // $refill 
    625641?> 
    626  
    627                 <div id="the-comment-list" class="list:comment"> 
     642                        <div id="the-comment-list" class="list:comment"> 
    628643<?php 
    629                 foreach ( $comments as $comment ) 
    630                         _wp_dashboard_recent_comments_row( $comment ); 
     644                        $i = 0; 
     645                        while ( $i < $comments_shown ) { 
     646                                _wp_dashboard_recent_comments_row( $comments[$i] ); 
     647                                $i++; 
     648                        } 
    631649?> 
    632650 
    633                 </div> 
     651                        </div> 
     652                 
     653                        <div id="the-extra-comment-list" class="list:comment" style="display:none"> 
     654                                <?php 
     655                                        while ( $i < $total_items ) { 
     656                                                _wp_dashboard_recent_comments_row( $comments[$i] ); 
     657                                                $i++; 
     658                                        } 
     659                                ?> 
     660                        </div> 
    634661 
    635662<?php 
    636                 if ( current_user_can('edit_posts') ) { ?> 
    637                         <p class="textright"><a href="edit-comments.php" class="button"><?php _e('View all'); ?></a></p> 
     663                        if ( current_user_can('edit_posts') ) { ?> 
     664                                <p class="textright"><a href="edit-comments.php" class="button"><?php _e('View all'); ?></a></p> 
    638665<?php   } 
    639666 
    640                 wp_comment_reply( -1, false, 'dashboard', false ); 
    641                 wp_comment_trashnotice(); 
    642  
    643         else : 
     667                        wp_comment_reply( -1, false, 'dashboard', false ); 
     668                        wp_comment_trashnotice(); 
     669                endif; // $refill 
     670        else :// $comments 
    644671?> 
    645672 
    646673        <p><?php _e( 'No comments yet.' ); ?></p> 
  • wp-admin/js/edit-comments.dev.js

    diff --git wp-admin/js/edit-comments.dev.js wp-admin/js/edit-comments.dev.js
    index 76bcc79..27f6418 100644
    setCommentsList = function() { 
    215215         
    216216        var refillTheExtraList = function(ev) { 
    217217                var args = $.query.get(), total_pages = listTable.get_total_pages(), per_page = $('input[name=_per_page]', '#comments-form').val(); 
    218                  
    219                 if (args.paged > total_pages) { 
    220                         return; 
    221                 } 
    222218 
    223                 if (ev) { 
    224                         theExtraList.empty(); 
    225                         args.number = Math.min(8, per_page); // see WP_Comments_List_Table::prepare_items() @ class-wp-comments-list-table.php 
    226                 } else { 
    227                         args.number = 1; 
    228                         args.offset = per_page - 1; // fetch only the last item of the next page 
     219                if (total_pages && args.paged > total_pages) { 
     220                        return; 
    229221                } 
    230222                 
    231                 args.paged ++; 
     223                if (pagenow != 'dashboard') { 
     224                        if (ev) { 
     225                                theExtraList.empty(); 
     226                                args.number = Math.min(8, per_page); // see WP_Comments_List_Table::prepare_items() @ class-wp-comments-list-table.php 
     227                        } else { 
     228                                args.number = 1; 
     229                                args.offset = per_page - 1; // fetch only the last item of the next page 
     230                        } 
     231                        args.paged ++; 
     232                } 
    232233 
    233234                listTable.fetch_list(args, function(response) { 
    234235                        theExtraList.get(0).wpList.add( response.rows );