X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/fa11948979fd6a4ea5705dc613b239699a459db3..245e789b234afa4525862e7a6e5e3c2e7a52ef20:/wp-admin/js/edit-comments.js diff --git a/wp-admin/js/edit-comments.js b/wp-admin/js/edit-comments.js index ab22d357..ff149e19 100644 --- a/wp-admin/js/edit-comments.js +++ b/wp-admin/js/edit-comments.js @@ -1,17 +1,20 @@ -var theList, theExtraList, toggleWithKeyboard = false; +/* global adminCommentsL10n, thousandsSeparator, list_args, QTags, ajaxurl, wpAjax */ +var setCommentsList, theList, theExtraList, commentReply; (function($) { -var getCount, updateCount, updatePending, dashboardTotals; +var getCount, updateCount, updatePending; setCommentsList = function() { - var totalInput, perPageInput, pageInput, lastConfidentTime = 0, dimAfter, delBefore, updateTotalCount, delAfter, refillTheExtraList; + var totalInput, perPageInput, pageInput, dimAfter, delBefore, updateTotalCount, delAfter, refillTheExtraList, diff, + lastConfidentTime = 0; totalInput = $('input[name="_total"]', '#comments-form'); perPageInput = $('input[name="_per_page"]', '#comments-form'); pageInput = $('input[name="_page"]', '#comments-form'); dimAfter = function( r, settings ) { - var c = $('#' + settings.element), editRow, replyID, replyButton; + var editRow, replyID, replyButton, + c = $( '#' + settings.element ); editRow = $('#replyrow'); replyID = $('#comment_ID', editRow).val(); @@ -29,13 +32,15 @@ setCommentsList = function() { c.find('div.comment_status').html('1'); } - var diff = $('#' + settings.element).is('.' + settings.dimClass) ? 1 : -1; + diff = $('#' + settings.element).is('.' + settings.dimClass) ? 1 : -1; updatePending( diff ); }; // Send current total, page, per_page and url delBefore = function( settings, list ) { - var wpListsData = $(settings.target).attr('data-wp-lists'), id, el, n, h, a, author, action = false; + var note, id, el, n, h, a, author, + action = false, + wpListsData = $( settings.target ).attr( 'data-wp-lists' ); settings.data._total = totalInput.val() || 0; settings.data._per_page = perPageInput.val() || 0; @@ -74,13 +79,13 @@ setCommentsList = function() { a.attr('href', 'comment.php?action=un' + action + 'comment&c=' + id + '&_wpnonce=' + settings.data._ajax_nonce); a.attr('data-wp-lists', 'delete:the-comment-list:comment-' + id + '::un' + action + '=1'); a.attr('class', 'vim-z vim-destructive'); - $('.avatar', el).clone().prependTo('#undo-' + id + ' .' + action + '-undo-inside'); + $('.avatar', el).first().clone().prependTo('#undo-' + id + ' .' + action + '-undo-inside'); a.click(function(){ list.wpList.del(this); $('#undo-' + id).css( {backgroundColor:'#ceb'} ).fadeOut(350, function(){ $(this).remove(); - $('#comment-' + id).css('backgroundColor', '').fadeIn(300, function(){ $(this).show() }); + $('#comment-' + id).css('backgroundColor', '').fadeIn(300, function(){ $(this).show(); }); }); return false; }); @@ -100,23 +105,6 @@ setCommentsList = function() { totalInput.val( total.toString() ); }; - dashboardTotals = function(n) { - var dash = $('#dashboard_right_now'), total, appr, totalN, apprN; - - n = n || 0; - if ( isNaN(n) || !dash.length ) - return; - - total = $('span.total-count', dash); - appr = $('span.approved-count', dash); - totalN = getCount(total); - - totalN = totalN + n; - apprN = totalN - getCount( $('span.pending-count', dash) ) - getCount( $('span.spam-count', dash) ); - updateCount(total, totalN); - updateCount(appr, apprN); - }; - getCount = function(el) { var n = parseInt( el.html().replace(/[^0-9]+/g, ''), 10 ); if ( isNaN(n) ) @@ -144,16 +132,14 @@ setCommentsList = function() { var a = $(this), n = getCount(a) + diff; if ( n < 1 ) n = 0; - a.closest('.awaiting-mod')[ 0 == n ? 'addClass' : 'removeClass' ]('count-0'); + a.closest('.awaiting-mod')[ 0 === n ? 'addClass' : 'removeClass' ]('count-0'); updateCount( a, n ); }); - - dashboardTotals(); }; // In admin-ajax.php, we send back the unix time stamp instead of 1 on success delAfter = function( r, settings ) { - var total, N, spam, trash, pending, + var total_items_i18n, total, spam, trash, pending, untrash = $(settings.target).parent().is('span.untrash'), unspam = $(settings.target).parent().is('span.unspam'), unapproved = $('#' + settings.element).is('.unapproved'); @@ -199,10 +185,7 @@ setCommentsList = function() { updateCount(a, n); }); - if ( $('#dashboard_right_now').length ) { - N = trash ? -1 * trash : 0; - dashboardTotals(N); - } else { + if ( ! $('#dashboard_right_now').length ) { total = totalInput.val() ? parseInt( totalInput.val(), 10 ) : 0; if ( $(settings.target).parent().is('span.undo') ) total++; @@ -225,7 +208,7 @@ setCommentsList = function() { } } - if ( ! theExtraList || theExtraList.size() == 0 || theExtraList.children().size() == 0 || untrash || unspam ) { + if ( ! theExtraList || theExtraList.size() === 0 || theExtraList.children().size() === 0 || untrash || unspam ) { return; } @@ -283,7 +266,7 @@ setCommentsList = function() { var wpListsData = $(s.target).attr('data-wp-lists'), id = s.element.replace(/[^0-9]+/g, ''); if ( wpListsData.indexOf(':trash=1') != -1 || wpListsData.indexOf(':spam=1') != -1 ) - $('#undo-' + id).fadeIn(300, function(){ $(this).show() }); + $('#undo-' + id).fadeIn(300, function(){ $(this).show(); }); }); }; @@ -309,7 +292,7 @@ commentReply = { commentReply.toggle($(this).parent()); }); - $('#doaction, #doaction2, #post-query-submit').click(function(e){ + $('#doaction, #doaction2, #post-query-submit').click(function(){ if ( $('#the-comment-list #replyrow').length > 0 ) commentReply.close(); }); @@ -355,7 +338,7 @@ commentReply = { if ( this.cid && this.act == 'edit-comment' ) { c = $('#comment-' + this.cid); - c.fadeIn(300, function(){ c.show() }).css('backgroundColor', ''); + c.fadeIn(300, function(){ c.show(); }).css('backgroundColor', ''); } // reset the Quicktags buttons @@ -375,7 +358,10 @@ commentReply = { }, open : function(comment_id, post_id, action) { - var t = this, editRow, rowData, act, c = $('#comment-' + comment_id), h = c.height(), replyButton; + var editRow, rowData, act, replyButton, editHeight, + t = this, + c = $('#comment-' + comment_id), + h = c.height(); t.close(); t.cid = comment_id; @@ -390,9 +376,6 @@ commentReply = { $('#comment_post_ID', editRow).val(post_id); $('#comment_ID', editRow).val(comment_id); - if ( h > 120 ) - $('#replycontent', editRow).css('height', (35+h) + 'px'); - if ( action == 'edit' ) { $('#author', editRow).val( $('div.author', rowData).text() ); $('#author-email', editRow).val( $('div.author-email', rowData).text() ); @@ -402,16 +385,23 @@ commentReply = { $('#edithead, #savebtn', editRow).show(); $('#replyhead, #replybtn, #addhead, #addbtn', editRow).hide(); + if ( h > 120 ) { + // Limit the maximum height when editing very long comments to make it more manageable. + // The textarea is resizable in most browsers, so the user can adjust it if needed. + editHeight = h > 500 ? 500 : h; + $('#replycontent', editRow).css('height', editHeight + 'px'); + } + c.after( editRow ).fadeOut('fast', function(){ - $('#replyrow').fadeIn(300, function(){ $(this).show() }); + $('#replyrow').fadeIn(300, function(){ $(this).show(); }); }); } else if ( action == 'add' ) { $('#addhead, #addbtn', editRow).show(); $('#replyhead, #replybtn, #edithead, #editbtn', editRow).hide(); $('#the-comment-list').prepend(editRow); $('#replyrow').fadeIn(300); - } else { - replyButton = $('#replybtn', editRow); + } else { + replyButton = $('#replybtn', editRow); $('#edithead, #savebtn, #addhead, #addbtn', editRow).hide(); $('#replyhead, #replybtn', editRow).show(); c.after(editRow); @@ -422,7 +412,7 @@ commentReply = { replyButton.text(adminCommentsL10n.reply); } - $('#replyrow').fadeIn(300, function(){ $(this).show() }); + $('#replyrow').fadeIn(300, function(){ $(this).show(); }); } setTimeout(function() { @@ -431,7 +421,7 @@ commentReply = { rtop = $('#replyrow').offset().top; rbottom = rtop + $('#replyrow').height(); scrollTop = window.pageYOffset || document.documentElement.scrollTop; - vp = document.documentElement.clientHeight || self.innerHeight || 0; + vp = document.documentElement.clientHeight || window.innerHeight || 0; scrollBottom = scrollTop + vp; if ( scrollBottom - 20 < rbottom ) @@ -513,7 +503,7 @@ commentReply = { } c = $.trim(r.data); // Trim leading whitespaces - $(c).hide() + $(c).hide(); $('#replyrow').after(c); id = $(id); @@ -572,7 +562,7 @@ $(document).ready(function(){ l = $('.tablenav-pages .'+which+'-page:not(.disabled)'); if (l.length) window.location = l[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g, '')+'&hotkeys_highlight_'+first_last+'=1'; - } + }; }; edit_comment = function(event, current_row) { @@ -580,9 +570,7 @@ $(document).ready(function(){ }; toggle_all = function() { - toggleWithKeyboard = true; - $('input:checkbox', '#cb').click().prop('checked', false); - toggleWithKeyboard = false; + $('#cb-select-all-1').data( 'wp-toggle', 1 ).trigger( 'click' ).removeData( 'wp-toggle' ); }; make_bulk = function(value) { @@ -590,17 +578,33 @@ $(document).ready(function(){ var scope = $('select[name="action"]'); $('option[value="' + value + '"]', scope).prop('selected', true); $('#doaction').click(); - } + }; }; $.table_hotkeys( $('table.widefat'), - ['a', 'u', 's', 'd', 'r', 'q', 'z', ['e', edit_comment], ['shift+x', toggle_all], - ['shift+a', make_bulk('approve')], ['shift+s', make_bulk('spam')], - ['shift+d', make_bulk('delete')], ['shift+t', make_bulk('trash')], - ['shift+z', make_bulk('untrash')], ['shift+u', make_bulk('unapprove')]], - { highlight_first: adminCommentsL10n.hotkeys_highlight_first, highlight_last: adminCommentsL10n.hotkeys_highlight_last, - prev_page_link_cb: make_hotkeys_redirect('prev'), next_page_link_cb: make_hotkeys_redirect('next') } + [ + 'a', 'u', 's', 'd', 'r', 'q', 'z', + ['e', edit_comment], + ['shift+x', toggle_all], + ['shift+a', make_bulk('approve')], + ['shift+s', make_bulk('spam')], + ['shift+d', make_bulk('delete')], + ['shift+t', make_bulk('trash')], + ['shift+z', make_bulk('untrash')], + ['shift+u', make_bulk('unapprove')] + ], + { + highlight_first: adminCommentsL10n.hotkeys_highlight_first, + highlight_last: adminCommentsL10n.hotkeys_highlight_last, + prev_page_link_cb: make_hotkeys_redirect('prev'), + next_page_link_cb: make_hotkeys_redirect('next'), + hotkeys_opts: { + disableInInput: true, + type: 'keypress', + noDisable: '.check-column input[type="checkbox"]' + } + } ); } });