diff --git a/includes/SpamBlacklistHooks.php b/includes/SpamBlacklistHooks.php index f74de1a2..ddcfb608 100644 --- a/includes/SpamBlacklistHooks.php +++ b/includes/SpamBlacklistHooks.php @@ -42,10 +42,14 @@ class SpamBlacklistHooks { $matches = $spamObj->filter( $links, $title ); if ( $matches !== false ) { - $status->fatal( 'spam-blacklisted-link', $context->getLanguage()->listToText( $matches ) ); - $status->apiHookResult = [ - 'spamblacklist' => implode( '|', $matches ), - ]; + $error = new ApiMessage( + wfMessage( 'spam-blacklisted-link', Message::listParam( $matches ) ), + 'spamblacklist', + [ + 'spamblacklist' => [ 'matches' => $matches ], + ] + ); + $status->fatal( $error ); } // Always return true, EditPage will look at $status->isOk(). @@ -222,10 +226,6 @@ class SpamBlacklistHooks { 'spamblacklist', [ 'spamblacklist' => [ 'matches' => $matches ], - 'message' => [ - 'key' => 'spamprotectionmatch', - 'params' => $matches[0], - ], ] ); } diff --git a/modules/ve-spamblacklist/ve.init.mw.SpamBlacklistSaveErrorHandler.js b/modules/ve-spamblacklist/ve.init.mw.SpamBlacklistSaveErrorHandler.js index 135030ac..2155b044 100644 --- a/modules/ve-spamblacklist/ve.init.mw.SpamBlacklistSaveErrorHandler.js +++ b/modules/ve-spamblacklist/ve.init.mw.SpamBlacklistSaveErrorHandler.js @@ -7,13 +7,15 @@ mw.libs.ve.targetLoader.addPlugin( function () { ve.init.mw.SpamBlacklistSaveErrorHandler.static.name = 'spamBlacklist'; ve.init.mw.SpamBlacklistSaveErrorHandler.static.matchFunction = function ( data ) { - return !!ve.getProp( data, 'visualeditoredit', 'edit', 'spamblacklist' ); + return data.errors && data.errors.some( function ( err ) { + return err.code === 'spamblacklist'; + } ); }; ve.init.mw.SpamBlacklistSaveErrorHandler.static.process = function ( data, target ) { // Handle spam blacklist error from Extension:SpamBlacklist target.showSaveError( - $( $.parseHTML( ve.getProp( data, 'visualeditoredit', 'edit', 'sberrorparsed' ) ) ), + target.extractErrorMessages( data ), false // prevents reapply ); // Emit event for tracking. TODO: This is a bad design