|
|
| (16 intermediate revisions by the same user not shown) |
| Line 1: |
Line 1: |
| /* | | //$("#wpTextbox1").val("*[[User:" + $("#wpTextbox1").val().match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/g).sort().join("]]\n*[[User:") + "]]"); |
| easyblock.js - Script to quickly block spambots
| |
| By Legoktm, with assistance from Ori.livneh and MZMcBride
| |
|
| |
| Adds two tabs, "OP: Spambot block" and "Spambot block".
| |
| OP will block for 6 months, and regular will do 3.
| |
| If the user is an account, it will be indefinite.
| |
| The script will forward you to Special:Nuke once done.
| |
|
| |
| This script very likely may contain bugs, use at your
| |
| own risk.
| |
|
| |
| Released under the MIT License, see README.txt for details.
| |
|
| |
| */
| |
|
| |
| if ( mw.config.get('wgPageName').indexOf('Special:Contributions') >= 0 ) {
| |
| var opblock = mw.util.addPortletLink( 'p-cactions', '#',
| |
| 'OP: Spambot block', 'ca-easy-block', 'Open proxy spambot block - 6 months'
| |
| );
| |
| var spambot = mw.util.addPortletLink( 'p-cactions', '#',
| |
| 'Spambot block', 'ca-easy-block', 'Spambot block - 3 months'
| |
| );
| |
| }
| |
|
| |
| // Bind click handler
| |
| $( opblock ).click( function () {
| |
| block( true );
| |
| // doSomeStuff();
| |
| //alert( 'It works!' );
| |
| });
| |
| $( spambot ).click( function () {
| |
| block( false );
| |
| // doSomeStuff();
| |
| //alert( 'It works!' );
| |
| });
| |
|
| |
|
| |
|
| |
| function block( isproxy ) {
| |
| var api = new mw.Api();
| |
| // lets figure out the username
| |
|
| |
| var username = mw.util.getParamValue('target') || mw.config.get('wgTitle').substr(14);
| |
| //action=query&list=users&ususers=127.0.0.1
| |
| //action=query&prop=info&intoken=block&titles=User:Bob&format=jsonfm
| |
| api.get( {
| |
| action: 'query',
| |
| list: 'users',
| |
| ususers: username
| |
| }).done(
| |
| function( data ) {
| |
| var obj = data.query.users[0];
| |
| console.log(obj);
| |
| var exp;
| |
| if ( obj.invalid !== undefined ) {
| |
| exp = isproxy ? '6 months' : '3 months';
| |
| } else {
| |
| exp = 'indefinite';
| |
| }
| |
| api.get( {
| |
| action: 'query',
| |
| prop: 'info',
| |
| intoken: 'block',
| |
| titles: 'aksjdhfksdjhfskdfhsjdhfgsjhdfg', //apparently this works
| |
| format: 'json'
| |
| } ).done(
| |
| function( data ) {
| |
| var blocktoken = data.query.pages['-1'].blocktoken;
| |
| console.log(blocktoken);
| |
| api.post( {
| |
| action: 'block',
| |
| user: username,
| |
| expiry: exp,
| |
| reason: isproxy ? '{{blocked proxy}}: Spambot' : 'Spambot',
| |
| nocreate: '1',
| |
| anononly: '1',
| |
| token: blocktoken
| |
| }).done(
| |
| function( data ) {
| |
| window.location = '/wiki/Special:Nuke/' + username;
| |
| }
| |
| );
| |
| }
| |
| );
| |
|
| |
| }
| |
| );
| |
|
| |
| }
| |
|
| |
|
| /** | | /** |
| * Add custom buttons in the toolbar | | * Add a toolbox link to enable/disable my scripts |
| * | | * |
| * @source: http://www.mediawiki.org/wiki/Snippets/Custom_buttons_in_the_toolbar | | * @source: http://www.mediawiki.org/wiki/Snippets/Toggle_user_scripts |
| * @rev: 1 | | * @rev: 1 |
| */ | | */ |
| if ( $.isArray( window.mwCustomEditButtons ) ) {
| |
|
| |
|
| // Add button to insert a new wikitable
| | if (mw.config.get("wgAction") == "delete") { |
| mwCustomEditButtons[mwCustomEditButtons.length] = {
| | $("#wpReason").val("") |
| 'imageFile': 'http://upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png',
| | } |
| 'speedTip': 'Insert new wikitable',
| |
| 'tagOpen': '{| class="wikitable"\n|-\n',
| |
| 'tagClose': "\n|}",
| |
| 'sampleText': "! head 1\n! head 2\n! head 3\n|-\n| row 1, cell 1\n| row 1, cell 2\n| row 1, cell 3\n|-\n| row 2, cell 1\n| row 2, cell 2\n| row 2, cell 3"
| |
| };
| |
|
| |
|
| | /** |
| | * withJS |
| | * |
| | * Allow to load custom scripts from the MediaWiki namespace without |
| | * editing [[Special:Mypage/common.js]] |
| | * |
| | * Attribution: [[commons:User:Platonides]], [[commons:User:Lupo]] |
| | */ |
| | var extraJS = mw.util.getParamValue('withJS'); |
| | // Leave here for backwards compatibility |
| | (function (extraJS) { |
| | if (!extraJS) { |
| | return; |
| | } |
| | if (extraJS.match(/^MediaWiki:[^&<>=%#]*\.js$/)) { |
| | // Disallow some characters in file name |
| | importScript(extraJS); |
| | } else { |
| | // Dont use alert but the jsMsg system. Run jsMsg only once the DOM is ready. |
| | $(function () { |
| | jsMsgAppend(extraJS + ' javascript not allowed to be loaded.', 'error'); |
| | }); |
| | } |
| | })(extraJS); |
| | |
| | |
| | /** |
| | * withCSS |
| | * |
| | * Allow to load custom styles from the MediaWiki namespace without |
| | * editing [[Special:Mypage/common.css]] |
| | * |
| | * Attribution: [[commons:User:Krinkle]] |
| | */ |
| | var extraCSS = mw.util.getParamValue('withCSS'); |
| | if ( extraCSS ) { |
| | // Disallow some characters in file name |
| | if (extraCSS.match(/^MediaWiki:[^&<>=%#]*\.css$/)) { |
| | importStylesheet(extraCSS); |
| | // Dont use alert but the jsMsg system. Run jsMsg only once the DOM is ready. |
| | } else { |
| | $(function() { |
| | jsMsgAppend(extraCSS + ' stylesheet not allowed to be loaded.', 'error'); |
| | }); |
| | } |
| } | | } |