summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/AbuseFilter/modules/ext.abuseFilter.tools.js
blob: aa212771cb4425e6b82cbb53b635feabb2869ee7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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 ) );