<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre, #msg p { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[12015] trunk: Add l10n thousands delimiter and decimal point to JS,
  fix updating of comments numbers on the dashboard and keyboard shortcuts for comments moderation 
 (t = trash, z = restore/undo)</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.wordpress.org/changeset/12015">12015</a></dd>
<dt>Author</dt> <dd>azaozz</dd>
<dt>Date</dt> <dd>2009-10-09 09:02:22 +0000 (Fri, 09 Oct 2009)</dd>
</dl>

<h3>Log Message</h3>
<pre>Add l10n thousands delimiter and decimal point to JS, fix updating of comments numbers on the dashboard and keyboard shortcuts for comments moderation (t = trash, z = restore/undo)</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpadminadminheaderphp">trunk/wp-admin/admin-header.php</a></li>
<li><a href="#trunkwpadminincludesdashboardphp">trunk/wp-admin/includes/dashboard.php</a></li>
<li><a href="#trunkwpadminincludestemplatephp">trunk/wp-admin/includes/template.php</a></li>
<li><a href="#trunkwpadminjseditcommentsdevjs">trunk/wp-admin/js/edit-comments.dev.js</a></li>
<li><a href="#trunkwpadminjseditcommentsjs">trunk/wp-admin/js/edit-comments.js</a></li>
<li><a href="#trunkwpincludesscriptloaderphp">trunk/wp-includes/script-loader.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpadminadminheaderphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/admin-header.php (12014 => 12015)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/admin-header.php        2009-10-08 21:51:34 UTC (rev 12014)
+++ trunk/wp-admin/admin-header.php        2009-10-09 09:02:22 UTC (rev 12015)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> //&lt;![CDATA[
</span><span class="cx"> addLoadEvent = function(func){if(typeof jQuery!=&quot;undefined&quot;)jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
</span><span class="cx"> var userSettings = {'url':'&lt;?php echo SITECOOKIEPATH; ?&gt;','uid':'&lt;?php if ( ! isset($current_user) ) $current_user = wp_get_current_user(); echo $current_user-&gt;ID; ?&gt;','time':'&lt;?php echo time() ?&gt;'};
</span><del>-var ajaxurl = '&lt;?php echo admin_url('admin-ajax.php'); ?&gt;', pagenow = '&lt;?php echo substr($pagenow, 0, -4); ?&gt;', adminpage = '&lt;?php echo $admin_body_class; ?&gt;';
</del><ins>+var ajaxurl = '&lt;?php echo admin_url('admin-ajax.php'); ?&gt;', pagenow = '&lt;?php echo substr($pagenow, 0, -4); ?&gt;', adminpage = '&lt;?php echo $admin_body_class; ?&gt;',  thousandsSeparator = '&lt;?php echo $wp_locale-&gt;number_format['thousands_sep']; ?&gt;', decimalPoint = '&lt;?php echo $wp_locale-&gt;number_format['decimal_point']; ?&gt;';
</ins><span class="cx"> //]]&gt;
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;?php
</span></span></pre></div>
<a id="trunkwpadminincludesdashboardphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/includes/dashboard.php (12014 => 12015)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/includes/dashboard.php        2009-10-08 21:51:34 UTC (rev 12014)
+++ trunk/wp-admin/includes/dashboard.php        2009-10-09 09:02:22 UTC (rev 12015)
</span><span class="lines">@@ -236,7 +236,7 @@
</span><span class="cx">         */
</span><span class="cx"> 
</span><span class="cx">         // Total Comments
</span><del>-        $num = number_format_i18n($num_comm-&gt;total_comments);
</del><ins>+        $num = '&lt;span class=&quot;total-count&quot;&gt;' . number_format_i18n($num_comm-&gt;total_comments) . '&lt;/span&gt;';
</ins><span class="cx">         $text = _n( 'Comment', 'Comments', $num_comm-&gt;total_comments );
</span><span class="cx">         if ( current_user_can( 'moderate_comments' ) ) {
</span><span class="cx">                 $num = &quot;&lt;a href='edit-comments.php'&gt;$num&lt;/a&gt;&quot;;
</span><span class="lines">@@ -258,7 +258,7 @@
</span><span class="cx">         echo '&lt;td class=&quot;t pages&quot;&gt;' . $text . '&lt;/td&gt;';
</span><span class="cx"> 
</span><span class="cx">         // Approved Comments
</span><del>-        $num = number_format_i18n($num_comm-&gt;approved);
</del><ins>+        $num = '&lt;span class=&quot;approved-count&quot;&gt;' . number_format_i18n($num_comm-&gt;approved) . '&lt;/span&gt;';
</ins><span class="cx">         $text = _nc( 'Approved|Right Now', 'Approved', $num_comm-&gt;approved );
</span><span class="cx">         if ( current_user_can( 'moderate_comments' ) ) {
</span><span class="cx">                 $num = &quot;&lt;a href='edit-comments.php?comment_status=approved'&gt;$num&lt;/a&gt;&quot;;
</span><span class="lines">@@ -280,10 +280,10 @@
</span><span class="cx">         echo '&lt;td class=&quot;t cats&quot;&gt;' . $text . '&lt;/td&gt;';
</span><span class="cx"> 
</span><span class="cx">         // Pending Comments
</span><del>-        $num = number_format_i18n($num_comm-&gt;moderated);
</del><ins>+        $num = '&lt;span class=&quot;pending-count&quot;&gt;' . number_format_i18n($num_comm-&gt;moderated) . '&lt;/span&gt;';
</ins><span class="cx">         $text = _n( 'Pending', 'Pending', $num_comm-&gt;moderated );
</span><span class="cx">         if ( current_user_can( 'moderate_comments' ) ) {
</span><del>-                $num = &quot;&lt;a href='edit-comments.php?comment_status=moderated'&gt;&lt;span class='pending-count'&gt;$num&lt;/span&gt;&lt;/a&gt;&quot;;
</del><ins>+                $num = &quot;&lt;a href='edit-comments.php?comment_status=moderated'&gt;$num&lt;/a&gt;&quot;;
</ins><span class="cx">                 $text = &quot;&lt;a class='waiting' href='edit-comments.php?comment_status=moderated'&gt;$text&lt;/a&gt;&quot;;
</span><span class="cx">         }
</span><span class="cx">         echo '&lt;td class=&quot;b b-waiting&quot;&gt;' . $num . '&lt;/td&gt;';
</span></span></pre></div>
<a id="trunkwpadminincludestemplatephp"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/includes/template.php (12014 => 12015)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/includes/template.php        2009-10-08 21:51:34 UTC (rev 12014)
+++ trunk/wp-admin/includes/template.php        2009-10-09 09:02:22 UTC (rev 12015)
</span><span class="lines">@@ -2158,7 +2158,7 @@
</span><span class="cx"> 
</span><span class="cx">                                 if ( $user_can ) {
</span><span class="cx">                                         if ( 'trash' == $the_comment_status ) {
</span><del>-                                                $actions['untrash'] = &quot;&lt;a href='$untrash_url' class='delete:the-comment-list:comment-$comment-&gt;comment_ID:ABF888:untrash=1 vim-t vim-destructive''&gt;&quot; . __( 'Restore' ) . '&lt;/a&gt;';
</del><ins>+                                                $actions['untrash'] = &quot;&lt;a href='$untrash_url' class='delete:the-comment-list:comment-$comment-&gt;comment_ID:ABF888:untrash=1 vim-z vim-destructive'&gt;&quot; . __( 'Restore' ) . '&lt;/a&gt;';
</ins><span class="cx">                                                 $actions['delete'] = &quot;&lt;a href='$delete_url' class='delete:the-comment-list:comment-$comment-&gt;comment_ID::delete=1 delete vim-d vim-destructive'&gt;&quot; . __('Delete Permanently') . '&lt;/a&gt;';
</span><span class="cx">                                         } else {
</span><span class="cx">                                                 $actions['approve'] = &quot;&lt;a href='$approve_url' class='dim:the-comment-list:comment-$comment-&gt;comment_ID:unapproved:e7e7d3:e7e7d3:new=approved vim-a' title='&quot; . __( 'Approve this comment' ) . &quot;'&gt;&quot; . __( 'Approve' ) . '&lt;/a&gt;';
</span></span></pre></div>
<a id="trunkwpadminjseditcommentsdevjs"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/js/edit-comments.dev.js (12014 => 12015)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/js/edit-comments.dev.js        2009-10-08 21:51:34 UTC (rev 12014)
+++ trunk/wp-admin/js/edit-comments.dev.js        2009-10-09 09:02:22 UTC (rev 12015)
</span><span class="lines">@@ -17,23 +17,22 @@
</span><span class="cx">                         c.find('div.comment_status').html('1')
</span><span class="cx"> 
</span><span class="cx">                 $('span.pending-count').each( function() {
</span><del>-                        var a = $(this), n;
-                        n = a.html().replace(/[ ,.]+/g, '');
</del><ins>+                        var a = $(this), n, dif;
+                        n = a.html().replace(/[^0-9]+/g, '');
</ins><span class="cx">                         n = parseInt(n,10);
</span><span class="cx">                         if ( isNaN(n) ) return;
</span><del>-                        n = n + ( $('#' + settings.element).is('.' + settings.dimClass) ? 1 : -1 );
</del><ins>+                        dif = $('#' + settings.element).is('.' + settings.dimClass) ? 1 : -1;
+                        n = n + dif;
</ins><span class="cx">                         if ( n &lt; 0 ) { n = 0; }
</span><span class="cx">                         a.closest('#awaiting-mod')[ 0 == n ? 'addClass' : 'removeClass' ]('count-0');
</span><del>-                        n = n.toString();
-                        if ( n.length &gt; 3 )
-                                n = n.substr(0, n.length-3)+' '+n.substr(-3);
-                        a.html(n);
</del><ins>+                        updateCount(a, n);
+                        dashboardTotals();
</ins><span class="cx">                 });
</span><span class="cx">         };
</span><span class="cx"> 
</span><span class="cx">         // Send current total, page, per_page and url
</span><span class="cx">         delBefore = function( settings, list ) {
</span><del>-                var cl = $(settings.target).attr('className'), id, el, n, h, a, author;
</del><ins>+                var cl = $(settings.target).attr('className'), id, el, n, h, a, to, author;
</ins><span class="cx"> 
</span><span class="cx">                 settings.data._total = totalInput.val() || 0;
</span><span class="cx">                 settings.data._per_page = perPageInput.val() || 0;
</span><span class="lines">@@ -60,7 +59,7 @@
</span><span class="cx">                         $('strong', '#trashundo-' + id).html(author);
</span><span class="cx">                         a = $('a.undo-trash', '#trashundo-' + id);
</span><span class="cx">                         a.attr('href', 'comment.php?action=untrashcomment&amp;c=' + id + '&amp;_ajax_nonce=' + settings.data._ajax_nonce);
</span><del>-                        a.attr('className', 'delete:the-comment-list:comment-' + id + '::untrash=1 vim-t vim-destructive');
</del><ins>+                        a.attr('className', 'delete:the-comment-list:comment-' + id + '::untrash=1 vim-z vim-destructive');
</ins><span class="cx"> 
</span><span class="cx">                         a.click(function(){
</span><span class="cx">                                 list.wpList.del(this);
</span><span class="lines">@@ -71,7 +70,7 @@
</span><span class="cx">                                 return false;
</span><span class="cx">                         });
</span><span class="cx"> 
</span><del>-                        window.setTimeout( function(){
</del><ins>+                        to = window.setTimeout( function(){
</ins><span class="cx">                                 $('#trashundo-' + id).fadeOut('slow', function(){ $(this).remove(); });
</span><span class="cx">                         }, 200000 );
</span><span class="cx">                 }
</span><span class="lines">@@ -81,31 +80,75 @@
</span><span class="cx"> 
</span><span class="cx">         // Updates the current total (as displayed visibly)
</span><span class="cx">         updateTotalCount = function( total, time, setConfidentTime ) {
</span><del>-                if ( time &lt; lastConfidentTime ) {
</del><ins>+                if ( time &lt; lastConfidentTime )
</ins><span class="cx">                         return;
</span><del>-                }
</del><ins>+
+                if ( setConfidentTime )
+                        lastConfidentTime = time;
+
</ins><span class="cx">                 totalInput.val( total.toString() );
</span><del>-                if ( setConfidentTime ) {
-                        lastConfidentTime = time;
-                }
</del><span class="cx">                 $('span.total-type-count').each( function() {
</span><del>-                        var a = $(this), n;
-                        n = totalInput.val().toString();
-                        if ( n.length &gt; 3 )
-                                n = n.substr(0, n.length-3)+' '+n.substr(-3);
-                        a.html(n);
</del><ins>+                        updateCount( $(this), total );
</ins><span class="cx">                 });
</span><span class="cx">         };
</span><span class="cx"> 
</span><ins>+        function dashboardTotals(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);
+                apprN = getCount(appr);
+
+                if ( totalN ) {
+                        totalN = totalN + n;
+                        apprN = totalN - getCount( $('span.pending-count', dash) );
+                        updateCount(total, totalN);
+                        updateCount(appr, apprN);
+                }
+        }
+
+        function getCount(el) {
+                var n = parseInt( el.html().replace(/[^0-9]+/g, ''), 10 );
+                if ( isNaN(n) )
+                        return 0;
+                return n;
+        }
+
+        function updateCount(el, n) {
+                if ( isNaN(n) )
+                        return;
+                n = n &lt; 1 ? '0' : n.toString();
+                if ( n.length &gt; 3 )
+                        n = n.substr(0, n.length-3) + thousandsSeparator + n.substr(-3);
+                el.html(n);
+        }
+
</ins><span class="cx">         // In admin-ajax.php, we send back the unix time stamp instead of 1 on success
</span><span class="cx">         delAfter = function( r, settings ) {
</span><del>-                var total, pageLinks, untrash = $(settings.target).parent().is('span.untrash');
</del><ins>+                var total, pageLinks, N, untrash = $(settings.target).parent().is('span.untrash'), spam, trash;
</ins><span class="cx"> 
</span><ins>+                function getUpdate(s) {
+                        if ( $(settings.target).parent().is('span.' + s) )
+                                return 1;
+                        else if ( $('#' + settings.element).is('.' + s) )
+                                return -1;
+
+                        return 0;
+                }
+                spam = getUpdate('spam');
+                trash = getUpdate('trash');
+
+                if ( untrash )
+                        trash = -1;
+
</ins><span class="cx">                 $('span.pending-count').each( function() {
</span><del>-                        var a = $(this), n, unapproved = $('#' + settings.element).is('.unapproved');
-                        n = a.html().replace(/[ ,.]+/g, '');
-                        n = parseInt(n,10);
-                        if ( isNaN(n) ) return;
</del><ins>+                        var a = $(this), n = getCount(a), unapproved = $('#' + settings.element).is('.unapproved');
+
</ins><span class="cx">                         if ( $(settings.target).parent().is('span.unapprove') || ( untrash &amp;&amp; unapproved ) ) { // we &quot;deleted&quot; an approved comment from the approved list by clicking &quot;Unapprove&quot;
</span><span class="cx">                                 n = n + 1;
</span><span class="cx">                         } else if ( unapproved ) { // we deleted a formerly unapproved comment
</span><span class="lines">@@ -113,65 +156,41 @@
</span><span class="cx">                         }
</span><span class="cx">                         if ( n &lt; 0 ) { n = 0; }
</span><span class="cx">                         a.closest('#awaiting-mod')[ 0 == n ? 'addClass' : 'removeClass' ]('count-0');
</span><del>-                        n = n.toString();
-                        if ( n.length &gt; 3 )
-                                n = n.substr(0, n.length-3)+' '+n.substr(-3);
-                        a.html(n);
</del><ins>+                        updateCount(a, n);
+                        dashboardTotals();
</ins><span class="cx">                 });
</span><span class="cx"> 
</span><span class="cx">                 $('span.spam-count').each( function() {
</span><del>-                        var a = $(this), n;
-                        n = a.html().replace(/[ ,.]+/g, '');
-                        n = parseInt(n,10);
-                        if ( isNaN(n) ) return;
-                        if ( $(settings.target).parent().is( 'span.spam' ) ) { // we marked a comment as spam
-                                n = n + 1;
-                        } else if ( $('#' + settings.element).is('.spam') ) { // we approved, deleted, or destroyed a comment marked as spam
-                                n = n - 1;
-                        }
-                        if ( n &lt; 0 ) { n = 0; }
-                        n = n.toString();
-                        if ( n.length &gt; 3 )
-                                n = n.substr(0, n.length-3)+' '+n.substr(-3);
-                        a.html(n);
</del><ins>+                        var a = $(this), n = getCount(a) + spam;
+                        updateCount(a, n);
</ins><span class="cx">                 });
</span><span class="cx"> 
</span><span class="cx">                 $('span.trash-count').each( function() {
</span><del>-                        var a = $(this), n;
-                        n = a.html().replace(/[ ,.]+/g, '');
-                        n = parseInt(n,10);
-                        if ( isNaN(n) ) return;
-                        if ( $(settings.target).parent().is( 'span.trash' ) ) { // we trashed a comment
-                                n = n + 1;
-                        } else if ( $('#' + settings.element).is('.trash') || untrash ) { // we deleted or untrashed a trash comment
-                                n = n - 1;
-                        }
-                        if ( n &lt; 0 ) { n = 0; }
-                        n = n.toString();
-                        if ( n.length &gt; 3 )
-                                n = n.substr(0, n.length-3)+' '+n.substr(-3);
-                        a.html(n);
</del><ins>+                        var a = $(this), n = getCount(a) + trash;
+                        updateCount(a, n);
</ins><span class="cx">                 });
</span><span class="cx"> 
</span><del>-                // XML response
-                if ( ( 'object' == typeof r ) &amp;&amp; lastConfidentTime &lt; settings.parsed.responses[0].supplemental.time ) {
-                        // Set the total to the known good value (even if this value is a little old, newer values should only be a few less, and so shouldn't mess up the page links)
-                        total = settings.parsed.responses[0].supplemental.total || false;
-                        pageLinks = settings.parsed.responses[0].supplemental.pageLinks || false;
-
-                        if ( total &amp;&amp; pageLinks ) {
-                                updateTotalCount( total, settings.parsed.responses[0].supplemental.time, true );
-                                if ( $.trim( pageLinks ) ) {
</del><ins>+                if ( $('#dashboard_right_now').length ) {
+                        N = spam || trash || 0;
+                        if ( N &gt; 0 )
+                                dashboardTotals(-1);
+                        else if ( N &lt; 0 )
+                                dashboardTotals(1);
+                } else {
+                        // XML response
+                        if ( ( 'object' == typeof r ) &amp;&amp; lastConfidentTime &lt; settings.parsed.responses[0].supplemental.time ) {
+                                pageLinks = settings.parsed.responses[0].supplemental.pageLinks || '';
+                                if ( $.trim( pageLinks ) )
</ins><span class="cx">                                         $('.tablenav-pages').find( '.page-numbers' ).remove().end().append( $( pageLinks ) );
</span><del>-                                } else {
</del><ins>+                                else
</ins><span class="cx">                                         $('.tablenav-pages').find( '.page-numbers' ).remove();
</span><del>-                                }
</del><span class="cx">                         }
</span><del>-                } else {
-                        // Decrement the total
</del><ins>+
</ins><span class="cx">                         total = totalInput.val() ? parseInt( totalInput.val(), 10 ) : 0;
</span><del>-                        if ( total-- &lt; 0 )
</del><ins>+                        total = total - spam - trash;
+                        if ( total &lt; 0 )
</ins><span class="cx">                                 total = 0;
</span><ins>+
</ins><span class="cx">                         updateTotalCount( total, r, false );
</span><span class="cx">                 }
</span><span class="cx"> 
</span><span class="lines">@@ -420,26 +439,33 @@
</span><span class="cx">                                         window.location = l[0].href.replace(/\&amp;hotkeys_highlight_(first|last)=1/g, '')+'&amp;hotkeys_highlight_'+first_last+'=1';
</span><span class="cx">                         }
</span><span class="cx">                 };
</span><ins>+
</ins><span class="cx">                 edit_comment = function(event, current_row) {
</span><span class="cx">                         window.location = $('span.edit a', current_row).attr('href');
</span><span class="cx">                 };
</span><ins>+
</ins><span class="cx">                 toggle_all = function() {
</span><span class="cx">                         toggleWithKeyboard = true;
</span><del>-                        $('#comments-form thead #cb input:checkbox').click().attr('checked', '');
</del><ins>+                        $('input:checkbox', '#cb').click().attr('checked', '');
</ins><span class="cx">                         toggleWithKeyboard = false;
</span><del>-                }
</del><ins>+                };
+
</ins><span class="cx">                 make_bulk = function(value) {
</span><del>-                        return function(event, _) {
-                                $('option[value='+value+']').attr('selected', 'selected');
-                                $('form#comments-form')[0].submit();
</del><ins>+                        return function() {
+                                var scope = $('select[name=&quot;action&quot;]');
+                                $('option[value='+value+']', scope).attr('selected', 'selected');
+                                $('#comments-form').submit();
</ins><span class="cx">                         }
</span><span class="cx">                 };
</span><del>-                $.table_hotkeys($('table.widefat'),['a', 'u', 's', 'd', 'r', 'q', ['e', edit_comment],
-                                ['shift+a', make_bulk('approve')], ['shift+s', make_bulk('markspam')],
-                                ['shift+d', make_bulk('delete')], ['shift+x', toggle_all],
-                                ['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')}
</del><ins>+
+                $.table_hotkeys(
+                        $('table.widefat'),
+                        ['a', 'u', 's', 'd', 'r', 'q', 't', 'z', ['e', edit_comment], ['shift+x', toggle_all],
+                        ['shift+a', make_bulk('approve')], ['shift+s', make_bulk('markspam')],
+                        ['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') }
</ins><span class="cx">                 );
</span><span class="cx">         }
</span><span class="cx"> });
</span></span></pre></div>
<a id="trunkwpadminjseditcommentsjs"></a>
<div class="modfile"><h4>Modified: trunk/wp-admin/js/edit-comments.js (12014 => 12015)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-admin/js/edit-comments.js        2009-10-08 21:51:34 UTC (rev 12014)
+++ trunk/wp-admin/js/edit-comments.js        2009-10-09 09:02:22 UTC (rev 12015)
</span><span class="lines">@@ -1 +1 @@
</span><del>-var theList,theExtraList,toggleWithKeyboard=false;(function(a){setCommentsList=function(){var g,i,h,f=0,c,e,d,b;g=a('.tablenav input[name=&quot;_total&quot;]',&quot;#comments-form&quot;);i=a('.tablenav input[name=&quot;_per_page&quot;]',&quot;#comments-form&quot;);h=a('.tablenav input[name=&quot;_page&quot;]',&quot;#comments-form&quot;);c=function(k,j){var l=a(&quot;#&quot;+j.element);if(l.is(&quot;.unapproved&quot;)){l.find(&quot;div.comment_status&quot;).html(&quot;0&quot;)}else{l.find(&quot;div.comment_status&quot;).html(&quot;1&quot;)}a(&quot;span.pending-count&quot;).each(function(){var m=a(this),o;o=m.html().replace(/[ ,.]+/g,&quot;&quot;);o=parseInt(o,10);if(isNaN(o)){return}o=o+(a(&quot;#&quot;+j.element).is(&quot;.&quot;+j.dimClass)?1:-1);if(o&lt;0){o=0}m.closest(&quot;#awaiting-mod&quot;)[0==o?&quot;addClass&quot;:&quot;removeClass&quot;](&quot;count-0&quot;);o=o.toString();if(o.length&gt;3){o=o.substr(0,o.length-3)+&quot; &quot;+o.substr(-3)}m.html(o)})};e=function(m,q){var s=a(m.target).attr(&quot;className&quot;),j,k,l,p,r,o;m.data._total=g.val()||0;m.data._per_page=i.val()||0;m.data._page=h.val()||0;m.data._url=document.location.href;if(s.indexOf(&quot;:trash=1&quot;)!=-1){j=s.replace(/.*?comment-([0-9]+).*/,&quot;$1&quot;);k=a(&quot;#comment-&quot;+j);note=a(&quot;#undo-holder&quot;).html();if(k.is(&quot;tr&quot;)){l=k.children(&quot;:visible&quot;).length;o=a(&quot;.author strong&quot;,k).html();p=a('&lt;tr id=&quot;trashundo-'+j+'&quot; style=&quot;display:none;&quot;&gt;&lt;td class=&quot;trash-undo&quot; colspan=&quot;'+l+'&quot;&gt;'+note+&quot;&lt;/td&gt;&lt;/tr&gt;&quot;)}else{o=a(&quot;.comment-author&quot;,k).html();p=a('&lt;div id=&quot;trashundo-'+j+'&quot; style=&quot;display:none;&quot; class=&quot;trash-undo&quot;&gt;'+note+&quot;&lt;/div&gt;&quot;)}k.before(p);p.fadeIn(400);a(&quot;strong&quot;,&quot;#trashundo-&quot;+j).html(o);r=a(&quot;a.undo-trash&quot;,&quot;#trashundo-&quot;+j);r.attr(&quot;href&quot;,&quot;comment.php?action=untrashcomment&amp;c=&quot;+j+&quot;&amp;_ajax_nonce=&quot;+m.data._ajax_nonce);r.attr(&quot;className&quot;,&quot;delete:the-comment-list:comment-&quot;+j+&quot;::untrash=1 vim-t vim-destructive&quot;);r.click(function(){q.wpList.del(this);a(&quot;#trashundo-&quot;+j).fadeOut(250,function(){a(this).remove();a(&quot;#comment-&quot;+j).css(&quot;backgroundColor&quot;,&quot;&quot;).fadeIn(400)});return false});window.setTimeout(function(){a(&quot;#trashundo-&quot;+j).fadeOut(&quot;slow&quot;,function(){a(this).remove()})},200000)}return m};d=function(j,k,l){if(k&lt;f){return}g.val(j.toString());if(l){f=k}a(&quot;span.total-type-count&quot;).each(function(){var m=a(this),o;o=g.val().toString();if(o.length&gt;3){o=o.substr(0,o.length-3)+&quot; &quot;+o.substr(-3)}m.html(o)})};b=function(m,k){var l,n,j=a(k.target).parent().is(&quot;span.untrash&quot;);a(&quot;span.pending-count&quot;).each(function(){var o=a(this),q,p=a(&quot;#&quot;+k.element).is(&quot;.unapproved&quot;);q=o.html().replace(/[ ,.]+/g,&quot;&quot;);q=parseInt(q,10);if(isNaN(q)){return}if(a(k.target).parent().is(&quot;span.unapprove&quot;)||(j&amp;&amp;p)){q=q+1}else{if(p){q=q-1}}if(q&lt;0){q=0}o.closest(&quot;#awaiting-mod&quot;)[0==q?&quot;addClass&quot;:&quot;removeClass&quot;](&quot;count-0&quot;);q=q.toString();if(q.length&gt;3){q=q.substr(0,q.length-3)+&quot; &quot;+q.substr(-3)}o.html(q)});a(&quot;span.spam-count&quot;).each(function(){var o=a(this),p;p=o.html().replace(/[ ,.]+/g,&quot;&quot;);p=parseInt(p,10);if(isNaN(p)){return}if(a(k.target).parent().is(&quot;span.spam&quot;)){p=p+1}else{if(a(&quot;#&quot;+k.element).is(&quot;.spam&quot;)){p=p-1}}if(p&lt;0){p=0}p=p.toString();if(p.length&gt;3){p=p.substr(0,p.length-3)+&quot; &quot;+p.substr(-3)}o.html(p)});a(&quot;span.trash-count&quot;).each(function(){var o=a(this),p;p=o.html().replace(/[ ,.]+/g,&quot;&quot;);p=parseInt(p,10);if(isNaN(p)){return}if(a(k.target).parent().is(&quot;span.trash&quot;)){p=p+1}else{if(a(&quot;#&quot;+k.element).is(&quot;.trash&quot;)||j){p=p-1}}if(p&lt;0){p=0}p=p.toString();if(p.length&gt;3){p=p.substr(0,p.length-3)+&quot; &quot;+p.substr(-3)}o.html(p)});if((&quot;object&quot;==typeof m)&amp;&amp;f&lt;k.parsed.responses[0].supplemental.time){l=k.parsed.responses[0].supplemental.total||false;n=k.parsed.responses[0].supplemental.pageLinks||false;if(l&amp;&amp;n){d(l,k.parsed.responses[0].supplemental.time,true);if(a.trim(n)){a(&quot;.tablenav-pages&quot;).find(&quot;.page-numbers&quot;).remove().end().append(a(n))}else{a(&quot;.tablenav-pages&quot;).find(&quot;.page-numbers&quot;).remove()}}}else{l=g.val()?parseInt(g.val(),10):0;if(l--&lt;0){l=0}d(l,m,false)}if(theExtraList.size()==0||theExtraList.children().size()==0||j){return}theList.get(0).wpList.add(theExtraList.children(&quot;:eq(0)&quot;).remove().clone());a(&quot;#get-extra-comments&quot;).submit()};theExtraList=a(&quot;#the-extra-comment-list&quot;).wpList({alt:&quot;&quot;,delColor:&quot;none&quot;,addColor:&quot;none&quot;});theList=a(&quot;#the-comment-list&quot;).wpList({alt:&quot;&quot;,delBefore:e,dimAfter:c,delAfter:b,addColor:&quot;none&quot;})};commentReply={init:function(){var b=a(&quot;#replyrow&quot;);a(&quot;a.cancel&quot;,b).click(function(){return commentReply.revert()});a(&quot;a.save&quot;,b).click(function(){return commentReply.send()});a(&quot;input#author, input#author-email, input#author-url&quot;,b).keypress(function(c){if(c.which==13){commentReply.send();c.preventDefault();return false}});a(&quot;#the-comment-list .column-comment &gt; p&quot;).dblclick(function(){commentReply.toggle(a(this).parent())});a(&quot;#doaction, #doaction2, #post-query-submit&quot;).click(function(c){if(a(&quot;#the-comment-list #replyrow&quot;).length&gt;0){commentReply.close()}});this.comments_listing=a('#comments-form &gt; input[name=&quot;comment_status&quot;]').val()||&quot;&quot;},addEvents:function(b){b.each(function(){a(this).find(&quot;.column-comment &gt; p&quot;).dblclick(function(){commentReply.toggle(a(this).parent())})})},toggle:function(b){if(a(b).css(&quot;display&quot;)!=&quot;none&quot;){a(b).find(&quot;a.vim-q&quot;).click()}},revert:function(){if(a(&quot;#the-comment-list #replyrow&quot;).length&lt;1){return false}a(&quot;#replyrow&quot;).fadeOut(&quot;fast&quot;,function(){commentReply.close()});return false},close:function(){a(this.o).fadeIn(&quot;fast&quot;).css(&quot;backgroundColor&quot;,&quot;&quot;);a(&quot;#com-reply&quot;).append(a(&quot;#replyrow&quot;));a(&quot;#replycontent&quot;).val(&quot;&quot;);a(&quot;#edithead input&quot;).val(&quot;&quot;);a(&quot;#replysubmit .error&quot;).html(&quot;&quot;).hide();a(&quot;#replysubmit .waiting&quot;).hide();if(a.browser.msie){a(&quot;#replycontainer, #replycontent&quot;).css(&quot;height&quot;,&quot;120px&quot;)}else{a(&quot;#replycontainer&quot;).resizable(&quot;destroy&quot;).css(&quot;height&quot;,&quot;120px&quot;)}},open:function(i,g,c){var e=this,d,b,f;e.close();e.o=&quot;#comment-&quot;+i;a(&quot;#replyrow td&quot;).attr(&quot;colspan&quot;,a(&quot;.widefat thead th:visible&quot;).length);d=a(&quot;#replyrow&quot;),rowData=a(&quot;#inline-&quot;+i);b=e.act=(c==&quot;edit&quot;)?&quot;edit-comment&quot;:&quot;replyto-comment&quot;;a(&quot;#action&quot;,d).val(b);a(&quot;#comment_post_ID&quot;,d).val(g);a(&quot;#comment_ID&quot;,d).val(i);if(c==&quot;edit&quot;){a(&quot;#author&quot;,d).val(a(&quot;div.author&quot;,rowData).text());a(&quot;#author-email&quot;,d).val(a(&quot;div.author-email&quot;,rowData).text());a(&quot;#author-url&quot;,d).val(a(&quot;div.author-url&quot;,rowData).text());a(&quot;#status&quot;,d).val(a(&quot;div.comment_status&quot;,rowData).text());a(&quot;#replycontent&quot;,d).val(a(&quot;textarea.comment&quot;,rowData).val());a(&quot;#edithead, #savebtn&quot;,d).show();a(&quot;#replyhead, #replybtn&quot;,d).hide();f=a(e.o).height();if(f&gt;220){if(a.browser.msie){a(&quot;#replycontainer, #replycontent&quot;,d).height(f-105)}else{a(&quot;#replycontainer&quot;,d).height(f-105)}}a(e.o).after(d.hide()).fadeOut(&quot;fast&quot;,function(){a(&quot;#replyrow&quot;).fadeIn(&quot;fast&quot;)})}else{a(&quot;#edithead, #savebtn&quot;,d).hide();a(&quot;#replyhead, #replybtn&quot;,d).show();a(e.o).after(d);a(&quot;#replyrow&quot;).hide().fadeIn(&quot;fast&quot;)}if(!a.browser.msie){a(&quot;#replycontainer&quot;).resizable({handles:&quot;s&quot;,axis:&quot;y&quot;,minHeight:80,stop:function(){a(&quot;#replycontainer&quot;).width(&quot;auto&quot;)}})}setTimeout(function(){var l,j,m,h,k;l=a(&quot;#replyrow&quot;).offset().top;j=l+a(&quot;#replyrow&quot;).height();m=window.pageYOffset||document.documentElement.scrollTop;h=document.documentElement.clientHeight||self.innerHeight||0;k=m+h;if(k-20&lt;j){window.scroll(0,j-h+35)}else{if(l-20&lt;m){window.scroll(0,l-35)}}a(&quot;#replycontent&quot;).focus().keyup(function(n){if(n.which==27){commentReply.revert()}})},600);return false},send:function(){var b={};a(&quot;#replysubmit .waiting&quot;).show();a(&quot;#replyrow input&quot;).each(function(){b[a(this).attr(&quot;name&quot;)]=a(this).val()});b.content=a(&quot;#replycontent&quot;).val();b.id=b.comment_post_ID;b.comments_listing=this.comments_listing;a.ajax({type:&quot;POST&quot;,url:wpListL10n.url,data:b,success:function(c){commentReply.show(c)},error:function(c){commentReply.error(c)}});return false},show:function(b){var e,g,f,d;if(typeof(b)==&quot;string&quot;){this.error({responseText:b});return false}e=wpAjax.parseAjaxResponse(b);if(e.errors){this.error({responseText:wpAjax.broken});return false}if(&quot;edit-comment&quot;==this.act){a(this.o).remove()}e=e.responses[0];g=e.data;a(g).hide();a(&quot;#replyrow&quot;).after(g);this.o=f=&quot;#comment-&quot;+e.id;this.revert();this.addEvents(a(f));d=a(f).hasClass(&quot;unapproved&quot;)?&quot;#ffffe0&quot;:&quot;#fff&quot;;a(f).animate({backgroundColor:&quot;#CCEEBB&quot;},600).animate({backgroundColor:d},600);a.fn.wpList.process(a(f))},error:function(b){var c=b.statusText;a(&quot;#replysubmit .waiting&quot;).hide();if(b.responseText){c=b.responseText.replace(/&lt;.[^&lt;&gt;]*?&gt;/g,&quot;&quot;)}if(c){a(&quot;#replysubmit .error&quot;).html(c).show()}}};a(document).ready(function(){var e,b,c,d;setCommentsList();commentReply.init();a(&quot;span.delete a.delete&quot;).click(function(){return false});if(typeof QTags!=&quot;undefined&quot;){ed_reply=new QTags(&quot;ed_reply&quot;,&quot;replycontent&quot;,&quot;replycontainer&quot;,&quot;more&quot;)}if(typeof a.table_hotkeys!=&quot;undefined&quot;){e=function(f){return function(){var h,g;h=&quot;next&quot;==f?&quot;first&quot;:&quot;last&quot;;g=a(&quot;.&quot;+f+&quot;.page-numbers&quot;);if(g.length){window.location=g[0].href.replace(/\&amp;hotkeys_highlight_(first|last)=1/g,&quot;&quot;)+&quot;&amp;hotkeys_highlight_&quot;+h+&quot;=1&quot;}}};b=function(g,f){window.location=a(&quot;span.edit a&quot;,f).attr(&quot;href&quot;)};c=function(){toggleWithKeyboard=true;a(&quot;#comments-form thead #cb input:checkbox&quot;).click().attr(&quot;checked&quot;,&quot;&quot;);toggleWithKeyboard=false};d=function(f){return function(h,g){a(&quot;option[value=&quot;+f+&quot;]&quot;).attr(&quot;selected&quot;,&quot;selected&quot;);a(&quot;form#comments-form&quot;)[0].submit()}};a.table_hotkeys(a(&quot;table.widefat&quot;),[&quot;a&quot;,&quot;u&quot;,&quot;s&quot;,&quot;d&quot;,&quot;r&quot;,&quot;q&quot;,[&quot;e&quot;,b],[&quot;shift+a&quot;,d(&quot;approve&quot;)],[&quot;shift+s&quot;,d(&quot;markspam&quot;)],[&quot;shift+d&quot;,d(&quot;delete&quot;)],[&quot;shift+x&quot;,c],[&quot;shift+u&quot;,d(&quot;unapprove&quot;)]],{highlight_first:adminCommentsL10n.hotkeys_highlight_first,highlight_last:adminCommentsL10n.hotkeys_highlight_last,prev_page_link_cb:e(&quot;prev&quot;),next_page_link_cb:e(&quot;next&quot;)})}})})(jQuery);
</del><span class="cx">\ No newline at end of file
</span><ins>+var theList,theExtraList,toggleWithKeyboard=false;(function(a){setCommentsList=function(){var c,e,h,l=0,g,i,d,k;c=a('.tablenav input[name=&quot;_total&quot;]',&quot;#comments-form&quot;);e=a('.tablenav input[name=&quot;_per_page&quot;]',&quot;#comments-form&quot;);h=a('.tablenav input[name=&quot;_page&quot;]',&quot;#comments-form&quot;);g=function(n,m){var o=a(&quot;#&quot;+m.element);if(o.is(&quot;.unapproved&quot;)){o.find(&quot;div.comment_status&quot;).html(&quot;0&quot;)}else{o.find(&quot;div.comment_status&quot;).html(&quot;1&quot;)}a(&quot;span.pending-count&quot;).each(function(){var p=a(this),r,q;r=p.html().replace(/[^0-9]+/g,&quot;&quot;);r=parseInt(r,10);if(isNaN(r)){return}q=a(&quot;#&quot;+m.element).is(&quot;.&quot;+m.dimClass)?1:-1;r=r+q;if(r&lt;0){r=0}p.closest(&quot;#awaiting-mod&quot;)[0==r?&quot;addClass&quot;:&quot;removeClass&quot;](&quot;count-0&quot;);f(p,r);j()})};i=function(q,t){var w=a(q.target).attr(&quot;className&quot;),m,o,p,s,u,v,r;q.data._total=c.val()||0;q.data._per_page=e.val()||0;q.data._page=h.val()||0;q.data._url=document.location.href;if(w.indexOf(&quot;:trash=1&quot;)!=-1){m=w.replace(/.*?comment-([0-9]+).*/,&quot;$1&quot;);o=a(&quot;#comment-&quot;+m);note=a(&quot;#undo-holder&quot;).html();if(o.is(&quot;tr&quot;)){p=o.children(&quot;:visible&quot;).length;r=a(&quot;.author strong&quot;,o).html();s=a('&lt;tr id=&quot;trashundo-'+m+'&quot; style=&quot;display:none;&quot;&gt;&lt;td class=&quot;trash-undo&quot; colspan=&quot;'+p+'&quot;&gt;'+note+&quot;&lt;/td&gt;&lt;/tr&gt;&quot;)}else{r=a(&quot;.comment-author&quot;,o).html();s=a('&lt;div id=&quot;trashundo-'+m+'&quot; style=&quot;display:none;&quot; class=&quot;trash-undo&quot;&gt;'+note+&quot;&lt;/div&gt;&quot;)}o.before(s);s.fadeIn(400);a(&quot;strong&quot;,&quot;#trashundo-&quot;+m).html(r);u=a(&quot;a.undo-trash&quot;,&quot;#trashundo-&quot;+m);u.attr(&quot;href&quot;,&quot;comment.php?action=untrashcomment&amp;c=&quot;+m+&quot;&amp;_ajax_nonce=&quot;+q.data._ajax_nonce);u.attr(&quot;className&quot;,&quot;delete:the-comment-list:comment-&quot;+m+&quot;::untrash=1 vim-z vim-destructive&quot;);u.click(function(){t.wpList.del(this);a(&quot;#trashundo-&quot;+m).fadeOut(250,function(){a(this).remove();a(&quot;#comment-&quot;+m).css(&quot;backgroundColor&quot;,&quot;&quot;).fadeIn(400)});return false});v=window.setTimeout(function(){a(&quot;#trashundo-&quot;+m).fadeOut(&quot;slow&quot;,function(){a(this).remove()})},200000)}return q};d=function(m,n,o){if(n&lt;l){return}if(o){l=n}c.val(m.toString());a(&quot;span.total-type-count&quot;).each(function(){f(a(this),m)})};function j(s){var r=a(&quot;#dashboard_right_now&quot;),o,q,p,m;s=s||0;if(isNaN(s)||!r.length){return}o=a(&quot;span.total-count&quot;,r);q=a(&quot;span.approved-count&quot;,r);p=b(o);m=b(q);if(p){p=p+s;m=p-b(a(&quot;span.pending-count&quot;,r));f(o,p);f(q,m)}}function b(m){var o=parseInt(m.html().replace(/[^0-9]+/g,&quot;&quot;),10);if(isNaN(o)){return 0}return o}function f(m,o){if(isNaN(o)){return}o=o&lt;1?&quot;0&quot;:o.toString();if(o.length&gt;3){o=o.substr(0,o.length-3)+thousandsSeparator+o.substr(-3)}m.html(o)}k=function(m,n){var q,o,p,u=a(n.target).parent().is(&quot;span.untrash&quot;),t,s;function v(r){if(a(n.target).parent().is(&quot;span.&quot;+r)){return 1}else{if(a(&quot;#&quot;+n.element).is(&quot;.&quot;+r)){return -1}}return 0}t=v(&quot;spam&quot;);s=v(&quot;trash&quot;);if(u){s=-1}a(&quot;span.pending-count&quot;).each(function(){var r=a(this),x=b(r),w=a(&quot;#&quot;+n.element).is(&quot;.unapproved&quot;);if(a(n.target).parent().is(&quot;span.unapprove&quot;)||(u&amp;&amp;w)){x=x+1}else{if(w){x=x-1}}if(x&lt;0){x=0}r.closest(&quot;#awaiting-mod&quot;)[0==x?&quot;addClass&quot;:&quot;removeClass&quot;](&quot;count-0&quot;);f(r,x);j()});a(&quot;span.spam-count&quot;).each(function(){var r=a(this),w=b(r)+t;f(r,w)});a(&quot;span.trash-count&quot;).each(function(){var r=a(this),w=b(r)+s;f(r,w)});if(a(&quot;#dashboard_right_now&quot;).length){p=t||s||0;if(p&gt;0){j(-1)}else{if(p&lt;0){j(1)}}}else{if((&quot;object&quot;==typeof m)&amp;&amp;l&lt;n.parsed.responses[0].supplemental.time){o=n.parsed.responses[0].supplemental.pageLinks||&quot;&quot;;if(a.trim(o)){a(&quot;.tablenav-pages&quot;).find(&quot;.page-numbers&quot;).remove().end().append(a(o))}else{a(&quot;.tablenav-pages&quot;).find(&quot;.page-numbers&quot;).remove()}}q=c.val()?parseInt(c.val(),10):0;q=q-t-s;if(q&lt;0){q=0}d(q,m,false)}if(theExtraList.size()==0||theExtraList.children().size()==0||u){return}theList.get(0).wpList.add(theExtraList.children(&quot;:eq(0)&quot;).remove().clone());a(&quot;#get-extra-comments&quot;).submit()};theExtraList=a(&quot;#the-extra-comment-list&quot;).wpList({alt:&quot;&quot;,delColor:&quot;none&quot;,addColor:&quot;none&quot;});theList=a(&quot;#the-comment-list&quot;).wpList({alt:&quot;&quot;,delBefore:i,dimAfter:g,delAfter:k,addColor:&quot;none&quot;})};commentReply={init:function(){var b=a(&quot;#replyrow&quot;);a(&quot;a.cancel&quot;,b).click(function(){return commentReply.revert()});a(&quot;a.save&quot;,b).click(function(){return commentReply.send()});a(&quot;input#author, input#author-email, input#author-url&quot;,b).keypress(function(c){if(c.which==13){commentReply.send();c.preventDefault();return false}});a(&quot;#the-comment-list .column-comment &gt; p&quot;).dblclick(function(){commentReply.toggle(a(this).parent())});a(&quot;#doaction, #doaction2, #post-query-submit&quot;).click(function(c){if(a(&quot;#the-comment-list #replyrow&quot;).length&gt;0){commentReply.close()}});this.comments_listing=a('#comments-form &gt; input[name=&quot;comment_status&quot;]').val()||&quot;&quot;},addEvents:function(b){b.each(function(){a(this).find(&quot;.column-comment &gt; p&quot;).dblclick(function(){commentReply.toggle(a(this).parent())})})},toggle:function(b){if(a(b).css(&quot;display&quot;)!=&quot;none&quot;){a(b).find(&quot;a.vim-q&quot;).click()}},revert:function(){if(a(&quot;#the-comment-list #replyrow&quot;).length&lt;1){return false}a(&quot;#replyrow&quot;).fadeOut(&quot;fast&quot;,function(){commentReply.close()});return false},close:function(){a(this.o).fadeIn(&quot;fast&quot;).css(&quot;backgroundColor&quot;,&quot;&quot;);a(&quot;#com-reply&quot;).append(a(&quot;#replyrow&quot;));a(&quot;#replycontent&quot;).val(&quot;&quot;);a(&quot;#edithead input&quot;).val(&quot;&quot;);a(&quot;#replysubmit .error&quot;).html(&quot;&quot;).hide();a(&quot;#replysubmit .waiting&quot;).hide();if(a.browser.msie){a(&quot;#replycontainer, #replycontent&quot;).css(&quot;height&quot;,&quot;120px&quot;)}else{a(&quot;#replycontainer&quot;).resizable(&quot;destroy&quot;).css(&quot;height&quot;,&quot;120px&quot;)}},open:function(i,g,c){var e=this,d,b,f;e.close();e.o=&quot;#comment-&quot;+i;a(&quot;#replyrow td&quot;).attr(&quot;colspan&quot;,a(&quot;.widefat thead th:visible&quot;).length);d=a(&quot;#replyrow&quot;),rowData=a(&quot;#inline-&quot;+i);b=e.act=(c==&quot;edit&quot;)?&quot;edit-comment&quot;:&quot;replyto-comment&quot;;a(&quot;#action&quot;,d).val(b);a(&quot;#comment_post_ID&quot;,d).val(g);a(&quot;#comment_ID&quot;,d).val(i);if(c==&quot;edit&quot;){a(&quot;#author&quot;,d).val(a(&quot;div.author&quot;,rowData).text());a(&quot;#author-email&quot;,d).val(a(&quot;div.author-email&quot;,rowData).text());a(&quot;#author-url&quot;,d).val(a(&quot;div.author-url&quot;,rowData).text());a(&quot;#status&quot;,d).val(a(&quot;div.comment_status&quot;,rowData).text());a(&quot;#replycontent&quot;,d).val(a(&quot;textarea.comment&quot;,rowData).val());a(&quot;#edithead, #savebtn&quot;,d).show();a(&quot;#replyhead, #replybtn&quot;,d).hide();f=a(e.o).height();if(f&gt;220){if(a.browser.msie){a(&quot;#replycontainer, #replycontent&quot;,d).height(f-105)}else{a(&quot;#replycontainer&quot;,d).height(f-105)}}a(e.o).after(d.hide()).fadeOut(&quot;fast&quot;,function(){a(&quot;#replyrow&quot;).fadeIn(&quot;fast&quot;)})}else{a(&quot;#edithead, #savebtn&quot;,d).hide();a(&quot;#replyhead, #replybtn&quot;,d).show();a(e.o).after(d);a(&quot;#replyrow&quot;).hide().fadeIn(&quot;fast&quot;)}if(!a.browser.msie){a(&quot;#replycontainer&quot;).resizable({handles:&quot;s&quot;,axis:&quot;y&quot;,minHeight:80,stop:function(){a(&quot;#replycontainer&quot;).width(&quot;auto&quot;)}})}setTimeout(function(){var l,j,m,h,k;l=a(&quot;#replyrow&quot;).offset().top;j=l+a(&quot;#replyrow&quot;).height();m=window.pageYOffset||document.documentElement.scrollTop;h=document.documentElement.clientHeight||self.innerHeight||0;k=m+h;if(k-20&lt;j){window.scroll(0,j-h+35)}else{if(l-20&lt;m){window.scroll(0,l-35)}}a(&quot;#replycontent&quot;).focus().keyup(function(n){if(n.which==27){commentReply.revert()}})},600);return false},send:function(){var b={};a(&quot;#replysubmit .waiting&quot;).show();a(&quot;#replyrow input&quot;).each(function(){b[a(this).attr(&quot;name&quot;)]=a(this).val()});b.content=a(&quot;#replycontent&quot;).val();b.id=b.comment_post_ID;b.comments_listing=this.comments_listing;a.ajax({type:&quot;POST&quot;,url:wpListL10n.url,data:b,success:function(c){commentReply.show(c)},error:function(c){commentReply.error(c)}});return false},show:function(b){var e,g,f,d;if(typeof(b)==&quot;string&quot;){this.error({responseText:b});return false}e=wpAjax.parseAjaxResponse(b);if(e.errors){this.error({responseText:wpAjax.broken});return false}if(&quot;edit-comment&quot;==this.act){a(this.o).remove()}e=e.responses[0];g=e.data;a(g).hide();a(&quot;#replyrow&quot;).after(g);this.o=f=&quot;#comment-&quot;+e.id;this.revert();this.addEvents(a(f));d=a(f).hasClass(&quot;unapproved&quot;)?&quot;#ffffe0&quot;:&quot;#fff&quot;;a(f).animate({backgroundColor:&quot;#CCEEBB&quot;},600).animate({backgroundColor:d},600);a.fn.wpList.process(a(f))},error:function(b){var c=b.statusText;a(&quot;#replysubmit .waiting&quot;).hide();if(b.responseText){c=b.responseText.replace(/&lt;.[^&lt;&gt;]*?&gt;/g,&quot;&quot;)}if(c){a(&quot;#replysubmit .error&quot;).html(c).show()}}};a(document).ready(function(){var e,b,c,d;setCommentsList();commentReply.init();a(&quot;span.delete a.delete&quot;).click(function(){return false});if(typeof QTags!=&quot;undefined&quot;){ed_reply=new QTags(&quot;ed_reply&quot;,&quot;replycontent&quot;,&quot;replycontainer&quot;,&quot;more&quot;)}if(typeof a.table_hotkeys!=&quot;undefined&quot;){e=function(f){return function(){var h,g;h=&quot;next&quot;==f?&quot;first&quot;:&quot;last&quot;;g=a(&quot;.&quot;+f+&quot;.page-numbers&quot;);if(g.length){window.location=g[0].href.replace(/\&amp;hotkeys_highlight_(first|last)=1/g,&quot;&quot;)+&quot;&amp;hotkeys_highlight_&quot;+h+&quot;=1&quot;}}};b=function(g,f){window.location=a(&quot;span.edit a&quot;,f).attr(&quot;href&quot;)};c=function(){toggleWithKeyboard=true;a(&quot;input:checkbox&quot;,&quot;#cb&quot;).click().attr(&quot;checked&quot;,&quot;&quot;);toggleWithKeyboard=false};d=function(f){return function(){var g=a('select[name=&quot;action&quot;]');a(&quot;option[value=&quot;+f+&quot;]&quot;,g).attr(&quot;selected&quot;,&quot;selected&quot;);a(&quot;#comments-form&quot;).submit()}};a.table_hotkeys(a(&quot;table.widefat&quot;),[&quot;a&quot;,&quot;u&quot;,&quot;s&quot;,&quot;d&quot;,&quot;r&quot;,&quot;q&quot;,&quot;t&quot;,&quot;z&quot;,[&quot;e&quot;,b],[&quot;shift+x&quot;,c],[&quot;shift+a&quot;,d(&quot;approve&quot;)],[&quot;shift+s&quot;,d(&quot;markspam&quot;)],[&quot;shift+d&quot;,d(&quot;delete&quot;)],[&quot;shift+t&quot;,d(&quot;trash&quot;)],[&quot;shift+z&quot;,d(&quot;untrash&quot;)],[&quot;shift+u&quot;,d(&quot;unapprove&quot;)]],{highlight_first:adminCommentsL10n.hotkeys_highlight_first,highlight_last:adminCommentsL10n.hotkeys_highlight_last,prev_page_link_cb:e(&quot;prev&quot;),next_page_link_cb:e(&quot;next&quot;)})}})})(jQuery);
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkwpincludesscriptloaderphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/script-loader.php (12014 => 12015)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/script-loader.php        2009-10-08 21:51:34 UTC (rev 12014)
+++ trunk/wp-includes/script-loader.php        2009-10-09 09:02:22 UTC (rev 12015)
</span><span class="lines">@@ -256,7 +256,7 @@
</span><span class="cx">                 $scripts-&gt;add( 'user-profile', &quot;/wp-admin/js/user-profile$suffix.js&quot;, array('jquery'), '20090514' );
</span><span class="cx">                 $scripts-&gt;add_data( 'user-profile', 'group', 1 );
</span><span class="cx"> 
</span><del>-                $scripts-&gt;add( 'admin-comments', &quot;/wp-admin/js/edit-comments$suffix.js&quot;, array('wp-lists', 'jquery-ui-resizable', 'quicktags'), '20091007' );
</del><ins>+                $scripts-&gt;add( 'admin-comments', &quot;/wp-admin/js/edit-comments$suffix.js&quot;, array('wp-lists', 'jquery-ui-resizable', 'quicktags'), '20091008' );
</ins><span class="cx">                 $scripts-&gt;add_data( 'admin-comments', 'group', 1 );
</span><span class="cx">                 $scripts-&gt;localize( 'admin-comments', 'adminCommentsL10n', array(
</span><span class="cx">                         'hotkeys_highlight_first' =&gt; isset($_GET['hotkeys_highlight_first']),
</span></span></pre>
</div>
</div>

</body>
</html>