WordPress.org

Make WordPress Core

Ticket #15897: garyc40-15897.patch

File garyc40-15897.patch, 9.1 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 5eb33e1..c740291 100644
    case 'replyto-comment' : 
    661661        $comment_id = wp_new_comment( $commentdata ); 
    662662        $comment = get_comment($comment_id); 
    663663        if ( ! $comment ) die('1'); 
    664  
     664         
     665        $parent = get_comment( $comment_parent ); 
     666        if ( ! $parent->comment_approved && ! wp_update_comment( array( 'comment_ID' => $comment_parent, 'comment_approved' => 'approve' ) ) ) { 
     667                die('1'); 
     668        } 
    665669        $position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1'; 
    666670 
    667671        $x = new WP_Ajax_Response(); 
  • wp-admin/css/wp-admin.dev.css

    diff --git wp-admin/css/wp-admin.dev.css wp-admin/css/wp-admin.dev.css
    index 1781101..0ffe20a 100644
    table.fixed { 
    13731373#comments-form .fixed .column-author { 
    13741374        width: 20%; 
    13751375} 
     1376.comments tr.focus th, .comments tr.focus td { 
     1377        border-top-width:1px; 
     1378        border-top-style:solid; 
     1379} 
     1380 
     1381.comments tr.blur th, .comments tr.blur td { 
     1382        border-bottom-width:0; 
     1383} 
    13761384#commentsdiv.postbox .inside { 
    13771385        line-height:1.4em; 
    13781386        margin:0; 
    span.imgedit-scale-warn { 
    35363544} 
    35373545 
    35383546.spam-undo-inside .avatar, 
    3539 .trash-undo-inside .avatar { 
     3547.trash-undo-inside .avatar, 
     3548.replied-approved-notice-inside .avatar { 
    35403549        height: 20px; 
    35413550        width: 20px; 
    35423551        margin-right: 8px; 
  • wp-admin/includes/template.php

    diff --git wp-admin/includes/template.php wp-admin/includes/template.php
    index 5f5c1c3..7af5c66 100644
    function wp_comment_trashnotice() { 
    408408<div class="hidden" id="spam-undo-holder"> 
    409409        <div class="spam-undo-inside"><?php printf(__('Comment by %s marked as spam.'), '<strong></strong>'); ?> <span class="undo unspam"><a href="#"><?php _e('Undo'); ?></a></span></div> 
    410410</div> 
     411<div class="hidden" id="replied-approved-notice"> 
     412        <div class="replied-approved-notice-inside"><?php printf(__('Comment by %s replied to and approved.'), '<strong></strong>'); ?></div> 
     413</div> 
    411414<?php 
    412415} 
    413416 
  • wp-admin/js/edit-comments.dev.js

    diff --git wp-admin/js/edit-comments.dev.js wp-admin/js/edit-comments.dev.js
    index 177dc86..3f29a56 100644
     
    1 var theList, theExtraList, toggleWithKeyboard = false; 
     1var theList, theExtraList, toggleWithKeyboard = false, commentReply, setCommentsList; 
    22(function($) { 
    33 
    44setCommentsList = function() { 
    setCommentsList = function() { 
    1212                var c = $('#' + settings.element); 
    1313 
    1414                if ( c.is('.unapproved') ) 
    15                         c.find('div.comment_status').html('0') 
     15                        c.find('div.comment_status').html('0'); 
    1616                else 
    17                         c.find('div.comment_status').html('1') 
     17                        c.find('div.comment_status').html('1'); 
    1818 
    1919                $('span.pending-count').each( function() { 
    2020                        var a = $(this), n, dif; 
    setCommentsList = function() { 
    8080                                return false; 
    8181                        }); 
    8282                } 
    83  
    8483                return settings; 
    8584        }; 
    8685 
    setCommentsList = function() { 
    209208                        return; 
    210209                } 
    211210 
    212                 theList.get(0).wpList.add( theExtraList.children(':eq(0)').remove().clone() ); 
    213  
    214                 refillTheExtraList(); 
     211                refillTheList(); 
    215212        }; 
    216213         
    217214        var refillTheExtraList = function(ev) { 
    218215                var args = $.query.get(), total_pages = listTable.get_total_pages(), per_page = $('input[name=_per_page]', '#comments-form').val(); 
    219                  
     216 
    220217                if (args.paged > total_pages) { 
    221218                        return; 
    222219                } 
    setCommentsList = function() { 
    237234                        theExtraList.get(0).wpList.add( response.rows ); 
    238235                }); 
    239236        }; 
     237         
     238        var refillTheList = function() { 
     239                theList.get(0).wpList.add( theExtraList.children(':eq(0)').remove().clone() ); 
     240 
     241                refillTheExtraList(); 
     242        } 
    240243 
    241244        theExtraList = $('#the-extra-comment-list').wpList( { alt: '', delColor: 'none', addColor: 'none' } ); 
    242245        theList = $('#the-comment-list').wpList( { alt: '', delBefore: delBefore, dimAfter: dimAfter, delAfter: delAfter, addColor: 'none' } ) 
    setCommentsList = function() { 
    247250                                $('#undo-' + id).fadeIn(300, function(){ $(this).show() }); 
    248251                }); 
    249252        $(listTable).bind('changePage', refillTheExtraList); 
     253        $(commentReply).bind('repliedAndApproved', refillTheList); 
    250254}; 
    251255 
    252256commentReply = { 
    253257        cid : '', 
    254258        act : '', 
     259         
     260        showOverlay : function(id) { 
     261                var c = $('#comment-' + id),  
     262                        excluded = c.find('td, th').css('opacity', 1).add('td, th', '#replyrow'); 
     263                listTable.$tbody.find('td, th').not(excluded).animate({opacity:'0.2'}, 300); 
     264                c.addClass('focus'); 
     265                c.prev().addClass('blur'); 
     266        }, 
     267         
     268        hideOverlay : function() { 
     269                listTable.$tbody. 
     270                        find('.blur').removeClass('blur').end(). 
     271                        find('.focus').removeClass('focus'); 
     272        }, 
    255273 
    256274        init : function() { 
    257275                var row = $('#replyrow'); 
    commentReply = { 
    300318 
    301319                if ( $('#the-comment-list #replyrow').length < 1 ) 
    302320                        return false; 
     321                         
     322                listTable.$tbody.find('th, td').animate({opacity : 1}, 300); 
    303323 
    304324                $('#replyrow').fadeOut('fast', function(){ 
    305325                        commentReply.close(); 
    commentReply = { 
    323343                        $('input', '#edithead').val(''); 
    324344                        $('.error', '#replysubmit').html('').hide(); 
    325345                        $('.waiting', '#replysubmit').hide(); 
     346                        this.hideOverlay(); 
    326347 
    327348                        if ( $.browser.msie ) 
    328349                                $('#replycontainer, #replycontent').css('height', '120px'); 
    commentReply = { 
    334355        }, 
    335356 
    336357        open : function(id, p, a) { 
    337                 var t = this, editRow, rowData, act, h, c = $('#comment-' + id); 
     358                var t = this, editRow, rowData, act, h, c = $('#comment-' + id), replyButton; 
    338359                t.close(); 
    339360                t.cid = id; 
    340361 
    commentReply = { 
    345366                $('#action', editRow).val(act); 
    346367                $('#comment_post_ID', editRow).val(p); 
    347368                $('#comment_ID', editRow).val(id); 
    348  
     369                t.showOverlay(id); 
     370                 
    349371                if ( a == 'edit' ) { 
    350372                        $('#author', editRow).val( $('div.author', rowData).text() ); 
    351373                        $('#author-email', editRow).val( $('div.author-email', rowData).text() ); 
    commentReply = { 
    366388                                $('#replyrow').fadeIn(300, function(){ $(this).show() }); 
    367389                        }); 
    368390                } else { 
     391                        replyButton = $('#replybtn', editRow); 
    369392                        $('#edithead, #savebtn', editRow).hide(); 
    370393                        $('#replyhead, #replybtn', editRow).show(); 
    371394                        c.after(editRow); 
     395                        if (c.hasClass('unapproved')) { 
     396                                replyButton.text(adminCommentsL10n.replyApprove); 
     397                        } else { 
     398                                replyButton.text(adminCommentsL10n.reply); 
     399                        } 
    372400                        $('#replyrow').fadeIn(300, function(){ $(this).show() }); 
    373401                } 
    374402 
    commentReply = { 
    406434        }, 
    407435 
    408436        send : function() { 
    409                 var post = {}; 
     437                var post = {}, c; 
    410438 
    411439                $('#replysubmit .error').hide(); 
    412440                $('#replysubmit .waiting').show(); 
    commentReply = { 
    419447                post.id = post.comment_post_ID; 
    420448                post.comments_listing = this.comments_listing; 
    421449                post.p = $('[name=p]').val(); 
    422  
     450                c = $('#comment-' + post.comment_ID); 
    423451                $.ajax({ 
    424452                        type : 'POST', 
    425453                        url : ajaxurl, 
    426454                        data : post, 
    427                         success : function(x) { commentReply.show(x); }, 
     455                        success : function(x) {  
     456                                var is_moderated = commentReply.comments_listing == 'moderated', id, note, n, h, author; 
     457                                if (is_moderated) { 
     458                                        id = c.attr('id').replace(/[^0-9]+/g, ''); 
     459                                        note = $('#replied-approved-notice').html(); 
     460                                         
     461                                        c.find('.check-column :checkbox').attr('checked', ''); 
     462 
     463                                        if ( c.is('tr') ) { 
     464                                                n = c.children(':visible').length; 
     465                                                author = $('.author strong', c).text(); 
     466                                                h = $('<tr id="replied-approved-' + id + '" class="undo" style="display:none;"><td colspan="' + n + '">' + note + '</td></tr>'); 
     467                                        } else { 
     468                                                author = $('.comment-author', c).text(); 
     469                                                h = $('<div id="replied-approved-' + id + '" style="display:none;" class="undo">' + note + '</div>'); 
     470                                        } 
     471                                        c.before(h); 
     472                                        $('strong', '#replied-approved-' + id).text(author + ' '); 
     473                                        $('.avatar', c).clone().prependTo('#replied-approved-' + id + ' .replied-approved-notice-inside'); 
     474 
     475                                        c.fadeOut(350, function(){ h.fadeIn(350); }); 
     476                                        commentReply.revert(); 
     477                                        $(commentReply).trigger('repliedAndApproved'); 
     478                                        return; 
     479                                } 
     480                                 
     481                                if (c.hasClass('unapproved')) { 
     482                                        c.removeClass('unapproved').addClass('approved'); 
     483                                        c.find('div.comment_status').html('1'); 
     484                                } 
     485                                 
     486                                commentReply.show(x); 
     487                        }, 
    428488                        error : function(r) { commentReply.error(r); } 
    429489                }); 
    430490 
  • wp-includes/js/wp-lists.dev.js

    diff --git wp-includes/js/wp-lists.dev.js wp-includes/js/wp-lists.dev.js
    index d425931..a8d32f8 100644
    wpList = { 
    142142                if ( !s.data._ajax_nonce ) { return true; } 
    143143 
    144144                element = $('#' + s.element); 
    145  
    146145                if ( 'none' != s.delColor ) { 
    147146                        element.css( 'backgroundColor', s.delColor ).fadeOut( 350, function(){ 
    148147                                list.wpList.recolor(); 
  • wp-includes/script-loader.php

    diff --git wp-includes/script-loader.php wp-includes/script-loader.php
    index 706fd0a..0df59e4 100644
    function wp_default_scripts( &$scripts ) { 
    316316                $scripts->add_data( 'admin-comments', 'group', 1 ); 
    317317                $scripts->localize( 'admin-comments', 'adminCommentsL10n', array( 
    318318                        'hotkeys_highlight_first' => isset($_GET['hotkeys_highlight_first']), 
    319                         'hotkeys_highlight_last' => isset($_GET['hotkeys_highlight_last']) 
     319                        'hotkeys_highlight_last' => isset($_GET['hotkeys_highlight_last']), 
     320                        'replyApprove' => __( 'Approve and Reply' ), 
     321                        'reply' => __( 'Reply' ), 
    320322                ) ); 
    321323 
    322324                $scripts->add( 'xfn', "/wp-admin/js/xfn$suffix.js", array('jquery'), '20100403' );