WordPress.org

Make WordPress Core

Ticket #15897: 15897.2.diff

File 15897.2.diff, 14.4 KB (added by garyc40, 3 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' );