mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/TitleBlacklist
synced 2024-11-27 15:30:48 +00:00
Add the mediawiki.api.titleblacklist module
Removed from mediawiki core in Ia5950853716. Bug: 38244 Change-Id: I5bf7064ac6a82ed15e0589f255de4ef6c7349c4e
This commit is contained in:
parent
358b42174a
commit
98aed02288
|
@ -77,4 +77,10 @@ $wgHooks['EditFilter'][] = 'TitleBlacklistHooks::validateBlacklist';
|
|||
$wgHooks['ArticleSaveComplete'][] = 'TitleBlacklistHooks::clearBlacklist';
|
||||
$wgHooks['UserCreateForm'][] = 'TitleBlacklistHooks::addOverrideCheckbox';
|
||||
|
||||
$wgResourceModules['mediawiki.api.titleblacklist'] = array(
|
||||
'scripts' => 'mediawiki.api.titleblacklist.js',
|
||||
'localBasePath' => $dir . '/modules',
|
||||
'remoteExtPath' => 'TitleBlacklist/modules',
|
||||
'dependencies' => array( 'mediawiki.api' ),
|
||||
);
|
||||
// @}
|
||||
|
|
67
modules/mediawiki.api.titleblacklist.js
Normal file
67
modules/mediawiki.api.titleblacklist.js
Normal file
|
@ -0,0 +1,67 @@
|
|||
/**
|
||||
* @class mw.Api.plugin.titleblacklist
|
||||
*/
|
||||
( function ( mw, $ ) {
|
||||
|
||||
$.extend( mw.Api.prototype, {
|
||||
/**
|
||||
* Convinience method for `action=titleblacklist`.
|
||||
*
|
||||
* @param {mw.Title|string} title
|
||||
* @param {Function} [ok] Success callback (deprecated)
|
||||
* @param {Function} [err] Error callback (deprecated)
|
||||
* @return {jQuery.Promise}
|
||||
* @return {Function} return.done
|
||||
* @return {Object|boolean} return.done.result False if title wasn't blacklisted, an object with 'reason', 'line'
|
||||
* and 'message' properties if title was blacklisted.
|
||||
*/
|
||||
isBlacklisted: function ( title, ok, err ) {
|
||||
var d = $.Deferred();
|
||||
// Backwards compatibility (< MW 1.20)
|
||||
d.done( ok );
|
||||
d.fail( err );
|
||||
|
||||
this.get( {
|
||||
action: 'titleblacklist',
|
||||
tbaction: 'create',
|
||||
tbtitle: title.toString()
|
||||
} )
|
||||
.done( 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
|
||||
};
|
||||
}
|
||||
d.resolve( result );
|
||||
} else {
|
||||
d.resolve( false );
|
||||
}
|
||||
} )
|
||||
.fail( d.reject );
|
||||
|
||||
return d.promise();
|
||||
}
|
||||
|
||||
} );
|
||||
|
||||
/**
|
||||
* @class mw.Api
|
||||
* @mixins mw.Api.plugin.titleblacklist
|
||||
*/
|
||||
|
||||
}( mediaWiki, jQuery ) );
|
Loading…
Reference in a new issue