Участница:Megitsune-chan/block.js

/*
* Command tool for the administrative blocker bot. Based on [[u:Q-bit array/block.js]]
*/
mw.loader.using( [ 'mediawiki.util' ], function() {
	// Name of the pages for block and protection requests
	//var blockListName = 'Участница:Megitsune-chan/blocktest';
	var blockListName = 'Участник:EyeBot/Запросы на блокировку';
	//var protectListName = 'Участница:Megitsune-chan/blocktest';
	var protectListName = 'Участник:EyeBot/Запросы на полузащиту';

	// Check if the user of the script has admin rights
	var blockerUserGroups = mw.config.get( 'wgUserGroups' );
	var blockerName = mw.config.get( 'wgUserName' );
	// or is in the white list for advanced rights
	var blockerWhiteList = ['Sigwald', 'Mykola7'];
	// Admins and white-listed users can issue additional commands to the bot
	// IMPORTANT: All user authorization and rights management is done by the bot,
	// which will still ignore commands from any non-authorized user regardless of this script
	var usedByAdmin = ((blockerUserGroups.indexOf('sysop') > -1) || (blockerWhiteList.indexOf(blockerName) > -1));

	// Add the user to be blocked / page to be protected to the bot's todo-list
	// Possible security issues are not of concern, as the bot will ONLY accept the commands from the authorized users
	function addEntryToList( listName, affectedEntity, actionType ) {
		// Concatenate the type of block and the user name
		var requestString = actionType + '####' + affectedEntity;
		// Generate random dummy text to be written to the page. It is necessary, as the MediaWiki API doesn't allow "null-edits"
		// The text doesn't matter to the bot, as it uses the data stored in the edit descriptions (as it is much harder to falsify and easier to process for the bot)
		var dummyTextToAdd = (Math.random() + '' + Math.random()).replace(/\./g, '');
		// Add the block request
		$.post(mw.config.get('wgScriptPath') + '/api.php', {
			action: 'edit',
			format: 'json',
			token: mw.user.tokens.get('csrfToken'),
			title: listName,
			summary: requestString,
			text: dummyTextToAdd,
			watchlist: 'nochange'
		});
		// Notify the user of the script
		mw.notify('Запрос отправлен: ' + affectedEntity);
	}

	// Display dialog with different block types to be chosen from
	function chooseDialog( text, options ) {
	    var manager = OO.ui.getWindowManager(),
	        radioSelectInput = new OO.ui.RadioSelectInputWidget( {
	            text: text,
	            options: options
	        } );
	    return manager.openWindow( 'message', $.extend( {
	        message: radioSelectInput.$element,
	        size: 'large'
	    }, options ) ).closed.then( function ( data ) {
	        return data && data.action === 'accept' ? radioSelectInput.getValue() : null; 
	    } );
	}
	
	// Get the canonical namespace name
	var wgNamespaceNumber = mw.config.get( 'wgNamespaceNumber' );
	if ( wgNamespaceNumber === 2 || wgNamespaceNumber === 3
		|| ( wgNamespaceNumber === -1 && mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Contributions' )
	) {
		var userName = mw.config.get( 'wgRelevantUserName' );
		// Different block list for IPs and accounts
		var isIP = mw.util.isIPAddress( userName );
		// Show the menu entry only on the user pages, user talk pages and contribution pages
		
		//Вандализм
		var portlet1 = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'❌ Вандализм',
			'ca-reporter-button',
			'Заблокировать ботом'
		);
		$( portlet1 ).find( 'a' ).on( 'click', function( e ) {
			e.preventDefault();
			mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
				OO.ui.confirm(
					'Заблокировать ботом: ' + userName
				).done( function( confirmed ) {
					if ( confirmed ) addEntryToList( blockListName, userName, 1 );
				} );
			} );
		} );
		
		//Вандализм + откат
		var portlet2 = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'↪ Вандализм + откат',
			'ca-reporter-button',
			'Заблокировать ботом'
		);
		$( portlet2 ).find( 'a' ).on( 'click', function( e ) {
			e.preventDefault();
			mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
				OO.ui.confirm(
					'Заблокировать ботом и откатить: ' + userName
				).done( function( confirmed ) {
					if ( confirmed ) addEntryToList( blockListName, userName, 100 );
				} );
			} );
		} );
		
		//Вандализм + откат и скрытие
		var portlet3 = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'👁 Вандализм + откат и скрытие',
			'ca-reporter-button',
			'Заблокировать ботом'
		);
		$( portlet3 ).find( 'a' ).on( 'click', function( e ) {
			e.preventDefault();
			mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
				OO.ui.confirm(
					'Заблокировать ботом, откатить и скрыть: ' + userName
				).done( function( confirmed ) {
					if ( confirmed ) addEntryToList( blockListName, userName, 101 );
				} );
			} );
		} );
		
		//Удаление текста
		var portlet4 = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'🚫 Удаление текста',
			'ca-reporter-button',
			'Заблокировать ботом'
		);
		$( portlet4 ).find( 'a' ).on( 'click', function( e ) {
			e.preventDefault();
			mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
				OO.ui.confirm(
					'Заблокировать ботом: ' + userName
				).done( function( confirmed ) {
					if ( confirmed ) addEntryToList( blockListName, userName, 2 );
				} );
			} );
		} );
		
		//Массовый спам
		var portlet5 = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'📩 Массовый спам',
			'ca-reporter-button',
			'Заблокировать ботом'
		);
		$( portlet5 ).find( 'a' ).on( 'click', function( e ) {
			e.preventDefault();
			mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
				OO.ui.confirm(
					'Заблокировать ботом: ' + userName
				).done( function( confirmed ) {
					if ( confirmed ) addEntryToList( blockListName, userName, 3 );
				} );
			} );
		} );
		
		if (!isIP) {
			//Провокационное имя
			var portlet6 = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'😡 Провокационное имя',
			'ca-reporter-button',
			'Заблокировать ботом'
			);
			$( portlet6 ).find( 'a' ).on( 'click', function( e ) {
				e.preventDefault();
				mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
					OO.ui.confirm(
						'Заблокировать ботом: ' + userName
					).done( function( confirmed ) {
						if ( confirmed ) addEntryToList( blockListName, userName, 4 );
					} );
				} );
			} );
			
			//Провокационное имя + скрытие
			var portlet7 = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'🤬 Провокационное имя + скрытие',
			'ca-reporter-button',
			'Заблокировать ботом'
			);
			$( portlet7 ).find( 'a' ).on( 'click', function( e ) {
				e.preventDefault();
				mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
					OO.ui.confirm(
						'Заблокировать ботом и скрыть: ' + userName
					).done( function( confirmed ) {
						if ( confirmed ) addEntryToList( blockListName, userName, 400 );
					} );
				} );
			} );
			
			//Рекламное имя
			var portletR = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'🆔 Рекламное имя',
			'ca-reporter-button',
			'Заблокировать ботом'
			);
			$( portletR ).find( 'a' ).on( 'click', function( e ) {
				e.preventDefault();
				mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
					OO.ui.confirm(
						'Заблокировать ботом: ' + userName
					).done( function( confirmed ) {
						if ( confirmed ) addEntryToList( blockListName, userName, 5 );
					} );
				} );
			} );
		}
		
		if (!isIP && usedByAdmin) {
			//Вандализм бессрочка
			var portlet8 = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'⚠️ Вандализм (бессрочная)',
			'ca-reporter-button',
			'Заблокировать ботом'
			);
			$( portlet8 ).find( 'a' ).on( 'click', function( e ) {
				e.preventDefault();
				mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
					OO.ui.confirm(
						'Заблокировать ботом бессрочно: ' + userName
					).done( function( confirmed ) {
						if ( confirmed ) addEntryToList( blockListName, userName, 998 );
					} );
				} );
			} );				
		}
		
		if (usedByAdmin) {
			//NUKE
			var portlet9 = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'🔥 NUKE',
			'ca-reporter-button',
			'Заблокировать ботом'
			);
			$( portlet9 ).find( 'a' ).on( 'click', function( e ) {
				e.preventDefault();
				mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
					OO.ui.confirm(
						'NUKE (блок + удаление + откат + скрытие): ' + userName
					).done( function( confirmed ) {
						if ( confirmed ) addEntryToList( blockListName, userName, 999 );
					} );
				} );
			} );
		}
		
		//Снять блок
		var portlet10 = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'✅ Снять блокировку',
			'ca-reporter-button',
			'Заблокировать ботом'
		);
		$( portlet10 ).find( 'a' ).on( 'click', function( e ) {
			e.preventDefault();
			mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
				OO.ui.confirm(
					'Снять блокировку по собственному запросу: ' + userName
				).done( function( confirmed ) {
					if ( confirmed ) addEntryToList( blockListName, userName, 0 );
				} );
			} );
		} );
		
	} else if (wgNamespaceNumber === 0) {
		// Show the menu entry only for the articles
		var pageName = mw.config.get( 'wgTitle' );
		//Вандализм
		var portlet20 = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'❌ Систематический вандализм',
			'ca-reporter-button',
			'Установить полузащиту ботом'
		);
		$( portlet20 ).find( 'a' ).on( 'click', function( e ) {
			e.preventDefault();
			mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
				OO.ui.confirm(
					'Установить полузащиту: ' + pageName
				).done( function( confirmed ) {
					if ( confirmed ) addEntryToList( protectListName, pageName, 1 );
				} );
			} );
		} );
		//Систематический спам
		var portlet21 = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'📩 Систематический спам',
			'ca-reporter-button',
			'Установить полузащиту ботом'
		);
		$( portlet21 ).find( 'a' ).on( 'click', function( e ) {
			e.preventDefault();
			mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
				OO.ui.confirm(
					'Установить полузащиту: ' + pageName
				).done( function( confirmed ) {
					if ( confirmed ) addEntryToList( protectListName, pageName, 2 );
				} );
			} );
		} );
		//Война правок
		var portlet22 = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'⚠️ Война правок',
			'ca-reporter-button',
			'Установить полузащиту ботом'
		);
		$( portlet22 ).find( 'a' ).on( 'click', function( e ) {
			e.preventDefault();
			mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
				OO.ui.confirm(
					'Установить полузащиту: ' + pageName
				).done( function( confirmed ) {
					if ( confirmed ) addEntryToList( protectListName, pageName, 3 );
				} );
			} );
		} );
		
		var portlet23 = mw.util.addPortletLink(
			mw.config.get( 'skin' ) === 'minerva' ? 'p-tb' : 'p-participation',
			mw.util.getUrl( blockListName ),
			'✅ Снять полузащиту',
			'ca-reporter-button',
			'Снять полузащиту по собственному запросу'
		);
		$( portlet23 ).find( 'a' ).on( 'click', function( e ) {
			e.preventDefault();
			mw.loader.using( [ 'oojs-ui-core', 'oojs-ui-windows' ], function() {
				OO.ui.confirm(
					'Снять полузащиту по собственному запросу: ' + pageName
				).done( function( confirmed ) {
					if ( confirmed ) addEntryToList( protectListName, pageName, 0 );
				} );
			} );
		} );
	}
} );

 

Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia