Santhosh has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/258960

Change subject: Display abusefilter errors nicely
......................................................................

Display abusefilter errors nicely

Render the warning in the error information as HTML than dumping
all as json string.

Bug: T114621
Change-Id: Ib99c2f1f561f67e6de5174a588c65d5cd5e83ee3
---
M modules/header/ext.cx.header.js
M modules/publish/ext.cx.publish.js
2 files changed, 24 insertions(+), 9 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ContentTranslation 
refs/changes/60/258960/1

diff --git a/modules/header/ext.cx.header.js b/modules/header/ext.cx.header.js
index 6eba84f..0204e76 100644
--- a/modules/header/ext.cx.header.js
+++ b/modules/header/ext.cx.header.js
@@ -77,11 +77,13 @@
 
        /**
         * Show an error message in the info bar.
-        *
+        * TODO: This error handling and display deserve its own module. Header 
module is inappropriate.
+        * 
         * @param {mediawiki.Message|string} message Message objects are 
parsed, strings are plain text.
+        * @param {string} details The details of error in HTML.
         */
-       ContentTranslationHeader.prototype.showError = function ( message ) {
-               this.showMessage( 'cx-error', message );
+       ContentTranslationHeader.prototype.showError = function ( message, 
details ) {
+               this.showMessage( 'cx-error', message, details );
        };
 
        /**
@@ -91,14 +93,19 @@
         *
         * @param {string} type Message class.
         * @param {mediawiki.Message|string} message Message objects are 
parsed, strings are plain text.
+        * @param {string} details The details of error in HTML.
         */
-       ContentTranslationHeader.prototype.showMessage = function ( type, 
message ) {
+       ContentTranslationHeader.prototype.showMessage = function ( type, 
message, details ) {
                if ( message instanceof mw.Message ) {
                        this.$infoBar.find( '.text' ).html( message.parse() );
                } else {
                        this.$infoBar.find( '.text' ).text( message );
                }
-
+               if ( details ) {
+                       this.$infoBar.find( '.details' ).html( details );
+               } else {
+                       this.$infoBar.find( '.details' ).empty();
+               }
                this.$infoBar
                        .removeClass( 'cx-success cx-error' )
                        .addClass( type )
@@ -238,6 +245,7 @@
                        .addClass( 'cx-header__infobar' )
                        .append( $( '<span>' ).addClass( 'text' ) )
                        .append( $( '<span>' ).addClass( 'remove' ) )
+                       .append( $( '<div>' ).addClass( 'details' ) )
                        .hide();
 
                this.$container
diff --git a/modules/publish/ext.cx.publish.js 
b/modules/publish/ext.cx.publish.js
index 421da0d..086b151 100644
--- a/modules/publish/ext.cx.publish.js
+++ b/modules/publish/ext.cx.publish.js
@@ -300,7 +300,7 @@
         * @param {Object} details
         */
        CXPublish.prototype.onFail = function ( code, details ) {
-               var trace, error;
+               var trace, error, errorDetails;
 
                trace = {
                        sourceLanguage: mw.cx.sourceLanguage,
@@ -333,13 +333,20 @@
                                // "*":"See ...
                                error = details.error.info;
                        } else if ( details.edit ) {
-                               // 
{"result":"error","edit":{"spamblacklist":"facebook.com","result":"Failure"}}
-                               error = JSON.stringify( details.edit );
+                               // Handle abusefilter errors.
+                               if ( details.edit.code.indexOf( 'abusefilter' ) 
=== 0 ) {
+                                       error = details.edit.info;
+                                       errorDetails = details.edit.warning;
+                               } else {
+                                       // Other errors
+                                       // 
{"result":"error","edit":{"spamblacklist":"facebook.com","result":"Failure"}}
+                                       error = JSON.stringify( details.edit );
+                               }
                        } else if ( details.textStatus ) {
                                // 
{"xhr":{"readyState":0,"status":0,"statusText":"timeout"},"textStatus":"timeout",...
                                error = details.textStatus;
                        }
-                       mw.hook( 'mw.cx.error' ).fire( mw.msg( 
'cx-publish-page-error', error ) );
+                       mw.hook( 'mw.cx.error' ).fire( mw.msg( 
'cx-publish-page-error', error ), errorDetails );
                        mw.log( '[CX] Error while publishing:', code, trace );
                }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/258960
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib99c2f1f561f67e6de5174a588c65d5cd5e83ee3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ContentTranslation
Gerrit-Branch: master
Gerrit-Owner: Santhosh <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to