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
|
/**
* Additional mw.Api methods to assist with API calls to the API module of the TitleBlacklist extension.
*/
( function ( mw, $ ) {
$.extend( mw.Api.prototype, {
/**
* Convinience method for 'action=titleblacklist'.
* Note: This action is not provided by MediaWiki core, but as part of the TitleBlacklist extension.
*
* @param title {mw.Title}
* @param success {Function} Called on successfull request. First argument is false if title wasn't blacklisted,
* object with 'reason', 'line' and 'message' properties if title was blacklisted.
* @param err {Function} optional callback to run if api error
* @return {jqXHR}
*/
isBlacklisted: function ( title, success, err ) {
var params = {
action: 'titleblacklist',
tbaction: 'create',
tbtitle: title.toString()
},
ok = function ( data ) {
var result;
// this fails open (if nothing valid is returned by the api, allows the title)
// also fails open when the API is not present, which will be most of the time
// as this API module is part of the TitleBlacklist extension.
if ( data.titleblacklist && data.titleblacklist.result && data.titleblacklist.result === 'blacklisted') {
if ( data.titleblacklist.reason ) {
result = {
reason: data.titleblacklist.reason,
line: data.titleblacklist.line,
message: data.titleblacklist.message
};
} else {
mw.log('mw.Api.titleblacklist::isBlacklisted> no reason data for blacklisted title', 'debug');
result = { reason: 'Blacklisted, but no reason supplied', line: 'Unknown', message: null };
}
success( result );
} else {
success ( false );
}
};
return this.get( params, { ok: ok, err: err } );
}
} );
}( mediaWiki, jQuery ) );
|