diff options
Diffstat (limited to 'www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.tools.js')
-rw-r--r-- | www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.tools.js | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.tools.js b/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.tools.js new file mode 100644 index 00000000..aa212771 --- /dev/null +++ b/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.tools.js @@ -0,0 +1,109 @@ +/** + * JavaScript for AbuseFilter tools + * + * @author John Du Hart + * @author Marius Hoch <hoo@online.de> + */ + +( function ( mw, $ ) { + 'use strict'; + + /** + * Submits the expression to be evaluated. + * @context HTMLElement + * @param {jQuery.Event} e + */ + function doExprSubmit() { + var expr = $( '#wpTestExpr' ).val(), + api = new mw.Api(); + $( this ).injectSpinner( 'abusefilter-expr' ); + + api.post( { + action: 'abusefilterevalexpression', + expression: expr + } ) + .fail( function ( error, details ) { + var msg = error === 'http' ? 'abusefilter-http-error' : 'unknown-error'; + $.removeSpinner( 'abusefilter-expr' ); + $( '#mw-abusefilter-expr-result' ) + .text( mw.msg( msg, details.exception ) ); + } ) + .done( function ( data ) { + $.removeSpinner( 'abusefilter-expr' ); + + $( '#mw-abusefilter-expr-result' ) + .text( data.abusefilterevalexpression.result ); + } ); + } + + /** + * Processes the result of the unblocking autopromotions for a user + * + * @param {Object} data + */ + function processReautoconfirm( data ) { + mw.notify( + mw.message( 'abusefilter-reautoconfirm-done', data.abusefilterunblockautopromote.user ).toString() + ); + + $.removeSpinner( 'abusefilter-reautoconfirm' ); + } + + /** + * Processes the result of the unblocking autopromotions for a user in case of an error + * + * @param {string} errorCode + * @param {Object} data + */ + function processReautoconfirmFailure( errorCode, data ) { + var msg; + + switch ( errorCode ) { + case 'permissiondenied': + msg = mw.msg( 'abusefilter-reautoconfirm-notallowed' ); + break; + case 'http': + msg = mw.msg( 'abusefilter-http-error', data && data.exception ); + break; + case 'notsuspended': + msg = data.error.info; + break; + default: + msg = mw.msg( 'unknown-error' ); + break; + } + mw.notify( msg ); + + $.removeSpinner( 'abusefilter-reautoconfirm' ); + } + + /** + * Submits a call to reautoconfirm a user. + * @context HTMLElement + * @param {jQuery.Event} e + */ + function doReautoSubmit() { + var name = $( '#reautoconfirm-user' ).val(), + api; + + if ( name === '' ) { + return; + } + + $( this ).injectSpinner( 'abusefilter-reautoconfirm' ); + + api = new mw.Api(); + api.post( { + action: 'abusefilterunblockautopromote', + user: name, + token: mw.user.tokens.get( 'editToken' ) + } ) + .done( processReautoconfirm ) + .fail( processReautoconfirmFailure ); + } + + $( document ).ready( function () { + $( '#mw-abusefilter-submitexpr' ).click( doExprSubmit ); + $( '#mw-abusefilter-reautoconfirmsubmit' ).click( doReautoSubmit ); + } ); +}( mediaWiki, jQuery ) ); |