WordPress.org

Make WordPress Core

Ticket #15897: 15897.2.diff

File 15897.2.diff, 14.4 KB (added by garyc40, 7 years ago)

patch refreshed

  • wp-admin/admin-ajax.php

    diff --git wp-admin/admin-ajax.php wp-admin/admin-ajax.php
    index d2a8d4d..2c57750 100644
    case 'replyto-comment' : 
    665665        $comment_id = wp_new_comment( $commentdata );
    666666        $comment = get_comment($comment_id);
    667667        if ( ! $comment ) die('1');
    668 
     668       
     669        $parent = get_comment( $comment_parent );
     670       
    669671        $position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1';
    670672
    671673        $x = new WP_Ajax_Response();
    case 'replyto-comment' : 
    684686                }
    685687                $comment_list_item = ob_get_contents();
    686688        ob_end_clean();
    687 
    688         $x->add( array(
     689       
     690        $response = array(
    689691                'what' => 'comment',
    690692                'id' => $comment->comment_ID,
    691693                'data' => $comment_list_item,
    692694                'position' => $position
    693         ));
    694 
     695        );
     696       
     697        // automatically approve parent comment
     698        if ( ! $parent->comment_approved ) {
     699                if ( ! wp_update_comment( array( 'comment_ID' => $comment_parent, 'comment_approved' => 'approve' ) ) )
     700                        die( '1' );
     701               
     702                // include total_items_i18n to update total item number
     703                if ( $_POST['status'] == 'moderated' ) {
     704                        $total = wp_count_comments()->moderated;
     705                        $per_page = (int) $_POST['_per_page'];
     706                        $response['supplemental'] = array(
     707                                'total_items_i18n' => sprintf( _n( '1 item', '%s items', $total ), number_format_i18n( $total ) ),
     708                                'total_pages' => ceil( $total / $per_page ),
     709                                'total_pages_i18n' => number_format_i18n( ceil( $total / $per_page ) ),
     710                                'total' => $total,
     711                                'time' => time()
     712                        );
     713                }
     714        }
     715        $x->add( $response );
    695716        $x->send();
    696717        break;
    697718case 'edit-comment' :
  • wp-admin/css/wp-admin.dev.css

    diff --git wp-admin/css/wp-admin.dev.css wp-admin/css/wp-admin.dev.css
    index 3165a5e..a966541 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 { 
    35423550}
    35433551
    35443552.spam-undo-inside .avatar,
    3545 .trash-undo-inside .avatar {
     3553.trash-undo-inside .avatar,
     3554.replied-approved-notice-inside .avatar {
    35463555        height: 20px;
    35473556        width: 20px;
    35483557        margin-right: 8px;
  • wp-admin/includes/template.php

    diff --git wp-admin/includes/template.php wp-admin/includes/template.php
    index b345c36..5fed7b7 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 b81b397..e860696 100644
     
    1 var theList, theExtraList, toggleWithKeyboard = false;
     1var theList, theExtraList, toggleWithKeyboard = false, commentReply, setCommentsList;
    22(function($) {
    33
     4var dashboardTotals = function(n) {
     5        var dash = $('#dashboard_right_now'), total, appr, totalN, apprN;
     6
     7        n = n || 0;
     8        if ( isNaN(n) || !dash.length )
     9                return;
     10
     11        total = $('span.total-count', dash);
     12        appr = $('span.approved-count', dash);
     13        totalN = getCount(total);
     14
     15        totalN = totalN + n;
     16        apprN = totalN - getCount( $('span.pending-count', dash) ) - getCount( $('span.spam-count', dash) );
     17        updateCount(total, totalN);
     18        updateCount(appr, apprN);
     19
     20}
     21
     22var getCount = function(el) {
     23        var n = parseInt( el.html().replace(/[^0-9]+/g, ''), 10 );
     24        if ( isNaN(n) )
     25                return 0;
     26        return n;
     27}
     28
     29var updateCount = function(el, n) {
     30        var n1 = '';
     31        if ( isNaN(n) )
     32                return;
     33        n = n < 1 ? '0' : n.toString();
     34        if ( n.length > 3 ) {
     35                while ( n.length > 3 ) {
     36                        n1 = thousandsSeparator + n.substr(n.length - 3) + n1;
     37                        n = n.substr(0, n.length - 3);
     38                }
     39                n = n + n1;
     40        }
     41        el.html(n);
     42}
     43
     44var updatePagination = function(r) {
     45        total_items_i18n = r.total_items_i18n || '';
     46        if ( total_items_i18n ) {
     47                $('.displaying-num').text( total_items_i18n );
     48                $('.total-pages').text( r.total_pages_i18n );
     49                $('.tablenav-pages').find('.next-page, .last-page').toggleClass('disabled', r.total_pages == $('.current-page').val());
     50        }
     51}
     52
    453setCommentsList = function() {
    554        var totalInput, perPageInput, pageInput, lastConfidentTime = 0, dimAfter, delBefore, updateTotalCount, delAfter;
    655
    setCommentsList = function() { 
    1261                var c = $('#' + settings.element);
    1362
    1463                if ( c.is('.unapproved') )
    15                         c.find('div.comment_status').html('0')
     64                        c.find('div.comment_status').html('0');
    1665                else
    17                         c.find('div.comment_status').html('1')
     66                        c.find('div.comment_status').html('1');
    1867
    1968                $('span.pending-count').each( function() {
    2069                        var a = $(this), n, dif;
    setCommentsList = function() { 
    81130                                return false;
    82131                        });
    83132                }
    84 
    85133                return settings;
    86134        };
    87135
    setCommentsList = function() { 
    99147                });
    100148        };
    101149
    102         function dashboardTotals(n) {
    103                 var dash = $('#dashboard_right_now'), total, appr, totalN, apprN;
    104 
    105                 n = n || 0;
    106                 if ( isNaN(n) || !dash.length )
    107                         return;
    108 
    109                 total = $('span.total-count', dash);
    110                 appr = $('span.approved-count', dash);
    111                 totalN = getCount(total);
    112 
    113                 totalN = totalN + n;
    114                 apprN = totalN - getCount( $('span.pending-count', dash) ) - getCount( $('span.spam-count', dash) );
    115                 updateCount(total, totalN);
    116                 updateCount(appr, apprN);
    117 
    118         }
    119 
    120         function getCount(el) {
    121                 var n = parseInt( el.html().replace(/[^0-9]+/g, ''), 10 );
    122                 if ( isNaN(n) )
    123                         return 0;
    124                 return n;
    125         }
    126 
    127         function updateCount(el, n) {
    128                 var n1 = '';
    129                 if ( isNaN(n) )
    130                         return;
    131                 n = n < 1 ? '0' : n.toString();
    132                 if ( n.length > 3 ) {
    133                         while ( n.length > 3 ) {
    134                                 n1 = thousandsSeparator + n.substr(n.length - 3) + n1;
    135                                 n = n.substr(0, n.length - 3);
    136                         }
    137                         n = n + n1;
    138                 }
    139                 el.html(n);
    140         }
    141 
    142150        // In admin-ajax.php, we send back the unix time stamp instead of 1 on success
    143151        delAfter = function( r, settings ) {
    144152                var total, pageLinks, N, untrash = $(settings.target).parent().is('span.untrash'), unspam = $(settings.target).parent().is('span.unspam'), spam, trash;
    setCommentsList = function() { 
    185193
    186194                if ( $('#dashboard_right_now').length ) {
    187195                        N = trash ? -1 * trash : 0;
    188                         dashboardTotals(N);
     196                        dashboardTotals(N);     
    189197                } else {
    190198                        total = totalInput.val() ? parseInt( totalInput.val(), 10 ) : 0;
    191199                        total = total - spam - trash;
    setCommentsList = function() { 
    193201                                total = 0;
    194202
    195203                        if ( ( 'object' == typeof r ) && lastConfidentTime < settings.parsed.responses[0].supplemental.time ) {
    196                                 total_items_i18n = settings.parsed.responses[0].supplemental.total_items_i18n || '';
    197                                 if ( total_items_i18n ) {
    198                                         $('.displaying-num').text( total_items_i18n );
    199                                         $('.total-pages').text( settings.parsed.responses[0].supplemental.total_pages_i18n );
    200                                         $('.tablenav-pages').find('.next-page, .last-page').toggleClass('disabled', settings.parsed.responses[0].supplemental.total_pages == $('.current-page').val());
    201                                 }
     204                                updatePagination(settings.parsed.responses[0].supplemental);
    202205                                updateTotalCount( total, settings.parsed.responses[0].supplemental.time, true );
    203206                        } else {
    204207                                updateTotalCount( total, r, false );
    setCommentsList = function() { 
    210213                        return;
    211214                }
    212215
    213                 theList.get(0).wpList.add( theExtraList.children(':eq(0)').remove().clone() );
    214 
    215                 refillTheExtraList();
     216                refillTheList();
    216217        };
    217218
    218219        var refillTheExtraList = function(ev) {
    setCommentsList = function() { 
    258259                        }
    259260                });
    260261        };
     262       
     263        var refillTheList = function() {
     264                theList.get(0).wpList.add( theExtraList.children(':eq(0)').remove().clone() );
     265
     266                refillTheExtraList();
     267        }
    261268
    262269        theExtraList = $('#the-extra-comment-list').wpList( { alt: '', delColor: 'none', addColor: 'none' } );
    263270        theList = $('#the-comment-list').wpList( { alt: '', delBefore: delBefore, dimAfter: dimAfter, delAfter: delAfter, addColor: 'none' } )
    setCommentsList = function() { 
    268275                                $('#undo-' + id).fadeIn(300, function(){ $(this).show() });
    269276                });
    270277        // $(listTable).bind('changePage', refillTheExtraList);
     278        $(commentReply).bind('repliedAndApproved', refillTheList);
    271279};
    272280
    273281commentReply = {
    274282        cid : '',
    275283        act : '',
     284       
     285        focusOn : function(id) {
     286                var c = $('#comment-' + id),
     287                        excluded = c.find('td, th').css('opacity', 1).add('td, th', '#replyrow');
     288                theList.find('td, th').not(excluded).animate({opacity:'0.2'}, 300);
     289                c.addClass('focus');
     290                c.prev().addClass('blur');
     291        },
     292       
     293        focusOff : function() {
     294                theList.
     295                        find('.blur').removeClass('blur').end().
     296                        find('.focus').removeClass('focus');
     297        },
    276298
    277299        init : function() {
    278300                var row = $('#replyrow');
    commentReply = { 
    321343
    322344                if ( $('#the-comment-list #replyrow').length < 1 )
    323345                        return false;
     346                       
     347                theList.find('th, td').animate({opacity : 1}, 300);
    324348
    325349                $('#replyrow').fadeOut('fast', function(){
    326350                        commentReply.close();
    commentReply = { 
    344368                        $('input', '#edithead').val('');
    345369                        $('.error', '#replysubmit').html('').hide();
    346370                        $('.waiting', '#replysubmit').hide();
     371                        this.focusOff();
    347372
    348373                        if ( $.browser.msie )
    349374                                $('#replycontainer, #replycontent').css('height', '120px');
    commentReply = { 
    355380        },
    356381
    357382        open : function(id, p, a) {
    358                 var t = this, editRow, rowData, act, h, c = $('#comment-' + id);
     383                var t = this, editRow, rowData, act, h, c = $('#comment-' + id), replyButton;
    359384                t.close();
    360385                t.cid = id;
    361386
    commentReply = { 
    366391                $('#action', editRow).val(act);
    367392                $('#comment_post_ID', editRow).val(p);
    368393                $('#comment_ID', editRow).val(id);
     394                t.focusOn(id);
    369395
    370396                if ( a == 'edit' ) {
    371397                        $('#author', editRow).val( $('div.author', rowData).text() );
    commentReply = { 
    387413                                $('#replyrow').fadeIn(300, function(){ $(this).show() });
    388414                        });
    389415                } else {
     416                        replyButton = $('#replybtn', editRow);
    390417                        $('#edithead, #savebtn', editRow).hide();
    391418                        $('#replyhead, #replybtn', editRow).show();
     419                        $('#status', editRow).val($('input[name=comment_status]').val());
    392420                        c.after(editRow);
     421                        if (c.hasClass('unapproved')) {
     422                                replyButton.text(adminCommentsL10n.replyApprove);
     423                        } else {
     424                                replyButton.text(adminCommentsL10n.reply);
     425                        }
    393426                        $('#replyrow').fadeIn(300, function(){ $(this).show() });
    394427                }
    395428
    commentReply = { 
    427460        },
    428461
    429462        send : function() {
    430                 var post = {};
     463                var post = {}, c;
    431464
    432465                $('#replysubmit .error').hide();
    433466                $('#replysubmit .waiting').show();
    commentReply = { 
    440473                post.id = post.comment_post_ID;
    441474                post.comments_listing = this.comments_listing;
    442475                post.p = $('[name=p]').val();
    443 
     476                post._per_page = $('input[name="_per_page"]', '#comments-form').val();
     477                c = $('#comment-' + post.comment_ID);
    444478                $.ajax({
    445479                        type : 'POST',
    446480                        url : ajaxurl,
    447481                        data : post,
    448                         success : function(x) { commentReply.show(x); },
     482                        success : function(x) {
     483                                var is_moderated = commentReply.comments_listing == 'moderated', id, note, n, h, author;
     484                               
     485                                r = wpAjax.parseAjaxResponse(x);
     486                                if ( r.errors ) {
     487                                        this.error({'responseText': wpAjax.broken});
     488                                        return false;
     489                                }
     490                               
     491                                if (r.responses[0].supplemental)
     492                                        updatePagination(r.responses[0].supplemental);
     493                               
     494                                if (c.hasClass('unapproved')) {
     495                                        c.removeClass('unapproved').addClass('approved');
     496                                        c.find('div.comment_status').html('1');
     497                                        $('span.pending-count').each( function() {
     498                                                var a = $(this), n = getCount(a);
     499                                                if (! isNaN(n)) {
     500                                                        updateCount(a, Math.max(0, n - 1));
     501                                                        dashboardTotals();
     502                                                }
     503                                        });
     504                                }
     505                               
     506                                if (is_moderated) {
     507                                        id = c.attr('id').replace(/[^0-9]+/g, '');
     508                                        note = $('#replied-approved-notice').html();
     509                                       
     510                                        c.find('.check-column :checkbox').attr('checked', '');
     511
     512                                        if ( c.is('tr') ) {
     513                                                n = c.children(':visible').length;
     514                                                author = $('.author strong', c).text();
     515                                                h = $('<tr id="replied-approved-' + id + '" class="undo" style="display:none;"><td colspan="' + n + '">' + note + '</td></tr>');
     516                                        } else {
     517                                                author = $('.comment-author', c).text();
     518                                                h = $('<div id="replied-approved-' + id + '" style="display:none;" class="undo">' + note + '</div>');
     519                                        }
     520                                        c.before(h);
     521                                        $('strong', '#replied-approved-' + id).text(author + ' ');
     522                                        $('.avatar', c).clone().prependTo('#replied-approved-' + id + ' .replied-approved-notice-inside');
     523
     524                                        c.fadeOut(350, function(){ h.fadeIn(350); });
     525                                        commentReply.revert();
     526                                        $(commentReply).trigger('repliedAndApproved');
     527                                        return;
     528                                }
     529
     530                                commentReply.show(x);
     531                        },
    449532                        error : function(r) { commentReply.error(r); }
    450533                });
    451534
  • wp-admin/js/post.dev.js

    diff --git wp-admin/js/post.dev.js wp-admin/js/post.dev.js
    index fc469b7..b3df35a 100644
    commentsBox = { 
    194194                                if ( 'object' == typeof r && r.responses[0] ) {
    195195                                        $('#the-comment-list').append( r.responses[0].data );
    196196
    197                                         theList = theExtraList = null;
     197//                                      theList = theExtraList = null;
    198198                                        $("a[className*=':']").unbind();
    199199
    200200                                        if ( commentsBox.st > commentsBox.total )
  • wp-includes/js/wp-lists.dev.js

    diff --git wp-includes/js/wp-lists.dev.js wp-includes/js/wp-lists.dev.js
    index fb145ab..02119aa 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 ef51ed5..e1385b4 100644
    function wp_default_scripts( &$scripts ) { 
    303303                $scripts->add_data( 'admin-comments', 'group', 1 );
    304304                $scripts->localize( 'admin-comments', 'adminCommentsL10n', array(
    305305                        'hotkeys_highlight_first' => isset($_GET['hotkeys_highlight_first']),
    306                         'hotkeys_highlight_last' => isset($_GET['hotkeys_highlight_last'])
     306                        'hotkeys_highlight_last' => isset($_GET['hotkeys_highlight_last']),
     307                        'replyApprove' => __( 'Approve and Reply' ),
     308                        'reply' => __( 'Reply' ),
    307309                ) );
    308310
    309311                $scripts->add( 'xfn', "/wp-admin/js/xfn$suffix.js", array('jquery'), '20100403' );