WordPress.org

Make WordPress Core

Ticket #15527: 15527.2.diff

File 15527.2.diff, 12.9 KB (added by garyc40, 4 years ago)

patch refreshed

  • wp-admin/admin-ajax.php

    diff --git wp-admin/admin-ajax.php wp-admin/admin-ajax.php
    index d2a8d4d..9c56917 100644
    function _wp_ajax_add_hierarchical_term() { 
    316316        $x->send(); 
    317317} 
    318318 
     319function _wp_add_comment( $action ) { 
     320        global $wpdb; 
     321         
     322        check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' ); 
     323 
     324        set_current_screen( 'edit-comments' ); 
     325 
     326        $comment_post_ID = (int) $_POST['comment_post_ID']; 
     327        if ( !current_user_can( 'edit_post', $comment_post_ID ) ) 
     328                die('-1'); 
     329 
     330        $error_messages = array( 
     331                'replyto-comment' => array( 
     332                        'invalid_status' => __( 'Error: you are replying to a comment on a draft post.' ), 
     333                        'must_log_in'    => __( 'Sorry, you must be logged in to reply to a comment.' ), 
     334                        'type_something' => __( 'Error: please type a comment.' ), 
     335                ), 
     336                'add-comment' => array( 
     337                        'invalid_status' => __( 'Error: you are adding comment on a draft post.' ), 
     338                        'must_log_in'    => __( 'Sorry, you must be logged in to add a comment.' ), 
     339                        'type_something' => __( 'Error: please type a comment.' ), 
     340                ), 
     341        ); 
     342 
     343        $status = get_post_status( $comment_post_ID ); 
     344 
     345        if ( empty( $status ) ) 
     346                die( '1' ); 
     347        elseif ( in_array( $status, array( 'draft', 'pending', 'trash' ) ) ) 
     348                die( $error_messages[$action]['invalid_status'] ); 
     349 
     350        $user = wp_get_current_user(); 
     351        if ( ! $user->ID ) { 
     352                die( $error_messages[$action]['must_log_in'] ); 
     353        } 
     354         
     355        $comment_content = trim($_POST['content']); 
     356         
     357        if ( '' == $comment_content ) 
     358                die( $error_messages[$action]['type_something'] ); 
     359         
     360        $comment_author       = $wpdb->escape($user->display_name); 
     361        $comment_author_email = $wpdb->escape($user->user_email); 
     362        $comment_author_url   = $wpdb->escape($user->user_url); 
     363        $comment_type         = ''; 
     364         
     365        if ( current_user_can( 'unfiltered_html' ) ) { 
     366                if ( wp_create_nonce( 'unfiltered-html-comment_' . $comment_post_ID ) != $_POST['_wp_unfiltered_html_comment'] ) { 
     367                        kses_remove_filters(); // start with a clean slate 
     368                        kses_init_filters(); // set up the filters 
     369                } 
     370        } 
     371 
     372        $comment_parent = ( $action == 'replyto-comment' ) ? absint( $_POST['comment_ID'] ) : 0; 
     373        $commentdata    = compact( 'comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID' ); 
     374        $comment_id     = wp_new_comment( $commentdata ); 
     375        $comment        = get_comment( $comment_id ); 
     376         
     377        if ( ! $comment ) die( '1' ); 
     378 
     379        $position = ( isset( $_POST['position'] ) && (int) $_POST['position'] ) ? (int) $_POST['position'] : '-1'; 
     380 
     381        $x = new WP_Ajax_Response(); 
     382 
     383        ob_start(); 
     384                if ( 'dashboard' == $_REQUEST['mode'] ) { 
     385                        require_once( ABSPATH . 'wp-admin/includes/dashboard.php' ); 
     386                        _wp_dashboard_recent_comments_row( $comment ); 
     387                } else { 
     388                        if ( 'single' == $_REQUEST['mode'] ) { 
     389                                $wp_list_table = _get_list_table( 'WP_Post_Comments_List_Table' ); 
     390                        } else {                                 
     391                                $wp_list_table = _get_list_table( 'WP_Comments_List_Table' ); 
     392                        } 
     393                        $wp_list_table->single_row( $comment ); 
     394                } 
     395                $comment_list_item = ob_get_contents(); 
     396        ob_end_clean(); 
     397 
     398        $x->add( array( 
     399                'what'     => 'comment', 
     400                'id'       => $comment->comment_ID, 
     401                'data'     => $comment_list_item, 
     402                'position' => $position 
     403        )); 
     404 
     405        $x->send(); 
     406} 
     407 
    319408$id = isset($_POST['id'])? (int) $_POST['id'] : 0; 
    320409switch ( $action = $_POST['action'] ) : 
    321410case 'delete-comment' : // On success, die with time() instead of 1 
    case 'get-comments' : 
    624713        ) ); 
    625714        $x->send(); 
    626715        break; 
    627 case 'replyto-comment' : 
    628         check_ajax_referer( $action, '_ajax_nonce-replyto-comment' ); 
    629  
    630         set_current_screen( 'edit-comments' ); 
    631716 
    632         $comment_post_ID = (int) $_POST['comment_post_ID']; 
    633         if ( !current_user_can( 'edit_post', $comment_post_ID ) ) 
    634                 die('-1'); 
    635  
    636         $status = $wpdb->get_var( $wpdb->prepare("SELECT post_status FROM $wpdb->posts WHERE ID = %d", $comment_post_ID) ); 
    637  
    638         if ( empty($status) ) 
    639                 die('1'); 
    640         elseif ( in_array($status, array('draft', 'pending', 'trash') ) ) 
    641                 die( __('Error: you are replying to a comment on a draft post.') ); 
    642  
    643         $user = wp_get_current_user(); 
    644         if ( $user->ID ) { 
    645                 $comment_author       = $wpdb->escape($user->display_name); 
    646                 $comment_author_email = $wpdb->escape($user->user_email); 
    647                 $comment_author_url   = $wpdb->escape($user->user_url); 
    648                 $comment_content      = trim($_POST['content']); 
    649                 if ( current_user_can('unfiltered_html') ) { 
    650                         if ( wp_create_nonce('unfiltered-html-comment_' . $comment_post_ID) != $_POST['_wp_unfiltered_html_comment'] ) { 
    651                                 kses_remove_filters(); // start with a clean slate 
    652                                 kses_init_filters(); // set up the filters 
    653                         } 
    654                 } 
    655         } else { 
    656                 die( __('Sorry, you must be logged in to reply to a comment.') ); 
    657         } 
    658  
    659         if ( '' == $comment_content ) 
    660                 die( __('Error: please type a comment.') ); 
    661  
    662         $comment_parent = absint($_POST['comment_ID']); 
    663         $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID'); 
    664  
    665         $comment_id = wp_new_comment( $commentdata ); 
    666         $comment = get_comment($comment_id); 
    667         if ( ! $comment ) die('1'); 
    668  
    669         $position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1'; 
    670  
    671         $x = new WP_Ajax_Response(); 
    672  
    673         ob_start(); 
    674                 if ( 'dashboard' == $_REQUEST['mode'] ) { 
    675                         require_once( ABSPATH . 'wp-admin/includes/dashboard.php' ); 
    676                         _wp_dashboard_recent_comments_row( $comment ); 
    677                 } else { 
    678                         if ( 'single' == $_REQUEST['mode'] ) { 
    679                                 $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); 
    680                         } else { 
    681                                 $wp_list_table = _get_list_table('WP_Comments_List_Table'); 
    682                         } 
    683                         $wp_list_table->single_row( $comment ); 
    684                 } 
    685                 $comment_list_item = ob_get_contents(); 
    686         ob_end_clean(); 
    687  
    688         $x->add( array( 
    689                 'what' => 'comment', 
    690                 'id' => $comment->comment_ID, 
    691                 'data' => $comment_list_item, 
    692                 'position' => $position 
    693         )); 
    694  
    695         $x->send(); 
     717case 'add-comment': 
     718case 'replyto-comment': 
     719        _wp_add_comment( $_POST['action'] ); 
    696720        break; 
    697721case 'edit-comment' : 
    698722        check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' ); 
  • wp-admin/css/colors-classic.dev.css

    diff --git wp-admin/css/colors-classic.dev.css wp-admin/css/colors-classic.dev.css
    index 26cb708..c6d0c23 100644
    table.diff .diff-addedline ins { 
    13041304} 
    13051305 
    13061306#edithead, 
    1307 #replyhead { 
     1307#replyhead, 
     1308#addhead { 
    13081309        background-color: #f1f1f1; 
    13091310} 
    13101311 
  • wp-admin/css/colors-fresh.dev.css

    diff --git wp-admin/css/colors-fresh.dev.css wp-admin/css/colors-fresh.dev.css
    index 6325917..b66fd7f 100644
    table.diff .diff-addedline ins { 
    13011301} 
    13021302 
    13031303#edithead, 
    1304 #replyhead { 
     1304#replyhead, 
     1305#addhead { 
    13051306        background-color: #f1f1f1; 
    13061307} 
    13071308 
  • wp-admin/css/dashboard-rtl.dev.css

    diff --git wp-admin/css/dashboard-rtl.dev.css wp-admin/css/dashboard-rtl.dev.css
    index b0219f2..b6d40a4 100644
     
    4141        float: left; 
    4242        clear: left; 
    4343} 
    44 #dashboard-widgets h3 .postbox-title-action { 
    45         right: auto; 
    46         left: 30px; 
    47 } 
    4844#the-comment-list .pingback { 
    4945        padding-left: 0 !important; 
    5046        padding-right: 9px !important; 
  • wp-admin/css/dashboard.dev.css

    diff --git wp-admin/css/dashboard.dev.css wp-admin/css/dashboard.dev.css
    index 15da850..f212dcb 100644
     
    11.postbox p, .postbox ul, .postbox ol, .postbox blockquote, #wp-version-message { font-size: 11px; } 
    22 
    3 .edit-box { 
    4         display: none; 
    5 } 
    6  
    7 h3:hover .edit-box { 
    8         display: inline; 
    9 } 
    10  
    113form .input-text-wrap { 
    124        border-style: solid; 
    135        border-width: 1px; 
    div.postbox div.inside { 
    6961        text-decoration: underline; 
    7062} 
    7163 
    72 #dashboard-widgets h3 .postbox-title-action { 
    73         position: absolute; 
    74         right: 30px; 
    75         padding: 0; 
    76 } 
    77  
    7864#dashboard-widgets h4 { 
    7965        font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; 
    8066        font-size: 13px; 
  • wp-admin/css/wp-admin-rtl.dev.css

    diff --git wp-admin/css/wp-admin-rtl.dev.css wp-admin/css/wp-admin-rtl.dev.css
    index 463be70..ff2d096 100644
    ol { 
    604604        padding-left: 0.5%; 
    605605        padding-right: 0; 
    606606} 
     607.postbox h3 .postbox-title-action { 
     608        right: auto; 
     609        left: 30px; 
     610} 
    607611 
    608612/* Media library */ 
    609613#wpbody-content .describe th { 
  • wp-admin/css/wp-admin.dev.css

    diff --git wp-admin/css/wp-admin.dev.css wp-admin/css/wp-admin.dev.css
    index 8506810..c0059eb 100644
    body.admin-bar #wphead { 
    11991199        padding: 6px 0; 
    12001200} 
    12011201 
     1202.postbox h3 .postbox-title-action { 
     1203        display:none; 
     1204        position:absolute; 
     1205        right:30px; 
     1206        padding:0; 
     1207} 
     1208 
     1209.postbox h3:hover .postbox-title-action { 
     1210        display:inline; 
     1211} 
     1212 
    12021213.postbox .hndle { 
    12031214        cursor: move; 
    12041215} 
    span.imgedit-scale-warn { 
    34763487        display: none; 
    34773488} 
    34783489 
    3479 #replyhead { 
     3490#addhead, #replyhead { 
    34803491        font-size: 12px; 
    34813492        font-weight: bold; 
    34823493        padding: 2px 10px 4px; 
  • wp-admin/edit-form-advanced.php

    diff --git wp-admin/edit-form-advanced.php wp-admin/edit-form-advanced.php
    index 30f1c0f..9e19117 100644
    if ( post_type_supports($post_type, 'comments') ) 
    146146        add_meta_box('commentstatusdiv', __('Discussion'), 'post_comment_status_meta_box', $post_type, 'normal', 'core'); 
    147147 
    148148if ( ('publish' == $post->post_status || 'private' == $post->post_status) && post_type_supports($post_type, 'comments') ) 
    149         add_meta_box('commentsdiv', __('Comments'), 'post_comment_meta_box', $post_type, 'normal', 'core'); 
     149        add_meta_box('commentsdiv', sprintf( '%s<span class="postbox-title-action"><a href="#">%s</a></span>', __('Comments'), __('Add new comment') ), 'post_comment_meta_box', $post_type, 'normal', 'core'); 
    150150 
    151151if ( !( 'pending' == $post->post_status && !current_user_can( $post_type_object->cap->publish_posts ) ) ) 
    152152        add_meta_box('slugdiv', __('Slug'), 'post_slug_meta_box', $post_type, 'normal', 'core'); 
  • wp-admin/includes/template.php

    diff --git wp-admin/includes/template.php wp-admin/includes/template.php
    index b345c36..204862b 100644
    function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single', 
    345345<div id="com-reply" style="display:none;"><div id="replyrow" style="display:none;"> 
    346346<?php endif; ?> 
    347347        <div id="replyhead" style="display:none;"><?php _e('Reply to Comment'); ?></div> 
     348         
     349        <div id="addhead" style="display:none;"><?php _e('Add new Comment'); ?></div> 
    348350 
    349351        <div id="edithead" style="display:none;"> 
    350352                <div class="inside"> 
    function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single', 
    369371        <p id="replysubmit" class="submit"> 
    370372        <a href="#comments-form" class="cancel button-secondary alignleft" tabindex="106"><?php _e('Cancel'); ?></a> 
    371373        <a href="#comments-form" class="save button-primary alignright" tabindex="104"> 
     374        <span id="addbtn" style="display:none;"><?php _e('Add Comment'); ?></span> 
    372375        <span id="savebtn" style="display:none;"><?php _e('Update Comment'); ?></span> 
    373376        <span id="replybtn" style="display:none;"><?php _e('Submit Reply'); ?></span></a> 
    374377        <img class="waiting" style="display:none;" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" /> 
  • wp-admin/js/edit-comments.dev.js

    diff --git wp-admin/js/edit-comments.dev.js wp-admin/js/edit-comments.dev.js
    index fbadeba..3248e82 100644
    commentReply = { 
    302302                /* $(listTable).bind('beforeChangePage', function(){ 
    303303                        commentReply.close(); 
    304304                }); */ 
     305                 
     306                $('#commentsdiv .postbox-title-action a').click(function(){ 
     307                        var postID = $('input[name=post_ID]').val(); 
     308                        commentReply.open('new', postID, 'add'); 
     309                        return false; 
     310                }); 
    305311        }, 
    306312 
    307313        addEvents : function(r) { 
    commentReply = { 
    361367 
    362368                editRow = $('#replyrow'); 
    363369                rowData = $('#inline-'+id); 
    364                 act = t.act = (a == 'edit') ? 'edit-comment' : 'replyto-comment'; 
     370                 
     371                if (! a) { 
     372                        a = 'replyto'; 
     373                } 
     374                 
     375                act = t.act = a + '-comment'; 
    365376 
    366377                $('#action', editRow).val(act); 
    367378                $('#comment_post_ID', editRow).val(p); 
    commentReply = { 
    374385                        $('#status', editRow).val( $('div.comment_status', rowData).text() ); 
    375386                        $('#replycontent', editRow).val( $('textarea.comment', rowData).val() ); 
    376387                        $('#edithead, #savebtn', editRow).show(); 
    377                         $('#replyhead, #replybtn', editRow).hide(); 
     388                        $('#replyhead, #replybtn, #addhead, #addbtn', editRow).hide(); 
    378389 
    379390                        h = c.height(); 
    380391                        if ( h > 220 ) 
    commentReply = { 
    386397                        c.after( editRow ).fadeOut('fast', function(){ 
    387398                                $('#replyrow').fadeIn(300, function(){ $(this).show() }); 
    388399                        }); 
     400                } else if (a == 'add') { 
     401                        $('#addhead, #addbtn', editRow).show(); 
     402                        $('#replyhead, #replybtn, #edithead, #editbtn', editRow).hide(); 
     403                        $('#the-comment-list').prepend(editRow); 
     404                        $('#replyrow').fadeIn(300); 
    389405                } else { 
    390                         $('#edithead, #savebtn', editRow).hide(); 
     406                        $('#edithead, #savebtn, #addhead, #addbtn', editRow).hide(); 
    391407                        $('#replyhead, #replybtn', editRow).show(); 
    392408                        c.after(editRow); 
    393409                        $('#replyrow').fadeIn(300, function(){ $(this).show() });