2009-01-12 14:43:17 +01:00
var theList , theExtraList , toggleWithKeyboard = false ;
2009-01-02 16:08:58 +01:00
( function ( $ ) {
setCommentsList = function ( ) {
var totalInput , perPageInput , pageInput , lastConfidentTime = 0 , dimAfter , delBefore , updateTotalCount , delAfter ;
2009-05-25 01:47:49 +02:00
2009-10-08 10:24:59 +02:00
totalInput = $ ( '.tablenav input[name="_total"]' , '#comments-form' ) ;
perPageInput = $ ( '.tablenav input[name="_per_page"]' , '#comments-form' ) ;
pageInput = $ ( '.tablenav input[name="_page"]' , '#comments-form' ) ;
2009-01-02 16:08:58 +01:00
dimAfter = function ( r , settings ) {
var c = $ ( '#' + settings . element ) ;
if ( c . is ( '.unapproved' ) )
c . find ( 'div.comment_status' ) . html ( '0' )
else
c . find ( 'div.comment_status' ) . html ( '1' )
$ ( 'span.pending-count' ) . each ( function ( ) {
2009-10-09 11:02:22 +02:00
var a = $ ( this ) , n , dif ;
n = a . html ( ) . replace ( /[^0-9]+/g , '' ) ;
2009-01-02 16:08:58 +01:00
n = parseInt ( n , 10 ) ;
if ( isNaN ( n ) ) return ;
2009-10-09 11:02:22 +02:00
dif = $ ( '#' + settings . element ) . is ( '.' + settings . dimClass ) ? 1 : - 1 ;
n = n + dif ;
2009-01-02 16:08:58 +01:00
if ( n < 0 ) { n = 0 ; }
2009-10-08 10:24:59 +02:00
a . closest ( '#awaiting-mod' ) [ 0 == n ? 'addClass' : 'removeClass' ] ( 'count-0' ) ;
2009-10-09 11:02:22 +02:00
updateCount ( a , n ) ;
dashboardTotals ( ) ;
2009-01-02 16:08:58 +01:00
} ) ;
} ;
// Send current total, page, per_page and url
2009-10-08 10:24:59 +02:00
delBefore = function ( settings , list ) {
2009-10-09 11:02:22 +02:00
var cl = $ ( settings . target ) . attr ( 'className' ) , id , el , n , h , a , to , author ;
2009-10-08 10:24:59 +02:00
settings . data . _total = totalInput . val ( ) || 0 ;
settings . data . _per _page = perPageInput . val ( ) || 0 ;
settings . data . _page = pageInput . val ( ) || 0 ;
2009-01-02 16:08:58 +01:00
settings . data . _url = document . location . href ;
2009-02-07 16:26:01 +01:00
2009-10-08 10:24:59 +02:00
if ( cl . indexOf ( ':trash=1' ) != - 1 ) {
id = cl . replace ( /.*?comment-([0-9]+).*/ , '$1' ) ;
el = $ ( '#comment-' + id ) ;
note = $ ( '#undo-holder' ) . html ( ) ;
if ( el . is ( 'tr' ) ) {
n = el . children ( ':visible' ) . length ;
author = $ ( '.author strong' , el ) . html ( ) ;
h = $ ( '<tr id="trashundo-' + id + '" style="display:none;"><td class="trash-undo" colspan="' + n + '">' + note + '</td></tr>' ) ;
} else {
author = $ ( '.comment-author' , el ) . html ( ) ;
h = $ ( '<div id="trashundo-' + id + '" style="display:none;" class="trash-undo">' + note + '</div>' ) ;
}
el . before ( h ) ;
$ ( 'strong' , '#trashundo-' + id ) . html ( author ) ;
a = $ ( 'a.undo-trash' , '#trashundo-' + id ) ;
a . attr ( 'href' , 'comment.php?action=untrashcomment&c=' + id + '&_ajax_nonce=' + settings . data . _ajax _nonce ) ;
2009-10-09 11:02:22 +02:00
a . attr ( 'className' , 'delete:the-comment-list:comment-' + id + '::untrash=1 vim-z vim-destructive' ) ;
2009-10-08 10:24:59 +02:00
a . click ( function ( ) {
list . wpList . del ( this ) ;
$ ( '#trashundo-' + id ) . fadeOut ( 250 , function ( ) {
$ ( this ) . remove ( ) ;
2009-10-18 07:59:03 +02:00
$ ( '#comment-' + id ) . css ( 'backgroundColor' , '' ) . fadeIn ( 300 ) ;
2009-10-08 10:24:59 +02:00
} ) ;
return false ;
} ) ;
2009-10-09 11:02:22 +02:00
to = window . setTimeout ( function ( ) {
2009-10-08 10:24:59 +02:00
$ ( '#trashundo-' + id ) . fadeOut ( 'slow' , function ( ) { $ ( this ) . remove ( ) ; } ) ;
} , 200000 ) ;
}
2009-01-02 16:08:58 +01:00
return settings ;
} ;
2009-10-08 10:24:59 +02:00
// Updates the current total (as displayed visibly)
2009-01-02 16:08:58 +01:00
updateTotalCount = function ( total , time , setConfidentTime ) {
2009-10-09 11:02:22 +02:00
if ( time < lastConfidentTime )
2009-01-02 16:08:58 +01:00
return ;
2009-10-09 11:02:22 +02:00
if ( setConfidentTime )
2009-01-02 16:08:58 +01:00
lastConfidentTime = time ;
2009-10-09 11:02:22 +02:00
totalInput . val ( total . toString ( ) ) ;
2009-01-02 16:08:58 +01:00
$ ( 'span.total-type-count' ) . each ( function ( ) {
2009-10-09 11:02:22 +02:00
updateCount ( $ ( this ) , total ) ;
2009-01-02 16:08:58 +01:00
} ) ;
} ;
2009-10-09 11:02:22 +02:00
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 < 1 ? '0' : n . toString ( ) ;
if ( n . length > 3 )
n = n . substr ( 0 , n . length - 3 ) + thousandsSeparator + n . substr ( - 3 ) ;
el . html ( n ) ;
}
2009-01-02 16:08:58 +01:00
// In admin-ajax.php, we send back the unix time stamp instead of 1 on success
delAfter = function ( r , settings ) {
2009-10-09 11:02:22 +02:00
var total , pageLinks , N , untrash = $ ( settings . target ) . parent ( ) . is ( 'span.untrash' ) , spam , trash ;
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 ;
2009-10-08 10:24:59 +02:00
2009-01-02 16:08:58 +01:00
$ ( 'span.pending-count' ) . each ( function ( ) {
2009-10-09 11:02:22 +02:00
var a = $ ( this ) , n = getCount ( a ) , unapproved = $ ( '#' + settings . element ) . is ( '.unapproved' ) ;
2009-10-08 10:24:59 +02:00
if ( $ ( settings . target ) . parent ( ) . is ( 'span.unapprove' ) || ( untrash && unapproved ) ) { // we "deleted" an approved comment from the approved list by clicking "Unapprove"
2009-01-02 16:08:58 +01:00
n = n + 1 ;
2009-10-08 10:24:59 +02:00
} else if ( unapproved ) { // we deleted a formerly unapproved comment
n = n - 1 ;
2009-01-02 16:08:58 +01:00
}
if ( n < 0 ) { n = 0 ; }
2009-10-08 10:24:59 +02:00
a . closest ( '#awaiting-mod' ) [ 0 == n ? 'addClass' : 'removeClass' ] ( 'count-0' ) ;
2009-10-09 11:02:22 +02:00
updateCount ( a , n ) ;
dashboardTotals ( ) ;
2009-01-02 16:08:58 +01:00
} ) ;
$ ( 'span.spam-count' ) . each ( function ( ) {
2009-10-09 11:02:22 +02:00
var a = $ ( this ) , n = getCount ( a ) + spam ;
updateCount ( a , n ) ;
2009-01-02 16:08:58 +01:00
} ) ;
2009-07-30 15:39:34 +02:00
$ ( 'span.trash-count' ) . each ( function ( ) {
2009-10-09 11:02:22 +02:00
var a = $ ( this ) , n = getCount ( a ) + trash ;
updateCount ( a , n ) ;
2009-07-21 05:11:12 +02:00
} ) ;
2009-10-09 11:02:22 +02:00
if ( $ ( '#dashboard_right_now' ) . length ) {
N = spam || trash || 0 ;
if ( N > 0 )
dashboardTotals ( - 1 ) ;
else if ( N < 0 )
dashboardTotals ( 1 ) ;
} else {
// XML response
if ( ( 'object' == typeof r ) && lastConfidentTime < settings . parsed . responses [ 0 ] . supplemental . time ) {
pageLinks = settings . parsed . responses [ 0 ] . supplemental . pageLinks || '' ;
if ( $ . trim ( pageLinks ) )
2009-10-08 10:24:59 +02:00
$ ( '.tablenav-pages' ) . find ( '.page-numbers' ) . remove ( ) . end ( ) . append ( $ ( pageLinks ) ) ;
2009-10-09 11:02:22 +02:00
else
2009-10-08 10:24:59 +02:00
$ ( '.tablenav-pages' ) . find ( '.page-numbers' ) . remove ( ) ;
2009-01-02 16:08:58 +01:00
}
2009-10-09 11:02:22 +02:00
2009-10-08 10:24:59 +02:00
total = totalInput . val ( ) ? parseInt ( totalInput . val ( ) , 10 ) : 0 ;
2009-10-09 11:02:22 +02:00
total = total - spam - trash ;
if ( total < 0 )
2009-01-02 16:08:58 +01:00
total = 0 ;
2009-10-09 11:02:22 +02:00
2009-01-02 16:08:58 +01:00
updateTotalCount ( total , r , false ) ;
}
2009-10-08 10:24:59 +02:00
if ( theExtraList . size ( ) == 0 || theExtraList . children ( ) . size ( ) == 0 || untrash ) {
2009-01-02 16:08:58 +01:00
return ;
}
theList . get ( 0 ) . wpList . add ( theExtraList . children ( ':eq(0)' ) . remove ( ) . clone ( ) ) ;
$ ( '#get-extra-comments' ) . submit ( ) ;
} ;
theExtraList = $ ( '#the-extra-comment-list' ) . wpList ( { alt : '' , delColor : 'none' , addColor : 'none' } ) ;
2009-10-18 07:59:03 +02:00
theList = $ ( '#the-comment-list' ) . wpList ( { alt : '' , delBefore : delBefore , dimAfter : dimAfter , delAfter : delAfter , addColor : 'none' } )
. bind ( 'wpListDelEnd' , function ( e , s ) {
var id = s . element . replace ( /[^0-9]+/g , '' ) ;
2009-01-02 16:08:58 +01:00
2009-10-18 07:59:03 +02:00
if ( s . target . className . indexOf ( ':trash=1' ) != - 1 )
$ ( '#trashundo-' + id ) . fadeIn ( 300 ) ;
} ) ;
2009-01-02 16:08:58 +01:00
} ;
commentReply = {
init : function ( ) {
var row = $ ( '#replyrow' ) ;
$ ( 'a.cancel' , row ) . click ( function ( ) { return commentReply . revert ( ) ; } ) ;
2009-01-13 02:31:19 +01:00
$ ( 'a.save' , row ) . click ( function ( ) { return commentReply . send ( ) ; } ) ;
$ ( 'input#author, input#author-email, input#author-url' , row ) . keypress ( function ( e ) {
if ( e . which == 13 ) {
commentReply . send ( ) ;
e . preventDefault ( ) ;
return false ;
}
} ) ;
2009-01-02 16:08:58 +01:00
// add events
$ ( '#the-comment-list .column-comment > p' ) . dblclick ( function ( ) {
2009-01-12 14:43:17 +01:00
commentReply . toggle ( $ ( this ) . parent ( ) ) ;
} ) ;
2009-01-02 16:08:58 +01:00
$ ( '#doaction, #doaction2, #post-query-submit' ) . click ( function ( e ) {
if ( $ ( '#the-comment-list #replyrow' ) . length > 0 )
commentReply . close ( ) ;
} ) ;
2009-05-25 01:47:49 +02:00
2009-01-13 02:31:19 +01:00
this . comments _listing = $ ( '#comments-form > input[name="comment_status"]' ) . val ( ) || '' ;
2009-01-02 16:08:58 +01:00
} ,
addEvents : function ( r ) {
r . each ( function ( ) {
$ ( this ) . find ( '.column-comment > p' ) . dblclick ( function ( ) {
commentReply . toggle ( $ ( this ) . parent ( ) ) ;
} ) ;
} ) ;
} ,
toggle : function ( el ) {
if ( $ ( el ) . css ( 'display' ) != 'none' )
$ ( el ) . find ( 'a.vim-q' ) . click ( ) ;
} ,
revert : function ( ) {
if ( $ ( '#the-comment-list #replyrow' ) . length < 1 )
return false ;
$ ( '#replyrow' ) . fadeOut ( 'fast' , function ( ) {
commentReply . close ( ) ;
} ) ;
return false ;
} ,
close : function ( ) {
$ ( this . o ) . fadeIn ( 'fast' ) . css ( 'backgroundColor' , '' ) ;
$ ( '#com-reply' ) . append ( $ ( '#replyrow' ) ) ;
$ ( '#replycontent' ) . val ( '' ) ;
$ ( '#edithead input' ) . val ( '' ) ;
$ ( '#replysubmit .error' ) . html ( '' ) . hide ( ) ;
$ ( '#replysubmit .waiting' ) . hide ( ) ;
if ( $ . browser . msie )
$ ( '#replycontainer, #replycontent' ) . css ( 'height' , '120px' ) ;
else
$ ( '#replycontainer' ) . resizable ( 'destroy' ) . css ( 'height' , '120px' ) ;
} ,
open : function ( id , p , a ) {
var t = this , editRow , act , h ;
t . close ( ) ;
t . o = '#comment-' + id ;
$ ( '#replyrow td' ) . attr ( 'colspan' , $ ( '.widefat thead th:visible' ) . length ) ;
editRow = $ ( '#replyrow' ) , rowData = $ ( '#inline-' + id ) ;
act = t . act = ( a == 'edit' ) ? 'edit-comment' : 'replyto-comment' ;
$ ( '#action' , editRow ) . val ( act ) ;
$ ( '#comment_post_ID' , editRow ) . val ( p ) ;
$ ( '#comment_ID' , editRow ) . val ( id ) ;
if ( a == 'edit' ) {
$ ( '#author' , editRow ) . val ( $ ( 'div.author' , rowData ) . text ( ) ) ;
$ ( '#author-email' , editRow ) . val ( $ ( 'div.author-email' , rowData ) . text ( ) ) ;
$ ( '#author-url' , editRow ) . val ( $ ( 'div.author-url' , rowData ) . text ( ) ) ;
$ ( '#status' , editRow ) . val ( $ ( 'div.comment_status' , rowData ) . text ( ) ) ;
$ ( '#replycontent' , editRow ) . val ( $ ( 'textarea.comment' , rowData ) . val ( ) ) ;
$ ( '#edithead, #savebtn' , editRow ) . show ( ) ;
$ ( '#replyhead, #replybtn' , editRow ) . hide ( ) ;
h = $ ( t . o ) . height ( ) ;
if ( h > 220 )
if ( $ . browser . msie )
$ ( '#replycontainer, #replycontent' , editRow ) . height ( h - 105 ) ;
else
$ ( '#replycontainer' , editRow ) . height ( h - 105 ) ;
$ ( t . o ) . after ( editRow . hide ( ) ) . fadeOut ( 'fast' , function ( ) {
$ ( '#replyrow' ) . fadeIn ( 'fast' ) ;
} ) ;
} else {
$ ( '#edithead, #savebtn' , editRow ) . hide ( ) ;
$ ( '#replyhead, #replybtn' , editRow ) . show ( ) ;
$ ( t . o ) . after ( editRow ) ;
$ ( '#replyrow' ) . hide ( ) . fadeIn ( 'fast' ) ;
}
if ( ! $ . browser . msie )
$ ( '#replycontainer' ) . resizable ( {
handles : 's' ,
axis : 'y' ,
minHeight : 80 ,
stop : function ( ) {
$ ( '#replycontainer' ) . width ( 'auto' ) ;
}
} ) ;
setTimeout ( function ( ) {
var rtop , rbottom , scrollTop , vp , scrollBottom ;
2009-05-25 01:47:49 +02:00
2009-01-02 16:08:58 +01:00
rtop = $ ( '#replyrow' ) . offset ( ) . top ;
rbottom = rtop + $ ( '#replyrow' ) . height ( ) ;
scrollTop = window . pageYOffset || document . documentElement . scrollTop ;
vp = document . documentElement . clientHeight || self . innerHeight || 0 ;
scrollBottom = scrollTop + vp ;
if ( scrollBottom - 20 < rbottom )
window . scroll ( 0 , rbottom - vp + 35 ) ;
else if ( rtop - 20 < scrollTop )
window . scroll ( 0 , rtop - 35 ) ;
$ ( '#replycontent' ) . focus ( ) . keyup ( function ( e ) {
if ( e . which == 27 ) commentReply . revert ( ) ; // close on Escape
} ) ;
} , 600 ) ;
return false ;
} ,
send : function ( ) {
var post = { } ;
$ ( '#replysubmit .waiting' ) . show ( ) ;
$ ( '#replyrow input' ) . each ( function ( ) {
post [ $ ( this ) . attr ( 'name' ) ] = $ ( this ) . val ( ) ;
} ) ;
post . content = $ ( '#replycontent' ) . val ( ) ;
post . id = post . comment _post _ID ;
2009-01-13 02:31:19 +01:00
post . comments _listing = this . comments _listing ;
2009-01-02 16:08:58 +01:00
$ . ajax ( {
type : 'POST' ,
2009-10-20 19:45:12 +02:00
url : ajaxurl ,
2009-01-02 16:08:58 +01:00
data : post ,
success : function ( x ) { commentReply . show ( x ) ; } ,
error : function ( r ) { commentReply . error ( r ) ; }
} ) ;
return false ;
} ,
show : function ( xml ) {
var r , c , id , bg ;
if ( typeof ( xml ) == 'string' ) {
this . error ( { 'responseText' : xml } ) ;
return false ;
}
r = wpAjax . parseAjaxResponse ( xml ) ;
if ( r . errors ) {
this . error ( { 'responseText' : wpAjax . broken } ) ;
return false ;
}
if ( 'edit-comment' == this . act )
$ ( this . o ) . remove ( ) ;
r = r . responses [ 0 ] ;
c = r . data ;
$ ( c ) . hide ( )
$ ( '#replyrow' ) . after ( c ) ;
2009-05-25 01:47:49 +02:00
2009-01-02 16:08:58 +01:00
this . o = id = '#comment-' + r . id ;
this . revert ( ) ;
this . addEvents ( $ ( id ) ) ;
bg = $ ( id ) . hasClass ( 'unapproved' ) ? '#ffffe0' : '#fff' ;
$ ( id )
. animate ( { 'backgroundColor' : '#CCEEBB' } , 600 )
. animate ( { 'backgroundColor' : bg } , 600 ) ;
$ . fn . wpList . process ( $ ( id ) )
} ,
error : function ( r ) {
var er = r . statusText ;
$ ( '#replysubmit .waiting' ) . hide ( ) ;
if ( r . responseText )
er = r . responseText . replace ( /<.[^<>]*?>/g , '' ) ;
if ( er )
$ ( '#replysubmit .error' ) . html ( er ) . show ( ) ;
}
} ;
2009-01-12 14:43:17 +01:00
2009-01-02 16:08:58 +01:00
$ ( document ) . ready ( function ( ) {
var make _hotkeys _redirect , edit _comment , toggle _all , make _bulk ;
2009-01-12 14:43:17 +01:00
2009-02-07 16:26:01 +01:00
setCommentsList ( ) ;
2009-01-02 16:08:58 +01:00
commentReply . init ( ) ;
2009-02-09 23:46:27 +01:00
$ ( 'span.delete a.delete' ) . click ( function ( ) { return false ; } ) ;
2009-01-02 16:08:58 +01:00
if ( typeof QTags != 'undefined' )
ed _reply = new QTags ( 'ed_reply' , 'replycontent' , 'replycontainer' , 'more' ) ;
if ( typeof $ . table _hotkeys != 'undefined' ) {
make _hotkeys _redirect = function ( which ) {
return function ( ) {
var first _last , l ;
2009-05-25 01:47:49 +02:00
2009-01-02 16:08:58 +01:00
first _last = 'next' == which ? 'first' : 'last' ;
l = $ ( '.' + which + '.page-numbers' ) ;
if ( l . length )
window . location = l [ 0 ] . href . replace ( /\&hotkeys_highlight_(first|last)=1/g , '' ) + '&hotkeys_highlight_' + first _last + '=1' ;
}
} ;
2009-10-09 11:02:22 +02:00
2009-01-02 16:08:58 +01:00
edit _comment = function ( event , current _row ) {
window . location = $ ( 'span.edit a' , current _row ) . attr ( 'href' ) ;
} ;
2009-10-09 11:02:22 +02:00
2009-01-02 16:08:58 +01:00
toggle _all = function ( ) {
toggleWithKeyboard = true ;
2009-10-09 11:02:22 +02:00
$ ( 'input:checkbox' , '#cb' ) . click ( ) . attr ( 'checked' , '' ) ;
2009-01-02 16:08:58 +01:00
toggleWithKeyboard = false ;
2009-10-09 11:02:22 +02:00
} ;
2009-01-02 16:08:58 +01:00
make _bulk = function ( value ) {
2009-10-09 11:02:22 +02:00
return function ( ) {
var scope = $ ( 'select[name="action"]' ) ;
$ ( 'option[value=' + value + ']' , scope ) . attr ( 'selected' , 'selected' ) ;
$ ( '#comments-form' ) . submit ( ) ;
2009-01-02 16:08:58 +01:00
}
} ;
2009-10-09 11:02:22 +02:00
$ . table _hotkeys (
$ ( 'table.widefat' ) ,
2009-10-10 01:28:06 +02:00
[ 'a' , 'u' , 's' , 'd' , 'r' , 'q' , 'z' , [ 'e' , edit _comment ] , [ 'shift+x' , toggle _all ] ,
2009-10-09 11:02:22 +02:00
[ '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' ) }
2009-01-02 16:08:58 +01:00
) ;
}
} ) ;
} ) ( jQuery ) ;