summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/akismet/_inc')
-rw-r--r--plugins/akismet/_inc/akismet.css625
-rw-r--r--plugins/akismet/_inc/akismet.js308
-rw-r--r--plugins/akismet/_inc/form.js30
-rw-r--r--plugins/akismet/_inc/img/logo-full-2x.pngbin0 -> 5052 bytes
4 files changed, 963 insertions, 0 deletions
diff --git a/plugins/akismet/_inc/akismet.css b/plugins/akismet/_inc/akismet.css
new file mode 100644
index 00000000..bc56f061
--- /dev/null
+++ b/plugins/akismet/_inc/akismet.css
@@ -0,0 +1,625 @@
+.wp-admin.jetpack_page_akismet-key-config, .wp-admin.settings_page_akismet-key-config {
+ background-color:#f3f6f8;
+}
+
+#submitted-on {
+ position: relative;
+}
+#the-comment-list .author .akismet-user-comment-count {
+ display: inline;
+}
+#the-comment-list .author a span {
+ text-decoration: none;
+ color: #999;
+}
+#the-comment-list .author a span.akismet-span-link {
+ text-decoration: inherit;
+ color: inherit;
+}
+#the-comment-list .akismet_remove_url {
+ margin-left: 3px;
+ color: #999;
+ padding: 2px 3px 2px 0;
+}
+#the-comment-list .akismet_remove_url:hover {
+ color: #A7301F;
+ font-weight: bold;
+ padding: 2px 2px 2px 0;
+}
+#dashboard_recent_comments .akismet-status {
+ display: none;
+}
+.akismet-status {
+ float: right;
+}
+.akismet-status a {
+ color: #AAA;
+ font-style: italic;
+}
+table.comments td.comment p a {
+ text-decoration: underline;
+}
+table.comments td.comment p a:after {
+ content: attr(href);
+ color: #aaa;
+ display: inline-block; /* Show the URL without the link's underline extending under it. */
+ padding: 0 1ex; /* Because it's inline block, we can't just use spaces in the content: attribute to separate it from the link text. */
+}
+.mshot-arrow {
+ width: 0;
+ height: 0;
+ border-top: 10px solid transparent;
+ border-bottom: 10px solid transparent;
+ border-right: 10px solid #5C5C5C;
+ position: absolute;
+ left: -6px;
+ top: 91px;
+}
+.mshot-container {
+ background: #5C5C5C;
+ position: absolute;
+ top: -94px;
+ padding: 7px;
+ width: 450px;
+ height: 338px;
+ z-index: 20000;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-border-radius: 6px;
+}
+.akismet-mshot {
+ position: absolute;
+ z-index: 100;
+}
+.akismet-mshot .mshot-image {
+ margin: 0;
+ height: 338px;
+ width: 450px;
+}
+.checkforspam {
+ display: inline-block !important;
+}
+.checkforspam-progress {
+ display: none;
+}
+.checkforspam.checking .checkforspam-progress {
+ padding-left: 1ex;
+}
+.checkforspam.button-disabled .checkforspam-progress {
+ display: inline;
+}
+
+.checkforspam-spinner {
+ display: inline-block;
+ margin-top: 7px;
+}
+
+.akismet-right {
+ float: right;
+}
+
+.akismet-card .akismet-right {
+ margin: 1em 0;
+}
+
+.akismet-alert-text {
+ color: #dd3d36;
+ font-weight: bold;
+ font-size: 120%;
+ margin-top: .5rem;
+}
+.akismet-alert {
+ border: 1px solid #e5e5e5;
+ padding: 0.4em 1em 1.4em 1em;
+ border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-width: 1px;
+ border-style: solid;
+}
+
+.akismet-alert h3.akismet-key-status {
+ color: #fff;
+ margin: 1em 0 0.5em 0;
+}
+
+.akismet-alert.akismet-critical {
+ background-color: #993300;
+}
+
+.akismet-alert.akismet-active {
+ background-color: #649316;
+}
+
+.akismet-alert p.akismet-key-status {
+ font-size: 24px;
+}
+
+.akismet-alert p.akismet-description {
+ color:#fff;
+ font-size: 14px;
+ margin: 0 0;
+ font-style: normal;
+}
+
+.akismet-alert p.akismet-description a,
+.akismet-alert p.akismet-description a,
+.akismet-alert p.akismet-description a,
+.akismet-alert p.akismet-description a {
+ color: #fff;
+}
+
+.akismet-new-snapshot {
+ margin-top: 1em;
+ padding: 1em;
+ text-align: center;
+ background: #fff;
+}
+
+.akismet-new-snapshot h3 {
+ background: #f5f5f5;
+ color: #888;
+ font-size: 11px;
+ margin: 0;
+ padding: 3px;
+}
+
+.new-snapspot ul {
+ font-size: 12px;
+ width: 100%;
+}
+
+.akismet-new-snapshot ul li {
+ color: #999;
+ float: left;
+ font-size: 11px;
+ padding: 0 20px;
+ text-transform: uppercase;
+ width: 33%;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+}
+
+.akismet-new-snapshot ul li:first-child,
+.akismet-new-snapshot ul li:nth-child(2) {
+ border-right:1px dotted #ccc;
+}
+
+.akismet-new-snapshot ul li span {
+ color: #52accc;
+ display: block;
+ font-size: 32px;
+ font-weight: lighter;
+ line-height: 1.5em;
+}
+
+.akismet-settings th:first-child {
+ vertical-align: top;
+ padding-top: 15px;
+}
+
+.akismet-settings th.akismet-api-key {
+ vertical-align: middle;
+ padding-top: 0;
+}
+
+.akismet-settings input[type=text] {
+ width: 75%;
+}
+
+.akismet-settings span.akismet-note{
+ float: left;
+ padding-left: 23px;
+ font-size: 75%;
+ margin-top: -10px;
+}
+
+/**
+ * For the activation notice on the plugins page.
+ */
+
+#akismet_setup_prompt {
+ background: none;
+ border: none;
+ margin: 0;
+ padding: 0;
+ width: 100%;
+}
+
+.akismet_activate {
+ border: 1px solid #4F800D;
+ padding: 5px;
+ margin: 15px 0;
+ background: #83AF24;
+ background-image: -webkit-gradient(linear, 0% 0, 80% 100%, from(#83AF24), to(#4F800D));
+ background-image: -moz-linear-gradient(80% 100% 120deg, #4F800D, #83AF24);
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ -webkit-border-radius: 3px;
+ position: relative;
+ overflow: hidden;
+}
+
+.akismet_activate .aa_a {
+ position: absolute;
+ top: -5px;
+ right: 10px;
+ font-size: 140px;
+ color: #769F33;
+ font-family: Georgia, "Times New Roman", Times, serif;
+}
+
+.akismet_activate .aa_button {
+ font-weight: bold;
+ border: 1px solid #029DD6;
+ border-top: 1px solid #06B9FD;
+ font-size: 15px;
+ text-align: center;
+ padding: 9px 0 8px 0;
+ color: #FFF;
+ background: #029DD6;
+ background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#029DD6), to(#0079B1));
+ background-image: -moz-linear-gradient(0% 100% 90deg, #0079B1, #029DD6);
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ width: 100%;
+ cursor: pointer;
+ margin: 0;
+}
+
+.akismet_activate .aa_button:hover {
+ text-decoration: none !important;
+ border: 1px solid #029DD6;
+ border-bottom: 1px solid #00A8EF;
+ font-size: 15px;
+ text-align: center;
+ padding: 9px 0 8px 0;
+ color: #F0F8FB;
+ background: #0079B1;
+ background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#0079B1), to(#0092BF));
+ background-image: -moz-linear-gradient(0% 100% 90deg, #0092BF, #0079B1);
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+}
+
+.akismet_activate .aa_button_border {
+ border: 1px solid #006699;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ background: #029DD6;
+ background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#029DD6), to(#0079B1));
+ background-image: -moz-linear-gradient(0% 100% 90deg, #0079B1, #029DD6);
+}
+
+.akismet_activate .aa_button_container {
+ box-sizing: border-box;
+ display: inline-block;
+ background: #DEF1B8;
+ padding: 5px;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ -webkit-border-radius: 2px;
+ width: 266px;
+}
+
+.akismet_activate .aa_description {
+ position: absolute;
+ top: 22px;
+ left: 285px;
+ margin-left: 25px;
+ color: #E5F2B1;
+ font-size: 15px;
+}
+
+.akismet_activate .aa_description strong {
+ color: #FFF;
+ font-weight: normal;
+}
+
+@media (max-width: 550px) {
+ .akismet_activate .aa_a {
+ display: none;
+ }
+
+ .akismet_activate .aa_button_container {
+ width: 100%;
+ }
+}
+
+@media (max-width: 782px) {
+ .akismet_activate {
+ min-width: 0;
+ }
+}
+
+@media (max-width: 850px) {
+ #akismet_setup_prompt .aa_description {
+ display: none;
+ }
+
+ .akismet_activate {
+ min-width: 0;
+ }
+}
+
+.jetpack_page_akismet-key-config #wpcontent, .settings_page_akismet-key-config #wpcontent {
+ padding-left: 0;
+}
+
+.akismet-masthead {
+ background-color:#fff;
+ text-align:center;
+ box-shadow:0 1px 0 rgba(200,215,225,0.5),0 1px 2px #e9eff3
+}
+@media (max-width: 45rem) {
+ .akismet-masthead {
+ padding:0 1.25rem
+ }
+}
+
+.akismet-masthead__inside-container {
+ padding:.375rem 0;
+ margin:0 auto;
+ width:100%;
+ max-width:45rem;
+ text-align: left;
+}
+.akismet-masthead__logo-container {
+ padding:.3125rem 0 0
+}
+.akismet-masthead__logo {
+ width:10.375rem;
+ height:1.8125rem;
+}
+.akismet-masthead__logo-link {
+ display:inline-block;
+ outline:none;
+ vertical-align:middle
+}
+.akismet-masthead__logo-link:focus {
+ line-height:0;
+ box-shadow:0 0 0 2px #78dcfa
+}
+.akismet-masthead__logo-link+code {
+ margin:0 10px;
+ padding:5px 9px;
+ border-radius:2px;
+ background:#e6ecf1;
+ color:#647a88
+}
+.akismet-masthead__links {
+ display:-ms-flexbox;
+ display:flex;
+ -ms-flex-flow:row wrap;
+ flex-flow:row wrap;
+ -ms-flex:2 50%;
+ flex:2 50%;
+ -ms-flex-pack:end;
+ justify-content:flex-end;
+ margin:0
+}
+@media (max-width: 480px) {
+ .akismet-masthead__links {
+ padding-right:.625rem
+ }
+}
+.akismet-masthead__link-li {
+ margin:0;
+ padding:0
+}
+.akismet-masthead__link {
+ font-style:normal;
+ color:#0087be;
+ padding:.625rem;
+ display:inline-block
+}
+.akismet-masthead__link:visited {
+ color:#0087be
+}
+.akismet-masthead__link:active,.akismet-masthead__link:hover {
+ color:#00aadc
+}
+.akismet-masthead__link:hover {
+ text-decoration:underline
+}
+.akismet-masthead__link .dashicons {
+ display:none
+}
+@media (max-width: 480px) {
+ .akismet-masthead__link:hover,.akismet-masthead__link:active {
+ text-decoration:none
+ }
+ .akismet-masthead__link .dashicons {
+ display:block;
+ font-size:1.75rem
+ }
+ .akismet-masthead__link span+span {
+ display:none
+ }
+}
+.akismet-masthead__link-li:last-of-type .akismet-masthead__link {
+ padding-right:0
+}
+
+.akismet-lower {
+ margin: 0 auto;
+ text-align: left;
+ max-width: 45rem;
+ padding: 1.5rem;
+}
+
+.akismet-lower .notice {
+ margin-bottom: 2rem;
+}
+
+.akismet-card {
+ margin-top: 1rem;
+ margin-bottom: 0;
+ position: relative;
+ margin: 0 auto 0.625rem auto;
+ box-sizing: border-box;
+ background: white;
+ box-shadow: 0 0 0 1px rgba(200, 215, 225, 0.5), 0 1px 2px #e9eff3;
+}
+
+.akismet-card:after, .akismet-card .inside:after, .akismet-masthead__logo-container:after {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+}
+
+.akismet-card .inside {
+ padding: 1.5rem;
+ padding-top: 1rem;
+}
+
+.akismet-card .akismet-card-actions {
+ margin-top: 1rem;
+}
+
+.jetpack_page_akismet-key-config .update-nag, .settings_page_akismet-key-config .update-nag {
+ display: none;
+}
+
+.akismet-masthead .akismet-right {
+ line-height: 2.125rem;
+ font-size: 0.9rem;
+}
+
+.akismet-box {
+ box-sizing: border-box;
+ background: white;
+ border: 1px solid rgba(200, 215, 225, 0.5);
+}
+
+.akismet-box h2, .akismet-box h3 {
+ padding: 1.5rem 1.5rem .5rem 1.5rem;
+ margin: 0;
+}
+
+.akismet-box p {
+ padding: 0 1.5rem 1.5rem 1.5rem;
+ margin: 0;
+}
+
+.akismet-jetpack-email {
+ font-style: oblique;
+}
+
+.akismet-jetpack-gravatar {
+ padding: 0 0 0 1.5rem;
+ float: left;
+ margin-right: 1rem;
+ width: 54px;
+ height: 54px;
+}
+
+.akismet-box p:after {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+}
+
+.akismet-box .akismet-right {
+ padding-right: 1.5rem;
+}
+
+.akismet-boxes .akismet-box {
+ margin-bottom: 0;
+ padding: 0;
+ margin-top: -1px;
+}
+
+.akismet-boxes .akismet-box:last-child {
+ margin-bottom: 1.5rem;
+}
+
+.akismet-boxes .akismet-box:first-child {
+ margin-top: 1.5rem;
+}
+
+.akismet-button, .akismet-button:hover, .akismet-button:visited {
+ background: white;
+ border-color: #c8d7e1;
+ border-style: solid;
+ border-width: 1px 1px 2px;
+ color: #2e4453;
+ cursor: pointer;
+ display: inline-block;
+ margin: 0;
+ outline: 0;
+ overflow: hidden;
+ font-size: 14px;
+ font-weight: 500;
+ text-overflow: ellipsis;
+ text-decoration: none;
+ vertical-align: top;
+ box-sizing: border-box;
+ font-size: 14px;
+ line-height: 21px;
+ border-radius: 4px;
+ padding: 7px 14px 9px;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+
+.akismet-button:hover {
+ border-color: #a8bece;
+}
+
+.akismet-button:active {
+ border-width: 2px 1px 1px;
+}
+
+.akismet-is-primary, .akismet-is-primary:hover, .akismet-is-primary:visited {
+ background: #00aadc;
+ border-color: #0087be;
+ color: white;
+}
+
+.akismet-is-primary:hover, .akismet-is-primary:focus {
+ border-color: #005082;
+}
+
+.akismet-is-primary:hover {
+ border-color: #005082;
+}
+
+.akismet-section-header {
+ position: relative;
+ margin: 0 auto 0.625rem auto;
+ padding: 1rem;
+ box-sizing: border-box;
+ box-shadow: 0 0 0 1px rgba(200, 215, 225, 0.5), 0 1px 2px #e9eff3;
+ background: #ffffff;
+ width: 100%;
+ padding-top: 0.6875rem;
+ padding-bottom: 0.6875rem;
+ display: flex;
+}
+
+.akismet-section-header__label {
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ line-height: 1.75rem;
+ position: relative;
+ font-size: 0.875rem;
+ color: #4f748e;
+}
+
+.akismet-section-header__actions {
+ line-height: 1.75rem;
+}
diff --git a/plugins/akismet/_inc/akismet.js b/plugins/akismet/_inc/akismet.js
new file mode 100644
index 00000000..6cb85e6c
--- /dev/null
+++ b/plugins/akismet/_inc/akismet.js
@@ -0,0 +1,308 @@
+jQuery( function ( $ ) {
+ var mshotRemovalTimer = null;
+ var mshotSecondTryTimer = null
+ var mshotThirdTryTimer = null
+
+ var mshotEnabledLinkSelector = 'a[id^="author_comment_url"], tr.pingback td.column-author a:first-of-type, td.comment p a';
+
+ $('.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 () {
+ // Removes "x" link
+ $("a[commentid='"+ thisId +"']").hide();
+ // Show temp status
+ $("#author_comment_url_"+ thisId).html( $( '<span/>' ).text( WPAkismet.strings['Removing...'] ) );
+ },
+ success: function (response) {
+ if (response) {
+ // Show status/undo link
+ $("#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 () {
+ // Show temp status
+ $("#author_comment_url_"+ thisId).html( $( '<span/>' ).text( WPAkismet.strings['Re-adding...'] ) );
+ },
+ success: function (response) {
+ if (response) {
+ // Add "x" link
+ $("a[commentid='"+ thisId +"']").show();
+ // Show link. Core strips leading http://, so let's do that too.
+ $("#author_comment_url_"+ thisId).removeClass('akismet_undo_link_removal').text( thisUrl.replace( /^http:\/\/(www\.)?/ig, '' ) );
+ }
+ }
+ });
+
+ return false;
+ });
+
+ // Show a preview image of the hovered URL. Applies to author URLs and URLs inside the comments.
+ $( '#the-comment-list' ).on( 'mouseover', mshotEnabledLinkSelector, function () {
+ clearTimeout( mshotRemovalTimer );
+
+ if ( $( '.akismet-mshot' ).length > 0 ) {
+ if ( $( '.akismet-mshot:first' ).data( 'link' ) == this ) {
+ // The preview is already showing for this link.
+ return;
+ }
+ else {
+ // A new link is being hovered, so remove the old preview.
+ $( '.akismet-mshot' ).remove();
+ }
+ }
+
+ clearTimeout( mshotSecondTryTimer );
+ clearTimeout( mshotThirdTryTimer );
+
+ var thisHref = $( this ).attr( 'href' );
+
+ var mShot = $( '<div class="akismet-mshot mshot-container"><div class="mshot-arrow"></div><img src="' + akismet_mshot_url( thisHref ) + '" width="450" height="338" class="mshot-image" /></div>' );
+ mShot.data( 'link', this );
+
+ var offset = $( this ).offset();
+
+ mShot.offset( {
+ left : Math.min( $( window ).width() - 475, offset.left + $( this ).width() + 10 ), // Keep it on the screen if the link is near the edge of the window.
+ top: offset.top + ( $( this ).height() / 2 ) - 101 // 101 = top offset of the arrow plus the top border thickness
+ } );
+
+ // These retries appear to be superfluous if .mshot-image has already loaded, but it's because mShots
+ // can return a "Generating thumbnail..." image if it doesn't have a thumbnail ready, so we need
+ // to retry to see if we can get the newly generated thumbnail.
+ mshotSecondTryTimer = setTimeout( function () {
+ mShot.find( '.mshot-image' ).attr( 'src', akismet_mshot_url( thisHref, 2 ) );
+ }, 6000 );
+
+ mshotThirdTryTimer = setTimeout( function () {
+ mShot.find( '.mshot-image' ).attr( 'src', akismet_mshot_url( thisHref, 3 ) );
+ }, 12000 );
+
+ $( 'body' ).append( mShot );
+ } ).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( mshotSecondTryTimer );
+ clearTimeout( mshotThirdTryTimer );
+
+ $( '.akismet-mshot' ).remove();
+ }, 200 );
+ } ).on( 'mouseover', 'tr', function () {
+ // When the mouse hovers over a comment row, begin preloading mshots for any links in the comment or the comment author.
+ var linksToPreloadMshotsFor = $( this ).find( mshotEnabledLinkSelector );
+
+ linksToPreloadMshotsFor.each( function () {
+ // Don't attempt to preload an mshot for a single link twice. Browser caching should cover this, but in case of
+ // race conditions, save a flag locally when we've begun trying to preload one.
+ if ( ! $( this ).data( 'akismet-mshot-preloaded' ) ) {
+ akismet_preload_mshot( $( this ).attr( 'href' ) );
+ $( this ).data( 'akismet-mshot-preloaded', true );
+ }
+ } );
+ } );
+
+ $( '.checkforspam' ).click( function( e ) {
+ 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' );
+
+ // Update the label on the "Check for Spam" button to use the active "Checking for Spam" language.
+ $( '.checkforspam .akismet-label' ).text( $( '.checkforspam' ).data( 'active-label' ) );
+
+ akismet_check_for_spam(0, 100);
+ });
+
+ var spam_count = 0;
+ var recheck_count = 0;
+
+ function akismet_check_for_spam(offset, limit) {
+ var check_for_spam_buttons = $( '.checkforspam' );
+
+ // We show the percentage complete down to one decimal point so even queues with 100k
+ // pending comments will show some progress pretty quickly.
+ var percentage_complete = Math.round( ( recheck_count / check_for_spam_buttons.data( 'pending-comment-count' ) ) * 1000 ) / 10;
+
+ // Update the progress counter on the "Check for Spam" button.
+ $( '.checkforspam-progress' ).text( check_for_spam_buttons.data( 'progress-label-format' ).replace( '%1$s', percentage_complete ) );
+
+ $.post(
+ ajaxurl,
+ {
+ 'action': 'akismet_recheck_queue',
+ 'offset': offset,
+ 'limit': limit
+ },
+ function(result) {
+ 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 {
+ // Account for comments that were caught as spam and moved out of the queue.
+ akismet_check_for_spam(offset + limit - result.counts.spam, limit);
+ }
+ }
+ );
+ }
+
+ if ( "start_recheck" in WPAkismet && WPAkismet.start_recheck ) {
+ $( '.checkforspam' ).click();
+ }
+
+ if ( typeof MutationObserver !== 'undefined' ) {
+ // Dynamically add the "X" next the the author URL links when a comment is quick-edited.
+ 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();
+
+ // Once we know that we'll have to check for new author links, skip the rest of the mutations.
+ 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' ) // Ignore mailto: links, which would be the comment author's email.
+ .each(function () {
+ if ( $( this ).parent().find( '.akismet_remove_url' ).length > 0 ) {
+ return;
+ }
+
+ var linkHref = $(this).attr( 'href' );
+
+ // Ignore any links to the current domain, which are diagnostic tools, like the IP address link
+ // or any other links another plugin might add.
+ 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'] )
+ );
+ }
+ });
+ }
+
+ /**
+ * Generate an mShot URL if given a link URL.
+ *
+ * @param string linkUrl
+ * @param int retry If retrying a request, the number of the retry.
+ * @return string The mShot URL;
+ */
+ function akismet_mshot_url( linkUrl, retry ) {
+ var mshotUrl = '//s0.wordpress.com/mshots/v1/' + encodeURIComponent( linkUrl ) + '?w=900';
+
+ if ( retry ) {
+ mshotUrl += '&r=' + encodeURIComponent( retry );
+ }
+
+ return mshotUrl;
+ }
+
+ /**
+ * Begin loading an mShot preview of a link.
+ *
+ * @param string linkUrl
+ */
+ function akismet_preload_mshot( linkUrl ) {
+ var img = new Image();
+ img.src = akismet_mshot_url( linkUrl );
+ }
+
+ /**
+ * Sets the comment form privacy notice display to hide when one clicks Core's dismiss button on the related admin notice.
+ */
+ $( '#akismet-privacy-notice-admin-notice' ).on( 'click', '.notice-dismiss', function(){
+ $.ajax({
+ url: './options-general.php?page=akismet-key-config&akismet_comment_form_privacy_notice=hide',
+ });
+ });
+
+ $( ".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" );
+ }
+ } );
+ } );
+});
diff --git a/plugins/akismet/_inc/form.js b/plugins/akismet/_inc/form.js
new file mode 100644
index 00000000..3a5be8af
--- /dev/null
+++ b/plugins/akismet/_inc/form.js
@@ -0,0 +1,30 @@
+var ak_js = document.getElementById( "ak_js" );
+
+if ( ! ak_js ) {
+ ak_js = document.createElement( 'input' );
+ ak_js.setAttribute( 'id', 'ak_js' );
+ ak_js.setAttribute( 'name', 'ak_js' );
+ ak_js.setAttribute( 'type', 'hidden' );
+}
+else {
+ ak_js.parentNode.removeChild( ak_js );
+}
+
+ak_js.setAttribute( 'value', ( new Date() ).getTime() );
+
+var commentForm = document.getElementById( 'commentform' );
+
+if ( commentForm ) {
+ commentForm.appendChild( ak_js );
+}
+else {
+ var replyRowContainer = document.getElementById( 'replyrow' );
+
+ if ( replyRowContainer ) {
+ var children = replyRowContainer.getElementsByTagName( 'td' );
+
+ if ( children.length > 0 ) {
+ children[0].appendChild( ak_js );
+ }
+ }
+} \ No newline at end of file
diff --git a/plugins/akismet/_inc/img/logo-full-2x.png b/plugins/akismet/_inc/img/logo-full-2x.png
new file mode 100644
index 00000000..79545854
--- /dev/null
+++ b/plugins/akismet/_inc/img/logo-full-2x.png
Binary files differ