|
jQuery( function ( $ ) { |
|
var mshotRemovalTimer = null; |
|
var mshotRetryTimer = null; |
|
var mshotTries = 0; |
|
var mshotRetryInterval = 1000; |
|
var mshotEnabledLinkSelector = 'a[id^="author_comment_url"], tr.pingback td.column-author a:first-of-type, td.comment p a'; |
|
|
|
var preloadedMshotURLs = []; |
|
|
|
$('.akismet-status').each(function () { |
|
var thisId = $(this).attr('commentid'); |
|
$(this).prependTo('#comment-' + thisId + ' .column-comment'); |
|
}); |
|
$('.akismet-user-comment-count').each(function () { |
|
var thisId = $(this).attr('commentid'); |
|
$(this).insertAfter('#comment-' + thisId + ' .author strong:first').show(); |
|
}); |
|
|
|
akismet_enable_comment_author_url_removal(); |
|
|
|
$( '#the-comment-list' ).on( 'click', '.akismet_remove_url', function () { |
|
var thisId = $(this).attr('commentid'); |
|
var data = { |
|
action: 'comment_author_deurl', |
|
_wpnonce: WPAkismet.comment_author_url_nonce, |
|
id: thisId |
|
}; |
|
$.ajax({ |
|
url: ajaxurl, |
|
type: 'POST', |
|
data: data, |
|
beforeSend: function () { |
|
|
|
$("a[commentid='"+ thisId +"']").hide(); |
|
|
|
$("#author_comment_url_"+ thisId).html( $( '<span/>' ).text( WPAkismet.strings['Removing...'] ) ); |
|
}, |
|
success: function (response) { |
|
if (response) { |
|
|
|
$("#author_comment_url_"+ thisId) |
|
.attr('cid', thisId) |
|
.addClass('akismet_undo_link_removal') |
|
.html( |
|
$( '<span/>' ).text( WPAkismet.strings['URL removed'] ) |
|
) |
|
.append( ' ' ) |
|
.append( |
|
$( '<span/>' ) |
|
.text( WPAkismet.strings['(undo)'] ) |
|
.addClass( 'akismet-span-link' ) |
|
); |
|
} |
|
} |
|
}); |
|
|
|
return false; |
|
}).on( 'click', '.akismet_undo_link_removal', function () { |
|
var thisId = $(this).attr('cid'); |
|
var thisUrl = $(this).attr('href'); |
|
var data = { |
|
action: 'comment_author_reurl', |
|
_wpnonce: WPAkismet.comment_author_url_nonce, |
|
id: thisId, |
|
url: thisUrl |
|
}; |
|
$.ajax({ |
|
url: ajaxurl, |
|
type: 'POST', |
|
data: data, |
|
beforeSend: function () { |
|
|
|
$("#author_comment_url_"+ thisId).html( $( '<span/>' ).text( WPAkismet.strings['Re-adding...'] ) ); |
|
}, |
|
success: function (response) { |
|
if (response) { |
|
|
|
$("a[commentid='"+ thisId +"']").show(); |
|
|
|
$("#author_comment_url_"+ thisId).removeClass('akismet_undo_link_removal').text( thisUrl.replace( /^http:\/\/(www\.)?/ig, '' ) ); |
|
} |
|
} |
|
}); |
|
|
|
return false; |
|
}); |
|
|
|
|
|
if ( "enable_mshots" in WPAkismet && WPAkismet.enable_mshots ) { |
|
$( '#the-comment-list' ).on( 'mouseover', mshotEnabledLinkSelector, function () { |
|
clearTimeout( mshotRemovalTimer ); |
|
|
|
if ( $( '.akismet-mshot' ).length > 0 ) { |
|
if ( $( '.akismet-mshot:first' ).data( 'link' ) == this ) { |
|
|
|
return; |
|
} |
|
else { |
|
|
|
$( '.akismet-mshot' ).remove(); |
|
} |
|
} |
|
|
|
clearTimeout( mshotRetryTimer ); |
|
|
|
var linkUrl = $( this ).attr( 'href' ); |
|
|
|
if ( preloadedMshotURLs.indexOf( linkUrl ) !== -1 ) { |
|
|
|
mshotTries = 2; |
|
} |
|
else { |
|
mshotTries = 1; |
|
} |
|
|
|
var mShot = $( '<div class="akismet-mshot mshot-container"><div class="mshot-arrow"></div><img src="' + akismet_mshot_url( linkUrl, mshotTries ) + '" width="450" height="338" class="mshot-image" /></div>' ); |
|
mShot.data( 'link', this ); |
|
mShot.data( 'url', linkUrl ); |
|
|
|
mShot.find( 'img' ).on( 'load', function () { |
|
$( '.akismet-mshot' ).data( 'pending-request', false ); |
|
} ); |
|
|
|
var offset = $( this ).offset(); |
|
|
|
mShot.offset( { |
|
left : Math.min( $( window ).width() - 475, offset.left + $( this ).width() + 10 ), |
|
top: offset.top + ( $( this ).height() / 2 ) - 101 |
|
} ); |
|
|
|
$( 'body' ).append( mShot ); |
|
|
|
mshotRetryTimer = setTimeout( retryMshotUntilLoaded, mshotRetryInterval ); |
|
} ).on( 'mouseout', 'a[id^="author_comment_url"], tr.pingback td.column-author a:first-of-type, td.comment p a', function () { |
|
mshotRemovalTimer = setTimeout( function () { |
|
clearTimeout( mshotRetryTimer ); |
|
|
|
$( '.akismet-mshot' ).remove(); |
|
}, 200 ); |
|
} ); |
|
|
|
var preloadDelayTimer = null; |
|
|
|
$( window ).on( 'scroll resize', function () { |
|
clearTimeout( preloadDelayTimer ); |
|
|
|
preloadDelayTimer = setTimeout( preloadMshotsInViewport, 500 ); |
|
} ); |
|
|
|
preloadMshotsInViewport(); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function retryMshotUntilLoaded() { |
|
clearTimeout( mshotRetryTimer ); |
|
|
|
var imageWidth = $( '.akismet-mshot img' ).get(0).naturalWidth; |
|
|
|
if ( imageWidth == 0 ) { |
|
|
|
setTimeout( retryMshotUntilLoaded, mshotRetryInterval ); |
|
} |
|
else if ( imageWidth == 400 ) { |
|
|
|
|
|
if ( mshotTries == 20 ) { |
|
|
|
return; |
|
} |
|
|
|
if ( ! $( '.akismet-mshot' ).data( 'pending-request' ) ) { |
|
$( '.akismet-mshot' ).data( 'pending-request', true ); |
|
|
|
mshotTries++; |
|
|
|
$( '.akismet-mshot .mshot-image' ).attr( 'src', akismet_mshot_url( $( '.akismet-mshot' ).data( 'url' ), mshotTries ) ); |
|
} |
|
|
|
mshotRetryTimer = setTimeout( retryMshotUntilLoaded, mshotRetryInterval ); |
|
} |
|
else { |
|
|
|
} |
|
} |
|
|
|
function preloadMshotsInViewport() { |
|
var windowWidth = $( window ).width(); |
|
var windowHeight = $( window ).height(); |
|
|
|
$( '#the-comment-list' ).find( mshotEnabledLinkSelector ).each( function ( index, element ) { |
|
var linkUrl = $( this ).attr( 'href' ); |
|
|
|
|
|
if ( preloadedMshotURLs.indexOf( linkUrl ) !== -1 ) { |
|
|
|
return true; |
|
} |
|
|
|
if ( typeof element.getBoundingClientRect !== 'function' ) { |
|
|
|
return false; |
|
} |
|
|
|
var rect = element.getBoundingClientRect(); |
|
|
|
if ( rect.top >= 0 && rect.left >= 0 && rect.bottom <= windowHeight && rect.right <= windowWidth ) { |
|
akismet_preload_mshot( linkUrl ); |
|
$( this ).data( 'akismet-mshot-preloaded', true ); |
|
} |
|
} ); |
|
} |
|
|
|
$( '.checkforspam.enable-on-load' ).on( 'click', function( e ) { |
|
if ( $( this ).hasClass( 'ajax-disabled' ) ) { |
|
|
|
return; |
|
} |
|
|
|
e.preventDefault(); |
|
|
|
if ( $( this ).hasClass( 'button-disabled' ) ) { |
|
window.location.href = $( this ).data( 'success-url' ).replace( '__recheck_count__', 0 ).replace( '__spam_count__', 0 ); |
|
return; |
|
} |
|
|
|
$('.checkforspam').addClass('button-disabled').addClass( 'checking' ); |
|
$('.checkforspam-spinner').addClass( 'spinner' ).addClass( 'is-active' ); |
|
|
|
akismet_check_for_spam(0, 100); |
|
}).removeClass( 'button-disabled' ); |
|
|
|
var spam_count = 0; |
|
var recheck_count = 0; |
|
|
|
function akismet_check_for_spam(offset, limit) { |
|
var check_for_spam_buttons = $( '.checkforspam' ); |
|
|
|
var nonce = check_for_spam_buttons.data( 'nonce' ); |
|
|
|
|
|
|
|
var percentage_complete = Math.round( ( recheck_count / check_for_spam_buttons.data( 'pending-comment-count' ) ) * 1000 ) / 10; |
|
|
|
|
|
$( '.checkforspam' ).text( check_for_spam_buttons.data( 'progress-label' ).replace( '%1$s', percentage_complete ) ); |
|
|
|
$.post( |
|
ajaxurl, |
|
{ |
|
'action': 'akismet_recheck_queue', |
|
'offset': offset, |
|
'limit': limit, |
|
'nonce': nonce |
|
}, |
|
function(result) { |
|
if ( 'error' in result ) { |
|
|
|
window.location.href = check_for_spam_buttons.data( 'failure-url' ); |
|
return; |
|
} |
|
|
|
recheck_count += result.counts.processed; |
|
spam_count += result.counts.spam; |
|
|
|
if (result.counts.processed < limit) { |
|
window.location.href = check_for_spam_buttons.data( 'success-url' ).replace( '__recheck_count__', recheck_count ).replace( '__spam_count__', spam_count ); |
|
} |
|
else { |
|
|
|
akismet_check_for_spam(offset + limit - result.counts.spam, limit); |
|
} |
|
} |
|
); |
|
} |
|
|
|
if ( "start_recheck" in WPAkismet && WPAkismet.start_recheck ) { |
|
$( '.checkforspam' ).click(); |
|
} |
|
|
|
if ( typeof MutationObserver !== 'undefined' ) { |
|
|
|
var comment_list_container = document.getElementById( 'the-comment-list' ); |
|
|
|
if ( comment_list_container ) { |
|
var observer = new MutationObserver( function ( mutations ) { |
|
for ( var i = 0, _len = mutations.length; i < _len; i++ ) { |
|
if ( mutations[i].addedNodes.length > 0 ) { |
|
akismet_enable_comment_author_url_removal(); |
|
|
|
|
|
break; |
|
} |
|
} |
|
} ); |
|
|
|
observer.observe( comment_list_container, { attributes: true, childList: true, characterData: true } ); |
|
} |
|
} |
|
|
|
function akismet_enable_comment_author_url_removal() { |
|
$( '#the-comment-list' ) |
|
.find( 'tr.comment, tr[id ^= "comment-"]' ) |
|
.find( '.column-author a[href^="http"]:first' ) |
|
.each(function () { |
|
if ( $( this ).parent().find( '.akismet_remove_url' ).length > 0 ) { |
|
return; |
|
} |
|
|
|
var linkHref = $(this).attr( 'href' ); |
|
|
|
|
|
|
|
var currentHostParts = document.location.href.split( '/' ); |
|
var currentHost = currentHostParts[0] + '//' + currentHostParts[2] + '/'; |
|
|
|
if ( linkHref.indexOf( currentHost ) != 0 ) { |
|
var thisCommentId = $(this).parents('tr:first').attr('id').split("-"); |
|
|
|
$(this) |
|
.attr("id", "author_comment_url_"+ thisCommentId[1]) |
|
.after( |
|
$( '<a href="#" class="akismet_remove_url">x</a>' ) |
|
.attr( 'commentid', thisCommentId[1] ) |
|
.attr( 'title', WPAkismet.strings['Remove this URL'] ) |
|
); |
|
} |
|
}); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function akismet_mshot_url( linkUrl, retry ) { |
|
var mshotUrl = '//s0.wp.com/mshots/v1/' + encodeURIComponent( linkUrl ) + '?w=900'; |
|
|
|
if ( retry > 1 ) { |
|
mshotUrl += '&r=' + encodeURIComponent( retry ); |
|
} |
|
|
|
mshotUrl += '&source=akismet'; |
|
|
|
return mshotUrl; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
function akismet_preload_mshot( linkUrl ) { |
|
var img = new Image(); |
|
img.src = akismet_mshot_url( linkUrl ); |
|
|
|
preloadedMshotURLs.push( linkUrl ); |
|
} |
|
|
|
$( '.akismet-could-be-primary' ).each( function () { |
|
var form = $( this ).closest( 'form' ); |
|
|
|
form.data( 'initial-state', form.serialize() ); |
|
|
|
form.on( 'change keyup', function () { |
|
var self = $( this ); |
|
var submit_button = self.find( '.akismet-could-be-primary' ); |
|
|
|
if ( self.serialize() != self.data( 'initial-state' ) ) { |
|
submit_button.addClass( 'akismet-is-primary' ); |
|
} |
|
else { |
|
submit_button.removeClass( 'akismet-is-primary' ); |
|
} |
|
} ); |
|
} ); |
|
|
|
|
|
|
|
|
|
$( '.akismet-enter-api-key-box__reveal' ).on( 'click', function ( e ) { |
|
e.preventDefault(); |
|
|
|
var div = $( '.akismet-enter-api-key-box__form-wrapper' ); |
|
div.show( 500 ); |
|
div.find( 'input[name=key]' ).focus(); |
|
|
|
$( this ).hide(); |
|
} ); |
|
|
|
|
|
|
|
|
|
$( 'a.toggle-ak-connect' ).on( 'click', function ( e ) { |
|
e.preventDefault(); |
|
|
|
$( '.akismet-ak-connect' ).slideToggle('slow'); |
|
$( 'a.toggle-ak-connect' ).hide(); |
|
$( '.akismet-jp-connect' ).hide(); |
|
$( 'a.toggle-jp-connect' ).show(); |
|
} ); |
|
|
|
|
|
|
|
|
|
$( 'a.toggle-jp-connect' ).on( 'click', function ( e ) { |
|
e.preventDefault(); |
|
|
|
$( '.akismet-jp-connect' ).slideToggle('slow'); |
|
$( 'a.toggle-jp-connect' ).hide(); |
|
$( '.akismet-ak-connect' ).hide(); |
|
$( 'a.toggle-ak-connect' ).show(); |
|
} ); |
|
}); |
|
|