Wiki - KEONHACAI COPA

Thành viên:NguoiDungKhongDinhDanh/massblock.js

//Tks4Fish's mass blocking tool
//Adapted from [[:w:en:User:Timotheus_Canens/massblock.js]], who adapted it from [[User:Animum/massdelete.js]]

/* jshint esversion: 8, esnext:false */

async function doMassBlock() {
	document.getElementById("wpMassBlockSubmit").disabled = true;
	var users = document.getElementById("wpMassBlockUsers").value.split("\n");
	if(users.length == 0) return;
	
	var wpMassBlockSummaryTalk = document.getElementById("wpMassBlockSummaryTalk").value;
	var wpMassBlockSummaryUser = document.getElementById("wpMassBlockSummaryUser").value;
	var wpMassBlockReasons = document.getElementById("wpMassBlockReasons").value;
	var wpMassBlockMessage = document.getElementById("wpMassBlockMessage").value;
	var wpMassBlockReason = document.getElementById("wpMassBlockReason").value;
	var wpMassBlockExpiry = document.getElementById("wpMassBlockExpiry").value;
	var wpMassBlockTag = document.getElementById("wpMassBlockTag").value;
	
	var wpMassBlockAutoblock = document.getElementById("wpMassBlockAutoblock").checked;
	var wpMassBlockTalkpage = document.getElementById("wpMassBlockTalkpage").checked;
	var wpMassBlockAnononly = document.getElementById("wpMassBlockAnononly").checked;
	var wpMassBlockNocreate = document.getElementById("wpMassBlockNocreate").checked;
	var wpMassBlockReblock = document.getElementById("wpMassBlockReblock").checked;
	var wpMassBlockEmail = document.getElementById("wpMassBlockEmail").checked;
	
	var blocked = 0;
	var talkpageedited = 0;
	var userpageedited = 0;
	var failed = [];
	var error = [];
	
	for(i = 0; i < users.length; i++) {
		var user = users[i];
		if(user.length > 0) {
			let data = await new mw.Api().postWithToken("csrf", {
				"action": "block",
				"format": "json",
				"user": user,
				"reason": (wpMassBlockReasons == "other" ? wpMassBlockReason : wpMassBlockReasons + (wpMassBlockReason ? ": " + wpMassBlockReason : "")),
				"expiry": (wpMassBlockExpiry == "" ? "indefinite" : wpMassBlockExpiry),
				"anononly": (wpMassBlockAnononly ? true : false),
				"nocreate": (wpMassBlockNocreate ? true : false),
				"autoblock": (wpMassBlockAutoblock ? true : false),
				"noemail": (wpMassBlockEmail ? true : false),
				"allowusertalk": (wpMassBlockTalkpage ? false : true),
				"reblock": (wpMassBlockReblock ? true : false),
				"formatversion": "2"
			});
			if(data.block) { //If blocked, update the blocked count and the button.
				blocked++;
				// now edit user and user talk.
				if(wpMassBlockMessage != "") {
					let data = await new mw.Api().postWithToken("csrf", {
						"action": "edit",
						"format": "json",
						"watchlist": "nochange",
						"title": "User talk:" + user,
						"summary": wpMassBlockSummaryTalk,
						"appendtext": wpMassBlockMessage
					});
					if(data.edit) {
						talkpageedited++;
					}
					else { //If not edited, add the title to the "failed" array and a description of the error to the "error" array.
						failed.push("User talk:" + user);
						error.push(data.error.info);
					}
				}
				if(wpMassBlockTag != "") {
					let data = await new mw.Api().postWithToken("csrf", {
						"action": "edit",
						"format": "json",
						"watchlist": "nochange",
						"title": "User:" + user,
						"summary": wpMassBlockSummaryUser,
						"text": wpMassBlockTag
					});
					if(data.edit) {
						userpageedited ++;
					}
					else { //If not edited, add the title to the "failed" array and a description of the error to the "error" array.
						failed.push("User talk:" + user);
						error.push(data.error.info);
					}
				}
				document.getElementById("wpMassBlockSubmit").value = "(" + blocked + "/" + talkpageedited + "/" + userpageedited + ")";
			}
			else { //If not blocked, add the title to the "failed" array and a description of the error to the "error" array.
				failed.push("Special:Block/" + user);
				error.push(data.error.info);
			}
		}
		if(!users[i+1]) {
			document.getElementById("wpMassBlockSubmit").value = "(" + blocked + "/" + talkpageedited + "/" + userpageedited + ")";
			if(failed.length > 0) {
				var linkedList = "";
				
				for(x = 0; x < failed.length; x++) {
					linkedList += "<li><a href=\"" + wgScript + "?title=" + encodeURIComponent(failed[x]) + "\">" + failed[x] + "</a>: " + error[x] + "</li>"; //Links the titles in the "failed" array
				}
				document.getElementById("wpMassBlockFailedContainer").innerHTML += '<br /><b>Failed actions:</b><ul>' + linkedList + '</ul>';
			}
		}
	}
}

