summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.tools.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.tools.js')
-rw-r--r--www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.tools.js109
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 ) );