From 20f6db2b180dd797af33d1bd3d14f7a5ab6fe547 Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Thu, 20 Aug 2015 16:36:25 +0000 Subject: [PATCH] Comment List Tables: * Ensure that dynamic bubble counts are in sync by `comment_post_ID` * Scope `:animated` to `#the-comment-list` See #11200. Built from https://develop.svn.wordpress.org/trunk@33662 git-svn-id: http://core.svn.wordpress.org/trunk@33629 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/includes/ajax-actions.php | 4 +- .../includes/class-wp-comments-list-table.php | 4 +- wp-admin/includes/class-wp-list-table.php | 5 + wp-admin/js/edit-comments.js | 104 +++++++++++++++--- wp-admin/js/edit-comments.min.js | 2 +- wp-includes/version.php | 2 +- 6 files changed, 103 insertions(+), 18 deletions(-) diff --git a/wp-admin/includes/ajax-actions.php b/wp-admin/includes/ajax-actions.php index ccb8aa7939..cf56c535c3 100644 --- a/wp-admin/includes/ajax-actions.php +++ b/wp-admin/includes/ajax-actions.php @@ -357,6 +357,7 @@ function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) { 'id' => $comment_id, 'supplemental' => array( 'status' => $comment ? $comment->comment_approved : '', + 'postId' => $comment ? $comment->comment_post_ID : '', 'time' => $time ) ) ); @@ -398,6 +399,7 @@ function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) { 'id' => $comment_id, 'supplemental' => array( 'status' => $comment ? $comment->comment_approved : '', + 'postId' => $comment ? $comment->comment_post_ID : '', 'total_items_i18n' => sprintf( _n( '%s item', '%s items', $total ), number_format_i18n( $total ) ), 'total_pages' => ceil( $total / $per_page ), 'total_pages_i18n' => number_format_i18n( ceil( $total / $per_page ) ), @@ -1042,7 +1044,7 @@ function wp_ajax_replyto_comment( $action ) { ); if ( $comment_auto_approved ) - $response['supplemental'] = array( 'parent_approved' => $parent->comment_ID ); + $response['supplemental'] = array( 'parent_approved' => $parent->comment_ID, 'parent_post_id' => $parent->comment_post_ID ); $x = new WP_Ajax_Response(); $x->add( $response ); diff --git a/wp-admin/includes/class-wp-comments-list-table.php b/wp-admin/includes/class-wp-comments-list-table.php index 8bbfb3e836..7104486c85 100644 --- a/wp-admin/includes/class-wp-comments-list-table.php +++ b/wp-admin/includes/class-wp-comments-list-table.php @@ -411,7 +411,7 @@ class WP_Comments_List_Table extends WP_List_Table { items = $this->extra_items; - $this->display_rows_or_placeholder(); + $this->display_rows_or_placeholder(); ?> @@ -698,7 +698,7 @@ class WP_Comments_List_Table extends WP_List_Table { echo $post_link; $post_type_object = get_post_type_object( $post->post_type ); echo "" . $post_type_object->labels->view_item . ''; - echo ''; + echo ''; $this->comments_bubble( $post->ID, $pending_comments ); echo ' '; echo ''; diff --git a/wp-admin/includes/class-wp-list-table.php b/wp-admin/includes/class-wp-list-table.php index ad35fc670a..17e96898bb 100644 --- a/wp-admin/includes/class-wp-list-table.php +++ b/wp-admin/includes/class-wp-list-table.php @@ -648,6 +648,11 @@ class WP_List_Table { $pending_comments_number, $pending_phrase ); + } else { + printf( '%s', + $pending_comments_number, + $approved_comments ? __( 'No pending comments' ) : __( 'No comments' ) + ); } } diff --git a/wp-admin/js/edit-comments.js b/wp-admin/js/edit-comments.js index 5a09a6c6f7..aa86592edf 100644 --- a/wp-admin/js/edit-comments.js +++ b/wp-admin/js/edit-comments.js @@ -2,7 +2,7 @@ var setCommentsList, theList, theExtraList, commentReply; (function($) { -var getCount, updateCount, updateCountText, updatePending; +var getCount, updateCount, updateCountText, updatePending, updateApproved; setCommentsList = function() { var totalInput, perPageInput, pageInput, dimAfter, delBefore, updateTotalCount, delAfter, refillTheExtraList, diff, @@ -14,7 +14,7 @@ setCommentsList = function() { // this fires when viewing "All" dimAfter = function( r, settings ) { - var editRow, replyID, replyButton, + var editRow, replyID, replyButton, response, c = $( '#' + settings.element ); editRow = $('#replyrow'); @@ -34,9 +34,14 @@ setCommentsList = function() { } diff = $('#' + settings.element).is('.' + settings.dimClass) ? 1 : -1; - updatePending( diff ); - updateCountText( 'span.approved-count', -1 * diff ); - updateCountText( 'span.comment-count-approved', -1 * diff ); + if ( true !== settings.parsed && settings.parsed.responses.length ) { + response = settings.parsed.responses[0].supplemental; + updatePending( diff, response.postId ); + updateApproved( -1 * diff, response.postId ); + } else { + updatePending( diff ); + updateApproved( -1 * diff ); + } }; // Send current total, page, per_page and url @@ -130,14 +135,85 @@ setCommentsList = function() { el.html(n); }; - updatePending = function( diff ) { - $('span.pending-count, .comment-count-pending').each(function() { + updatePending = function( diff, commentPostId ) { + var postSelector = '.post-com-count-' + commentPostId, + noClass = 'comment-count-no-pending', + pendingClass = 'comment-count-pending', + counts = $( 'span.pending-count' ), + pending, + noPending; + + counts.each(function() { var a = $(this), n = getCount(a) + diff; if ( n < 1 ) n = 0; a.closest('.awaiting-mod')[ 0 === n ? 'addClass' : 'removeClass' ]('count-0'); updateCount( a, n ); }); + + if ( ! commentPostId ) { + return; + } + + // cache selectors to not get dupes + pending = $( 'span.' + pendingClass, postSelector ); + noPending = $( 'span.' + noClass, postSelector ); + + pending.each(function() { + var a = $(this), n = getCount(a) + diff; + if ( n < 1 ) + n = 0; + + if ( 0 === n ) { + a.removeClass( pendingClass ).addClass( noClass ); + } + updateCount( a, n ); + }); + + noPending.each(function() { + var a = $(this); + if ( diff > 0 ) { + a.removeClass( noClass ).addClass( pendingClass ); + } + updateCount( a, diff ); + }); + }; + + updateApproved = function( diff, commentPostId ) { + var postSelector = '.post-com-count-' + commentPostId, + noClass = 'comment-count-no-comments', + approvedClass = 'comment-count-approved', + approved, + noComments; + + updateCountText( 'span.approved-count', diff ); + + if ( ! commentPostId ) { + return; + } + + // cache selectors to not get dupes + approved = $( 'span.' + approvedClass, postSelector ); + noComments = $( 'span.' + noClass, postSelector ); + + approved.each(function() { + var a = $(this), n = getCount(a) + diff; + if ( n < 1 ) + n = 0; + + if ( 0 === n ) { + a.removeClass( approvedClass ).addClass( noClass ); + } + updateCount( a, n ); + }); + + noComments.each(function() { + var a = $(this); + if ( diff > 0 ) { + a.removeClass( noClass ).addClass( approvedClass ); + } + updateCount( a, diff ); + }); }; updateCountText = function( selector, diff ) { @@ -152,9 +228,10 @@ setCommentsList = function() { // In admin-ajax.php, we send back the unix time stamp instead of 1 on success delAfter = function( r, settings ) { - var total_items_i18n, total, animated, animatedCallback, + var total_items_i18n, total, animated, animatedCallback, postSelector, response = true === settings.parsed ? {} : settings.parsed.responses[0], commentStatus = true === settings.parsed ? '' : response.supplemental.status, + commentPostId = true === settings.parsed ? '' : response.supplemental.postId, targetParent = $( settings.target ).parent(), commentRow = $('#' + settings.element), @@ -285,13 +362,14 @@ setCommentsList = function() { } } + postSelector = '.post-com-count-' + commentPostId; + if ( pendingDiff ) { - updatePending( pendingDiff ); + updatePending( pendingDiff, commentPostId ); } if ( approvedDiff ) { - updateCountText( 'span.approved-count', approvedDiff ); - updateCountText( 'span.comment-count-approved', approvedDiff ); + updateApproved( approvedDiff, commentPostId ); } if ( spamDiff ) { @@ -337,7 +415,7 @@ setCommentsList = function() { refillTheExtraList(); - animated = $( ':animated' ); + animated = $( ':animated', '#the-comment-list' ); animatedCallback = function () { if ( ! $( '#the-comment-list tr:visible' ).length ) { theList.get(0).wpList.add( theExtraList.find( '.no-items' ).clone() ); @@ -627,7 +705,7 @@ commentReply = { if ( r.supplemental.parent_approved ) { pid = $('#comment-' + r.supplemental.parent_approved); - updatePending( -1 ); + updatePending( -1, r.supplemental.parent_post_id ); if ( this.comments_listing == 'moderated' ) { pid.animate( { 'backgroundColor':'#CCEEBB' }, 400, function(){ diff --git a/wp-admin/js/edit-comments.min.js b/wp-admin/js/edit-comments.min.js index 63623780c3..4002a574f6 100644 --- a/wp-admin/js/edit-comments.min.js +++ b/wp-admin/js/edit-comments.min.js @@ -1 +1 @@ -var setCommentsList,theList,theExtraList,commentReply;!function(a){var b,c,d,e;setCommentsList=function(){var f,g,h,i,j,k,l,m,n,o=0;f=a('input[name="_total"]',"#comments-form"),g=a('input[name="_per_page"]',"#comments-form"),h=a('input[name="_page"]',"#comments-form"),i=function(b,c){var f,g,h,i=a("#"+c.element);f=a("#replyrow"),g=a("#comment_ID",f).val(),h=a("#replybtn",f),i.is(".unapproved")?(c.data.id==g&&h.text(adminCommentsL10n.replyApprove),i.find("div.comment_status").html("0")):(c.data.id==g&&h.text(adminCommentsL10n.reply),i.find("div.comment_status").html("1")),n=a("#"+c.element).is("."+c.dimClass)?1:-1,e(n),d("span.approved-count",-1*n),d("span.comment-count-approved",-1*n)},j=function(b,c){var d,e,i,j,k,l,m,n=!1,o=a(b.target).attr("data-wp-lists");return b.data._total=f.val()||0,b.data._per_page=g.val()||0,b.data._page=h.val()||0,b.data._url=document.location.href,b.data.comment_status=a('input[name="comment_status"]',"#comments-form").val(),-1!=o.indexOf(":trash=1")?n="trash":-1!=o.indexOf(":spam=1")&&(n="spam"),n&&(e=o.replace(/.*?comment-([0-9]+).*/,"$1"),i=a("#comment-"+e),d=a("#"+n+"-undo-holder").html(),i.find(".check-column :checkbox").prop("checked",!1),i.siblings("#replyrow").length&&commentReply.cid==e&&commentReply.close(),i.is("tr")?(j=i.children(":visible").length,m=a(".author strong",i).text(),k=a(''+d+"")):(m=a(".comment-author",i).text(),k=a('")),i.before(k),a("strong","#undo-"+e).text(m),l=a(".undo a","#undo-"+e),l.attr("href","comment.php?action=un"+n+"comment&c="+e+"&_wpnonce="+b.data._ajax_nonce),l.attr("data-wp-lists","delete:the-comment-list:comment-"+e+"::un"+n+"=1"),l.attr("class","vim-z vim-destructive"),a(".avatar",i).first().clone().prependTo("#undo-"+e+" ."+n+"-undo-inside"),l.click(function(){return c.wpList.del(this),a("#undo-"+e).css({backgroundColor:"#ceb"}).fadeOut(350,function(){a(this).remove(),a("#comment-"+e).css("backgroundColor","").fadeIn(300,function(){a(this).show()})}),!1})),b},k=function(a,b,c){o>b||(c&&(o=b),f.val(a.toString()))},b=function(a){var b=parseInt(a.html().replace(/[^0-9]+/g,""),10);return isNaN(b)?0:b},c=function(a,b){var c="";if(!isNaN(b)){if(b=1>b?"0":b.toString(),b.length>3){for(;b.length>3;)c=thousandsSeparator+b.substr(b.length-3)+c,b=b.substr(0,b.length-3);b+=c}a.html(b)}},e=function(d){a("span.pending-count, .comment-count-pending").each(function(){var e=a(this),f=b(e)+d;1>f&&(f=0),e.closest(".awaiting-mod")[0===f?"addClass":"removeClass"]("count-0"),c(e,f)})},d=function(d,e){a(d).each(function(){var d=a(this),f=b(d)+e;1>f&&(f=0),c(d,f)})},l=function(b,c){var g,h,i,j,l,n,p,q,r=!0===c.parsed?{}:c.parsed.responses[0],s=!0===c.parsed?"":r.supplemental.status,t=a(c.target).parent(),u=a("#"+c.element),v=u.hasClass("approved"),w=u.hasClass("unapproved"),x=u.hasClass("spam"),y=u.hasClass("trash");t.is("span.undo")?t.hasClass("unspam")?(l=-1,"trash"===s?n=1:"1"===s?q=1:"0"===s&&(p=1)):t.hasClass("untrash")&&(n=-1,"spam"===s?l=1:"1"===s?q=1:"0"===s&&(p=1)):t.is("span.spam")?(v?q=-1:w?p=-1:y&&(n=-1),l=1):t.is("span.unspam")?(v?p=1:w?q=1:y?t.hasClass("approve")?q=1:t.hasClass("unapprove")&&(p=1):x&&(t.hasClass("approve")?q=1:t.hasClass("unapprove")&&(p=1)),l=-1):t.is("span.trash")?(v?q=-1:w?p=-1:x&&(l=-1),n=1):t.is("span.untrash")?(v?p=1:w?q=1:y&&(t.hasClass("approve")?q=1:t.hasClass("unapprove")&&(p=1)),n=-1):t.is("span.approve:not(.unspam):not(.untrash)")?(q=1,p=-1):t.is("span.unapprove:not(.unspam):not(.untrash)")?(q=-1,p=1):t.is("span.delete")&&(x?l=-1:y&&(n=-1)),p&&e(p),q&&(d("span.approved-count",q),d("span.comment-count-approved",q)),l&&d("span.spam-count",l),n&&d("span.trash-count",n),a("#dashboard_right_now").length||(h=f.val()?parseInt(f.val(),10):0,a(c.target).parent().is("span.undo")?h++:h--,0>h&&(h=0),"object"==typeof b?r.supplemental.total_items_i18n&&od||(b?(theExtraList.empty(),c.number=Math.min(8,e)):(c.number=1,c.offset=Math.min(8,e)-1),c.no_placeholder=!0,c.paged++,!0===c.comment_type&&(c.comment_type=""),c=a.extend(c,{action:"fetch-list",list_args:list_args,_ajax_fetch_list_nonce:a("#_ajax_fetch_list_nonce").val()}),a.ajax({url:ajaxurl,global:!1,dataType:"json",data:c,success:function(a){theExtraList.get(0).wpList.add(a.rows)}}))},theExtraList=a("#the-extra-comment-list").wpList({alt:"",delColor:"none",addColor:"none"}),theList=a("#the-comment-list").wpList({alt:"",delBefore:j,dimAfter:i,delAfter:l,addColor:"none"}).bind("wpListDelEnd",function(b,c){var d=a(c.target).attr("data-wp-lists"),e=c.element.replace(/[^0-9]+/g,"");(-1!=d.indexOf(":trash=1")||-1!=d.indexOf(":spam=1"))&&a("#undo-"+e).fadeIn(300,function(){a(this).show()})})},commentReply={cid:"",act:"",init:function(){var b=a("#replyrow");a("a.cancel",b).click(function(){return commentReply.revert()}),a("a.save",b).click(function(){return commentReply.send()}),a("input#author, input#author-email, input#author-url",b).keypress(function(a){return 13==a.which?(commentReply.send(),a.preventDefault(),!1):void 0}),a("#the-comment-list .column-comment > p").dblclick(function(){commentReply.toggle(a(this).parent())}),a("#doaction, #doaction2, #post-query-submit").click(function(){a("#the-comment-list #replyrow").length>0&&commentReply.close()}),this.comments_listing=a('#comments-form > input[name="comment_status"]').val()||""},addEvents:function(b){b.each(function(){a(this).find(".column-comment > p").dblclick(function(){commentReply.toggle(a(this).parent())})})},toggle:function(b){"none"!==a(b).css("display")&&(a("#replyrow").parent().is("#com-reply")||window.confirm(adminCommentsL10n.warnQuickEdit))&&a(b).find("a.vim-q").click()},revert:function(){return a("#the-comment-list #replyrow").length<1?!1:(a("#replyrow").fadeOut("fast",function(){commentReply.close()}),!1)},close:function(){var b,c=a("#replyrow");c.parent().is("#com-reply")||(this.cid&&"edit-comment"==this.act&&(b=a("#comment-"+this.cid),b.fadeIn(300,function(){b.show()}).css("backgroundColor","")),"undefined"!=typeof QTags&&QTags.closeAllTags("replycontent"),a("#add-new-comment").css("display",""),c.hide(),a("#com-reply").append(c),a("#replycontent").css("height","").val(""),a("#edithead input").val(""),a(".error",c).empty().hide(),a(".spinner",c).removeClass("is-active"),this.cid="")},open:function(b,c,d){var e,f,g,h,i,j=this,k=a("#comment-"+b),l=k.height();return j.close(),j.cid=b,e=a("#replyrow"),f=a("#inline-"+b),d=d||"replyto",g="edit"==d?"edit":"replyto",g=j.act=g+"-comment",a("#action",e).val(g),a("#comment_post_ID",e).val(c),a("#comment_ID",e).val(b),"edit"==d?(a("#author",e).val(a("div.author",f).text()),a("#author-email",e).val(a("div.author-email",f).text()),a("#author-url",e).val(a("div.author-url",f).text()),a("#status",e).val(a("div.comment_status",f).text()),a("#replycontent",e).val(a("textarea.comment",f).val()),a("#edithead, #savebtn",e).show(),a("#replyhead, #replybtn, #addhead, #addbtn",e).hide(),l>120&&(i=l>500?500:l,a("#replycontent",e).css("height",i+"px")),k.after(e).fadeOut("fast",function(){a("#replyrow").fadeIn(300,function(){a(this).show()})})):"add"==d?(a("#addhead, #addbtn",e).show(),a("#replyhead, #replybtn, #edithead, #savebtn",e).hide(),a("#the-comment-list").prepend(e),a("#replyrow").fadeIn(300)):(h=a("#replybtn",e),a("#edithead, #savebtn, #addhead, #addbtn",e).hide(),a("#replyhead, #replybtn",e).show(),k.after(e),k.hasClass("unapproved")?h.text(adminCommentsL10n.replyApprove):h.text(adminCommentsL10n.reply),a("#replyrow").fadeIn(300,function(){a(this).show()})),setTimeout(function(){var b,c,d,e,f;b=a("#replyrow").offset().top,c=b+a("#replyrow").height(),d=window.pageYOffset||document.documentElement.scrollTop,e=document.documentElement.clientHeight||window.innerHeight||0,f=d+e,c>f-20?window.scroll(0,c-e+35):d>b-20&&window.scroll(0,b-35),a("#replycontent").focus().keyup(function(a){27==a.which&&commentReply.revert()})},600),!1},send:function(){var b={};return a("#replysubmit .error").hide(),a("#replysubmit .spinner").addClass("is-active"),a("#replyrow input").not(":button").each(function(){var c=a(this);b[c.attr("name")]=c.val()}),b.content=a("#replycontent").val(),b.id=b.comment_post_ID,b.comments_listing=this.comments_listing,b.p=a('[name="p"]').val(),a("#comment-"+a("#comment_ID").val()).hasClass("unapproved")&&(b.approve_parent=1),a.ajax({type:"POST",url:ajaxurl,data:b,success:function(a){commentReply.show(a)},error:function(a){commentReply.error(a)}}),!1},show:function(b){var c,d,f,g,h,i=this;return"string"==typeof b?(i.error({responseText:b}),!1):(c=wpAjax.parseAjaxResponse(b),c.errors?(i.error({responseText:wpAjax.broken}),!1):(i.revert(),c=c.responses[0],f="#comment-"+c.id,"edit-comment"==i.act&&a(f).remove(),c.supplemental.parent_approved&&(h=a("#comment-"+c.supplemental.parent_approved),e(-1),"moderated"==this.comments_listing)?void h.animate({backgroundColor:"#CCEEBB"},400,function(){h.fadeOut()}):(d=a.trim(c.data),a(d).hide(),a("#replyrow").after(d),f=a(f),i.addEvents(f),g=f.hasClass("unapproved")?"#FFFFE0":f.closest(".widefat, .postbox").css("backgroundColor"),void f.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:g},300,function(){h&&h.length&&h.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:g},300).removeClass("unapproved").addClass("approved").find("div.comment_status").html("1")}))))},error:function(b){var c=b.statusText;a("#replysubmit .spinner").removeClass("is-active"),b.responseText&&(c=b.responseText.replace(/<.[^<>]*?>/g,"")),c&&a("#replysubmit .error").html(c).show()},addcomment:function(b){var c=this;a("#add-new-comment").fadeOut(200,function(){c.open(0,b,"add"),a("table.comments-box").css("display",""),a("#no-comments").remove()})}},a(document).ready(function(){var b,c,d,e;setCommentsList(),commentReply.init(),a(document).delegate("span.delete a.delete","click",function(){return!1}),"undefined"!=typeof a.table_hotkeys&&(b=function(b){return function(){var c,d;c="next"==b?"first":"last",d=a(".tablenav-pages ."+b+"-page:not(.disabled)"),d.length&&(window.location=d[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g,"")+"&hotkeys_highlight_"+c+"=1")}},c=function(b,c){window.location=a("span.edit a",c).attr("href")},d=function(){a("#cb-select-all-1").data("wp-toggle",1).trigger("click").removeData("wp-toggle")},e=function(b){return function(){var c=a('select[name="action"]');a('option[value="'+b+'"]',c).prop("selected",!0),a("#doaction").click()}},a.table_hotkeys(a("table.widefat"),["a","u","s","d","r","q","z",["e",c],["shift+x",d],["shift+a",e("approve")],["shift+s",e("spam")],["shift+d",e("delete")],["shift+t",e("trash")],["shift+z",e("untrash")],["shift+u",e("unapprove")]],{highlight_first:adminCommentsL10n.hotkeys_highlight_first,highlight_last:adminCommentsL10n.hotkeys_highlight_last,prev_page_link_cb:b("prev"),next_page_link_cb:b("next"),hotkeys_opts:{disableInInput:!0,type:"keypress",noDisable:'.check-column input[type="checkbox"]'},cycle_expr:"#the-comment-list tr",start_row_index:0})),a("#the-comment-list").on("click",".comment-inline",function(b){b.preventDefault();var c=a(this),d="replyto";"undefined"!=typeof c.data("action")&&(d=c.data("action")),commentReply.open(c.data("commentId"),c.data("postId"),d)})})}(jQuery); \ No newline at end of file +var setCommentsList,theList,theExtraList,commentReply;!function(a){var b,c,d,e,f;setCommentsList=function(){var g,h,i,j,k,l,m,n,o,p=0;g=a('input[name="_total"]',"#comments-form"),h=a('input[name="_per_page"]',"#comments-form"),i=a('input[name="_page"]',"#comments-form"),j=function(b,c){var d,g,h,i,j=a("#"+c.element);d=a("#replyrow"),g=a("#comment_ID",d).val(),h=a("#replybtn",d),j.is(".unapproved")?(c.data.id==g&&h.text(adminCommentsL10n.replyApprove),j.find("div.comment_status").html("0")):(c.data.id==g&&h.text(adminCommentsL10n.reply),j.find("div.comment_status").html("1")),o=a("#"+c.element).is("."+c.dimClass)?1:-1,!0!==c.parsed&&c.parsed.responses.length?(i=c.parsed.responses[0].supplemental,e(o,i.postId),f(-1*o,i.postId)):(e(o),f(-1*o))},k=function(b,c){var d,e,f,j,k,l,m,n=!1,o=a(b.target).attr("data-wp-lists");return b.data._total=g.val()||0,b.data._per_page=h.val()||0,b.data._page=i.val()||0,b.data._url=document.location.href,b.data.comment_status=a('input[name="comment_status"]',"#comments-form").val(),-1!=o.indexOf(":trash=1")?n="trash":-1!=o.indexOf(":spam=1")&&(n="spam"),n&&(e=o.replace(/.*?comment-([0-9]+).*/,"$1"),f=a("#comment-"+e),d=a("#"+n+"-undo-holder").html(),f.find(".check-column :checkbox").prop("checked",!1),f.siblings("#replyrow").length&&commentReply.cid==e&&commentReply.close(),f.is("tr")?(j=f.children(":visible").length,m=a(".author strong",f).text(),k=a(''+d+"")):(m=a(".comment-author",f).text(),k=a('")),f.before(k),a("strong","#undo-"+e).text(m),l=a(".undo a","#undo-"+e),l.attr("href","comment.php?action=un"+n+"comment&c="+e+"&_wpnonce="+b.data._ajax_nonce),l.attr("data-wp-lists","delete:the-comment-list:comment-"+e+"::un"+n+"=1"),l.attr("class","vim-z vim-destructive"),a(".avatar",f).first().clone().prependTo("#undo-"+e+" ."+n+"-undo-inside"),l.click(function(){return c.wpList.del(this),a("#undo-"+e).css({backgroundColor:"#ceb"}).fadeOut(350,function(){a(this).remove(),a("#comment-"+e).css("backgroundColor","").fadeIn(300,function(){a(this).show()})}),!1})),b},l=function(a,b,c){p>b||(c&&(p=b),g.val(a.toString()))},b=function(a){var b=parseInt(a.html().replace(/[^0-9]+/g,""),10);return isNaN(b)?0:b},c=function(a,b){var c="";if(!isNaN(b)){if(b=1>b?"0":b.toString(),b.length>3){for(;b.length>3;)c=thousandsSeparator+b.substr(b.length-3)+c,b=b.substr(0,b.length-3);b+=c}a.html(b)}},e=function(d,e){var f,g,h=".post-com-count-"+e,i="comment-count-no-pending",j="comment-count-pending",k=a("span.pending-count");k.each(function(){var e=a(this),f=b(e)+d;1>f&&(f=0),e.closest(".awaiting-mod")[0===f?"addClass":"removeClass"]("count-0"),c(e,f)}),e&&(f=a("span."+j,h),g=a("span."+i,h),f.each(function(){var e=a(this),f=b(e)+d;1>f&&(f=0),0===f&&e.removeClass(j).addClass(i),c(e,f)}),g.each(function(){var b=a(this);d>0&&b.removeClass(i).addClass(j),c(b,d)}))},f=function(e,f){var g,h,i=".post-com-count-"+f,j="comment-count-no-comments",k="comment-count-approved";d("span.approved-count",e),f&&(g=a("span."+k,i),h=a("span."+j,i),g.each(function(){var d=a(this),f=b(d)+e;1>f&&(f=0),0===f&&d.removeClass(k).addClass(j),c(d,f)}),h.each(function(){var b=a(this);e>0&&b.removeClass(j).addClass(k),c(b,e)}))},d=function(d,e){a(d).each(function(){var d=a(this),f=b(d)+e;1>f&&(f=0),c(d,f)})},m=function(b,c){var h,i,j,k,m,o,q,r,s,t=!0===c.parsed?{}:c.parsed.responses[0],u=!0===c.parsed?"":t.supplemental.status,v=!0===c.parsed?"":t.supplemental.postId,w=a(c.target).parent(),x=a("#"+c.element),y=x.hasClass("approved"),z=x.hasClass("unapproved"),A=x.hasClass("spam"),B=x.hasClass("trash");w.is("span.undo")?w.hasClass("unspam")?(o=-1,"trash"===u?q=1:"1"===u?s=1:"0"===u&&(r=1)):w.hasClass("untrash")&&(q=-1,"spam"===u?o=1:"1"===u?s=1:"0"===u&&(r=1)):w.is("span.spam")?(y?s=-1:z?r=-1:B&&(q=-1),o=1):w.is("span.unspam")?(y?r=1:z?s=1:B?w.hasClass("approve")?s=1:w.hasClass("unapprove")&&(r=1):A&&(w.hasClass("approve")?s=1:w.hasClass("unapprove")&&(r=1)),o=-1):w.is("span.trash")?(y?s=-1:z?r=-1:A&&(o=-1),q=1):w.is("span.untrash")?(y?r=1:z?s=1:B&&(w.hasClass("approve")?s=1:w.hasClass("unapprove")&&(r=1)),q=-1):w.is("span.approve:not(.unspam):not(.untrash)")?(s=1,r=-1):w.is("span.unapprove:not(.unspam):not(.untrash)")?(s=-1,r=1):w.is("span.delete")&&(A?o=-1:B&&(q=-1)),m=".post-com-count-"+v,r&&e(r,v),s&&f(s,v),o&&d("span.spam-count",o),q&&d("span.trash-count",q),a("#dashboard_right_now").length||(i=g.val()?parseInt(g.val(),10):0,a(c.target).parent().is("span.undo")?i++:i--,0>i&&(i=0),"object"==typeof b?t.supplemental.total_items_i18n&&pd||(b?(theExtraList.empty(),c.number=Math.min(8,e)):(c.number=1,c.offset=Math.min(8,e)-1),c.no_placeholder=!0,c.paged++,!0===c.comment_type&&(c.comment_type=""),c=a.extend(c,{action:"fetch-list",list_args:list_args,_ajax_fetch_list_nonce:a("#_ajax_fetch_list_nonce").val()}),a.ajax({url:ajaxurl,global:!1,dataType:"json",data:c,success:function(a){theExtraList.get(0).wpList.add(a.rows)}}))},theExtraList=a("#the-extra-comment-list").wpList({alt:"",delColor:"none",addColor:"none"}),theList=a("#the-comment-list").wpList({alt:"",delBefore:k,dimAfter:j,delAfter:m,addColor:"none"}).bind("wpListDelEnd",function(b,c){var d=a(c.target).attr("data-wp-lists"),e=c.element.replace(/[^0-9]+/g,"");(-1!=d.indexOf(":trash=1")||-1!=d.indexOf(":spam=1"))&&a("#undo-"+e).fadeIn(300,function(){a(this).show()})})},commentReply={cid:"",act:"",init:function(){var b=a("#replyrow");a("a.cancel",b).click(function(){return commentReply.revert()}),a("a.save",b).click(function(){return commentReply.send()}),a("input#author, input#author-email, input#author-url",b).keypress(function(a){return 13==a.which?(commentReply.send(),a.preventDefault(),!1):void 0}),a("#the-comment-list .column-comment > p").dblclick(function(){commentReply.toggle(a(this).parent())}),a("#doaction, #doaction2, #post-query-submit").click(function(){a("#the-comment-list #replyrow").length>0&&commentReply.close()}),this.comments_listing=a('#comments-form > input[name="comment_status"]').val()||""},addEvents:function(b){b.each(function(){a(this).find(".column-comment > p").dblclick(function(){commentReply.toggle(a(this).parent())})})},toggle:function(b){"none"!==a(b).css("display")&&(a("#replyrow").parent().is("#com-reply")||window.confirm(adminCommentsL10n.warnQuickEdit))&&a(b).find("a.vim-q").click()},revert:function(){return a("#the-comment-list #replyrow").length<1?!1:(a("#replyrow").fadeOut("fast",function(){commentReply.close()}),!1)},close:function(){var b,c=a("#replyrow");c.parent().is("#com-reply")||(this.cid&&"edit-comment"==this.act&&(b=a("#comment-"+this.cid),b.fadeIn(300,function(){b.show()}).css("backgroundColor","")),"undefined"!=typeof QTags&&QTags.closeAllTags("replycontent"),a("#add-new-comment").css("display",""),c.hide(),a("#com-reply").append(c),a("#replycontent").css("height","").val(""),a("#edithead input").val(""),a(".error",c).empty().hide(),a(".spinner",c).removeClass("is-active"),this.cid="")},open:function(b,c,d){var e,f,g,h,i,j=this,k=a("#comment-"+b),l=k.height();return j.close(),j.cid=b,e=a("#replyrow"),f=a("#inline-"+b),d=d||"replyto",g="edit"==d?"edit":"replyto",g=j.act=g+"-comment",a("#action",e).val(g),a("#comment_post_ID",e).val(c),a("#comment_ID",e).val(b),"edit"==d?(a("#author",e).val(a("div.author",f).text()),a("#author-email",e).val(a("div.author-email",f).text()),a("#author-url",e).val(a("div.author-url",f).text()),a("#status",e).val(a("div.comment_status",f).text()),a("#replycontent",e).val(a("textarea.comment",f).val()),a("#edithead, #savebtn",e).show(),a("#replyhead, #replybtn, #addhead, #addbtn",e).hide(),l>120&&(i=l>500?500:l,a("#replycontent",e).css("height",i+"px")),k.after(e).fadeOut("fast",function(){a("#replyrow").fadeIn(300,function(){a(this).show()})})):"add"==d?(a("#addhead, #addbtn",e).show(),a("#replyhead, #replybtn, #edithead, #savebtn",e).hide(),a("#the-comment-list").prepend(e),a("#replyrow").fadeIn(300)):(h=a("#replybtn",e),a("#edithead, #savebtn, #addhead, #addbtn",e).hide(),a("#replyhead, #replybtn",e).show(),k.after(e),k.hasClass("unapproved")?h.text(adminCommentsL10n.replyApprove):h.text(adminCommentsL10n.reply),a("#replyrow").fadeIn(300,function(){a(this).show()})),setTimeout(function(){var b,c,d,e,f;b=a("#replyrow").offset().top,c=b+a("#replyrow").height(),d=window.pageYOffset||document.documentElement.scrollTop,e=document.documentElement.clientHeight||window.innerHeight||0,f=d+e,c>f-20?window.scroll(0,c-e+35):d>b-20&&window.scroll(0,b-35),a("#replycontent").focus().keyup(function(a){27==a.which&&commentReply.revert()})},600),!1},send:function(){var b={};return a("#replysubmit .error").hide(),a("#replysubmit .spinner").addClass("is-active"),a("#replyrow input").not(":button").each(function(){var c=a(this);b[c.attr("name")]=c.val()}),b.content=a("#replycontent").val(),b.id=b.comment_post_ID,b.comments_listing=this.comments_listing,b.p=a('[name="p"]').val(),a("#comment-"+a("#comment_ID").val()).hasClass("unapproved")&&(b.approve_parent=1),a.ajax({type:"POST",url:ajaxurl,data:b,success:function(a){commentReply.show(a)},error:function(a){commentReply.error(a)}}),!1},show:function(b){var c,d,f,g,h,i=this;return"string"==typeof b?(i.error({responseText:b}),!1):(c=wpAjax.parseAjaxResponse(b),c.errors?(i.error({responseText:wpAjax.broken}),!1):(i.revert(),c=c.responses[0],f="#comment-"+c.id,"edit-comment"==i.act&&a(f).remove(),c.supplemental.parent_approved&&(h=a("#comment-"+c.supplemental.parent_approved),e(-1,c.supplemental.parent_post_id),"moderated"==this.comments_listing)?void h.animate({backgroundColor:"#CCEEBB"},400,function(){h.fadeOut()}):(d=a.trim(c.data),a(d).hide(),a("#replyrow").after(d),f=a(f),i.addEvents(f),g=f.hasClass("unapproved")?"#FFFFE0":f.closest(".widefat, .postbox").css("backgroundColor"),void f.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:g},300,function(){h&&h.length&&h.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:g},300).removeClass("unapproved").addClass("approved").find("div.comment_status").html("1")}))))},error:function(b){var c=b.statusText;a("#replysubmit .spinner").removeClass("is-active"),b.responseText&&(c=b.responseText.replace(/<.[^<>]*?>/g,"")),c&&a("#replysubmit .error").html(c).show()},addcomment:function(b){var c=this;a("#add-new-comment").fadeOut(200,function(){c.open(0,b,"add"),a("table.comments-box").css("display",""),a("#no-comments").remove()})}},a(document).ready(function(){var b,c,d,e;setCommentsList(),commentReply.init(),a(document).delegate("span.delete a.delete","click",function(){return!1}),"undefined"!=typeof a.table_hotkeys&&(b=function(b){return function(){var c,d;c="next"==b?"first":"last",d=a(".tablenav-pages ."+b+"-page:not(.disabled)"),d.length&&(window.location=d[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g,"")+"&hotkeys_highlight_"+c+"=1")}},c=function(b,c){window.location=a("span.edit a",c).attr("href")},d=function(){a("#cb-select-all-1").data("wp-toggle",1).trigger("click").removeData("wp-toggle")},e=function(b){return function(){var c=a('select[name="action"]');a('option[value="'+b+'"]',c).prop("selected",!0),a("#doaction").click()}},a.table_hotkeys(a("table.widefat"),["a","u","s","d","r","q","z",["e",c],["shift+x",d],["shift+a",e("approve")],["shift+s",e("spam")],["shift+d",e("delete")],["shift+t",e("trash")],["shift+z",e("untrash")],["shift+u",e("unapprove")]],{highlight_first:adminCommentsL10n.hotkeys_highlight_first,highlight_last:adminCommentsL10n.hotkeys_highlight_last,prev_page_link_cb:b("prev"),next_page_link_cb:b("next"),hotkeys_opts:{disableInInput:!0,type:"keypress",noDisable:'.check-column input[type="checkbox"]'},cycle_expr:"#the-comment-list tr",start_row_index:0})),a("#the-comment-list").on("click",".comment-inline",function(b){b.preventDefault();var c=a(this),d="replyto";"undefined"!=typeof c.data("action")&&(d=c.data("action")),commentReply.open(c.data("commentId"),c.data("postId"),d)})})}(jQuery); \ No newline at end of file diff --git a/wp-includes/version.php b/wp-includes/version.php index a4eef6e122..30911c297d 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -4,7 +4,7 @@ * * @global string $wp_version */ -$wp_version = '4.4-alpha-33661'; +$wp_version = '4.4-alpha-33662'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.