function massblockform() {
	var bodyContent = (mw.config.get("skin") == "cologneblue" ? "article" : "bodyContent");
	document.getElementsByTagName("h1")[0].textContent = "Tks4Fish's mass-blocking tool";
	document.title = "Tks4Fish's mass-blocking tool - Wikipedia, the free encyclopedia";
	document.getElementById(bodyContent).innerHTML = '<h3 id="siteSub">From Wikipedia, the free encyclopedia</h3><br /><br />'
		+ '<form id="wpMassBlock" name="wpMassBlock">'
		+ '<b>If you abuse this tool, it\'s <i>your</i> fault, not mine.</b>'
		+ '<div id="wpMassBlockFailedContainer"></div>'
		+ '<br /><br />'
			+ 'Users to block (one on each line, please):<br />'
				+ '<textarea tabindex="1" accesskey="," name="wpMassBlockUsers" id="wpMassBlockUsers" rows="10" cols="80"></textarea>'
			+ 'Talk page message, if any (leave blank to leave no message):<br />'
				+ '<textarea tabindex="2" accesskey="," name="wpMassBlockMessage" id="wpMassBlockMessage" rows="10" cols="80"></textarea>'
			+ 'Replace user page text with (leave blank for no change):<br />'
				+ '<textarea tabindex="3" accesskey="," name="wpMassBlockTag" id="wpMassBlockTag" rows="10" cols="80"></textarea>'
			+ '<br /><br /><table style="background-color:transparent">'
				+ '<tr><td>Common reasons:</td>'
					+ '<td><select id="wpMassBlockReasons">'
						+ '<optgroup label="Other reason">'
							+ '<option value="other">Other reason</option>'
						+ '</optgroup>'
						+ '<optgroup label="Common reasons">'
							+ '<option value="Vandalism">Vandalism</option>'
							+ '<option value="Vandalism-only account">Vandalism-only account</option>'
							+ '<option value="Violations of the Biographies of living persons policy">Violations of the Biographies of living persons policy</option>'
							+ '<option value="Using Wikipedia for spam or advertising purposes">Using Wikipedia for spam or advertising purposes</option>'
							+ '<option value="Spam / advertising-only account">Spam / advertising-only account</option>'
							+ '<option value="Creating attack, nonsense or other inappropriate pages">Creating attack, nonsense or other inappropriate pages</option>'
							+ '<option value="Creating copyright violations">Creating copyright violations</option>'
							+ '<option value="Abusing multiple accounts">Abusing multiple accounts</option>'
							+ '<option value="Block evasion">Block evasion</option>'
							+ '<option value="Personal attacks or harassment">Personal attacks or harassment</option>'
							+ '<option value="Edit warring">Edit warring</option>'
							+ '<option value="Violation of the three-revert rule">Violation of the three-revert rule</option>'
							+ '<option value="Disruptive editing">Disruptive editing</option>'
							+ '<option value="Long-term abuse">Long-term abuse</option>'
							+ '<option value="Making legal threats">Making legal threats</option>'
							+ '<option value="Arbitration enforcement">Arbitration enforcement</option>'
							+ '<option value="Deliberately triggering the Edit filter">Deliberately triggering the Edit filter</option>'
							+ '<option value="Revoking talk page access: inappropriate use of user talk page while blocked">Revoking talk page access: inappropriate use of user talk page while blocked</option>'
							+ '<option value="\{\{anonblock}}">\{\{anonblock}}</option>'
							+ '<option value="\{\{schoolblock}}">\{\{schoolblock}}</option>'
							+ '<option value="\{\{blocked proxy}}">\{\{blocked proxy}}</option>'
							+ '<option value="\{\{usernameblock}}">\{\{usernameblock}}</option>'
							+ '<option value="\{\{UsernameHardBlocked}}">\{\{UsernameHardBlocked}}</option>'
							+ '<option value="\{\{spamusernameblock}}">\{\{spamusernameblock}}</option>'
							+ '<option value="\{\{softerblock}}">\{\{softerblock}}</option>'
							+ '<option value="\{\{checkuserblock}}">\{\{checkuserblock}}</option>'
							+ '<option value="\{\{checkuserblock-account}}">\{\{checkuserblock-account}}</option>'
							+ '<option value="\{\{Tor}}">\{\{Tor}}</option>'
							+ '<option value="\{\{Vaublock}}">\{\{Vaublock}}</option>'
						+ '</optgroup>'
					+ '</select></td></tr>'
			+ '<tr><td>Other/additional reason:</td>'
				+ '<td><input type="text" id="wpMassBlockReason" name="wpMassBlockReason" maxlength="255" /></td></tr>'
			+ '<tr><td>Expiration time (blank for indefinite):</td>'
				+ '<td><input type="text" id="wpMassBlockExpiry" name="wpMassBlockExpiry" maxlength="255" /></td></tr>'
			+ '<tr><td>Edit summary for talk page edit:</td>'
				+ '<td><input type="text" id="wpMassBlockSummaryTalk" name="wpMassBlockSummaryTalk" maxlength="255" /></td></tr>'
			+ '<tr><td>Edit summary for user page edit:</td>'
				+ '<td><input type="text" id="wpMassBlockSummaryUser" name="wpMassBlockSummaryUser" maxlength="255" /></td></tr>'
				+ '<tr><td>Block anonymous users only (IPs only):</td><td><input type="checkbox" id="wpMassBlockAnononly" name="wpMassBlockAnononly" /></td></tr>'
				+ '<tr><td>Enable autoblock (accounts only):</td><td><input type="checkbox" id="wpMassBlockAutoblock" name="wpMassBlockAutoblock" checked="checked" /></td></tr>'
				+ '<tr><td>Block account creation:</td><td><input type="checkbox" id="wpMassBlockNocreate" name="wpMassBlockNocreate" checked="checked" /></td></tr>'
				+ '<tr><td>Block email:</td><td><input type="checkbox" id="wpMassBlockEmail" name="wpMassBlockEmail" /></td></tr>'
				+ '<tr><td>Remove talk page access:</td><td><input type="checkbox" id="wpMassBlockTalkpage" name="wpMassBlockTalkpage" /></td></tr>'
				+ '<tr><td>Override existing blocks:</td><td><input type="checkbox" id="wpMassBlockReblock" name="wpMassBlockReblock" checked="checked" /></td></tr>'
				+ '<tr><td><input type="button" id="wpMassBlockSubmit" name="wpMassBlockSubmit" value="Block" onclick="doMassBlock()" /></td></tr>'
		+ '</form>';
	document.getElementById("wpMassBlockReasons").onchange = function() {
		var maxlength = (document.getElementById("wpMassBlockReasons").value == "other" ? 255 : 253-document.getElementById("wpMassBlockReasons").value.length); //It's 253 because of the two characters (": ") in addition to the selected summary.
		document.getElementById("wpMassBlockReason").setAttribute("maxlength", maxlength);
	};
}

if (mw.config.get('wgNamespaceNumber') == -1 &&
	mw.config.get('wgCanonicalSpecialPageName') === 'Blankpage' &&
	mw.config.get('wgUserGroups').indexOf('sysop') !== -1 &&
	mw.config.get('wgTitle').split('/',2)[1] === 'MassBlock') {
		$(massblockform);
}
Wiki - Keonhacai copa chuyên cung cấp kiến thức thể thao, keonhacai tỷ lệ kèo, bóng đá, khoa học, kiến thức hằng ngày được chúng tôi cập nhật mỗi ngày mà bạn có thể tìm kiếm tại đây có nguồn bài viết: https://vi.wikipedia.org/wiki/Th%C3%A0nh_vi%C3%AAn:NguoiDungKhongDinhDanh/massblock.js