利用者:Y-dash/Scripts/CUBlockHelper.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

/*

////////////////////////////////////////////////////////////////////////////////////////
//
//  CUBlockHelper.js
//
//  last update 2020-06-26
//
////////////////////////////////////////////////////////////////////////////////////////

チェックユーザー用ツール。ブロック時の要約記入や利用者ページ置換の補助。

*/

// ここからロード時処理


// ボタン類を組み込む

jQuery(document).ready(function ($) {
// 該当するインターフェースのあるページでのみ動作させる
// 変数とIDでチェックユーザーのページを判別
	if($("#checkuserblocksubmit")) {
		// 利用者ページ用テンプレート
		// 入力欄の後ろにボタンとドロップダウンリストを追加する
		$("#blocktag > input").after(
			
			$("<nobr/>")
				.append(
			
				// 挿入ボタン
				$("<input/>")
					.attr({"type": "button", "value": "<<挿入"})
					.click(ins_blocktag),
				
				// ドロップダウンリスト
				$("<select/>")
					.attr({"id": "list_blocktag"})
					.append(
						$("<option/>")
							.attr({"value": "\x7B\x7BIndefblockeduser|nopage=t\x7D\x7D\x7B\x7BSockpuppetC|username\x7D\x7D"})
							.text("投稿記録を根拠"),
						$("<option/>")
							.attr({"value": "\x7B\x7BIndefblockeduser|nopage=t\x7D\x7D\x7B\x7BSockpuppetB|username\x7D\x7D"})
							.text("ブロック記録を根拠"),
						$("<option/>")
							.attr({"value": "\x7B\x7BIndefblockeduser|nopage=t\x7D\x7D\x7B\x7Bsockpuppet2|username|pagename\x7D\x7D"})
							.text("長期荒らし"),
						$("<option/>")
							.attr({"value": "\x7B\x7BIndefblockeduser|nopage=t\x7D\x7D\x7B\x7Bsockpuppet|username|evidence=[[request]]\x7D\x7D"})
							.text("各種依頼などを根拠"),
						$("<option/>")
							.attr({"value": "\x7B\x7BIndefblockeduser|nopage=t\x7D\x7D"})
							.text("無期限ブロックのみを明示")
					),
					
					// 上書きせず挿入のチェックボックスとラベル
					$("<input/>")
						.attr({"type": "checkbox", "id": "blockover"}),
					$("<label/>")
						.attr({"for": "blockover"})
						.text("上書きせず挿入")
				)
		);
		
		// 会話ページ用テンプレート
		// 入力欄の後ろにボタンとドロップダウンリストを追加する
		$("#talktag > input").after(
			$("<nobr/>")
				.append(
				
				// ボタン
				$("<input/>")
					.attr({"type": "button", "value": "<<挿入"})
					.click(ins_talktag),
				
				// ドロップダウンリスト
				$("<select/>")
					.attr({"id": "list_talktag"})
					.append(
						$("<option/>")
							.attr({"value": "\x7B\x7Bsubst:sockblock|username\x7D\x7D--\x7E\x7E\x7E\x7E"})
							.text("靴下ブロック"),
						$("<option/>")
							.attr({"value": "\x7B\x7Bsubst:ILLEGIT\x7D\x7D--\x7E\x7E\x7E\x7E"})
							.text("多重アカウント"),
						$("<option/>")
							.attr({"value": "\x7B\x7Bsubst:ILLEGIT\x7D\x7D--\x7E\x7E\x7E\x7E"})
							.text("投稿記録の分断"),
						$("<option/>")
							.attr({"value": "\x7B\x7Bsubst:Infiniteblocked\x7D\x7D--\x7E\x7E\x7E\x7E"})
							.text("不適切な利用者名"),
						$("<option/>")
							.attr({"value": "\x7B\x7Bsubst:Infiniteblocked\x7D\x7D--\x7E\x7E\x7E\x7E"})
							.text("無期限ブロック")
					),
					
					// 上書きせず挿入のチェックボックスとラベル
					$("<input/>")
						.attr({"type": "checkbox", "id": "talkover"}),
					$("<label/>")
						.attr({"for": "talkover"})
						.text("上書きせず挿入"),
					// 会話ページに挿入せず理由欄のみ
					$("<input/>")
						.attr({"type": "checkbox", "id": "reasononly"}),
					$("<label/>")
						.attr({"for": "reasononly"})
						.text("理由欄のみ記入")
				)
		);
		
		// 送信ボタンの後ろに
		// リセットボタンを追加
		$("#checkuserblocksubmit").after(
			$("<input/>")
				.attr({"type": "reset", "value": "リセット"})
		);
	}
});

// ここまでロード時処理



// ここからイベント処理

// ★ブロックフォーム本体のギミック
// 挿入ボタンクリック時の動作
// 利用者ページにテンプレートを挿入
function ins_blocktag() {
	// 選択項目の値に置換用パラメータが含まれる
	if($("#list_blocktag").val().indexOf("username") > -1) {
		// 入力した内容で置換
		if($mainname = prompt("本体の利用者名を入力","")) {
			$newtag = $("#list_blocktag").val().replace(/username/,$mainname);
		}
		
		// キャンセル時に入力しない
		else {
			return false;
		}
		
		// 選択項目の値に他の置換用パラメータが含まれる
		if($newtag.indexOf("pagename") > -1) {
			// 入力した内容で置換
			if($ltaname = prompt("荒らしのサブページ名を入力(省略可)","")) {
				$newtag = $newtag.replace(/pagename/,$ltaname);
			}
			
			// キャンセル時はパラメータを省略
			else {
				$newtag = $newtag.replace(/\|pagename/,"");
			}
		}
		
		// 選択項目の値に他の置換用パラメータが含まれる
		if($newtag.indexOf("request") > -1) {
			// 入力した内容で置換
			if($ltaname = prompt("ブロック依頼などのページ名(多重アカウントと断定した根拠)を入力","")) {
				$newtag = $newtag.replace(/request/,$ltaname);
			}
			
			// キャンセル時に入力しない
			else {
				return false;
			}
		}
	}
	// 選択項目の値に置換用パラメータがなければそのまま
	else {
		$newtag = $("#list_blocktag").val();
	}
	
	// 上書きせず挿入する場合の置換内容
	if($("#blockover").get(0).checked === true) {
		$newtag = "\x7B\x7Bsubst:User:M-/b|" + $newtag + "\x7D\x7D";
	}
	
	// テキストボックスへ入力
	$("#blocktag > input").val($newtag);
	
	// チェックボックスを選択
	$("#usetag > input").val(["1"]);
}

// ★ブロックフォーム本体のギミック
// 挿入ボタンクリック時の動作
// 会話ページにテンプレートを挿入
function ins_talktag() {
	// 選択項目の値に置換用パラメータが含まれる
	if($("#list_talktag").val().indexOf("username") > -1) {
		
		// 入力した内容で置換
		if($mainname = prompt("本体の利用者名を入力","")) {
			$newtag = $("#list_talktag").val().replace(/username/,$mainname);
		}
		
		// キャンセル時に入力しない
		else {
			return false;
		}
	}
	
	// 選択項目の値に置換用パラメータがなければそのまま
	else {
		$newtag = $("#list_talktag").val();
	}
	
	// 上書きせず挿入する場合の置換内容
	// ★会話ページに挿入されるメッセージのセクション名はここで定義
	if($("#talkover").get(0).checked === true) {
		$newtag = "\x7B\x7Bsubst:User:M-/a|お知らせ|" + $newtag + "\x7D\x7D";
	}
	
	// 入力アシスト機能
	// 会話ページに挿入する内容に合わせてブロック要約を自動入力
	
	// ソックパペットであれば本体の名前と併せて入力
	if($("#list_talktag").prop("selectedIndex") === 0) {
		$reason = "[[WP:SOCK|sockpuppet]]: [[利用者:" + $mainname + "]]";
	}
	// 多重アカウントであれば[[WP:ILLEGIT]]
	else if($("#list_talktag").prop("selectedIndex") === 1) {
		$reason = "[[WP:ILLEGIT]]";
	}
	// 多重アカウントであれば[[WP:ILLEGIT]]
	else if($("#list_talktag").prop("selectedIndex") === 2) {
		$reason = "[[WP:SCRUTINY]]";
	}
	// 不適切な利用者名の場合
	else if($("#list_talktag").prop("selectedIndex") === 3) {
		$reason = "不適切な[[WP:U|利用者名]]";
	}
	// 単なる無期限ブロックであればプロンプトを表示
	// 空欄入力やキャンセルも可
	else {
		$reason = prompt("ブロック理由を入力してください\nあとで手入力しても構いません。","");
	}
	
	// 会話ページへの挿入をスキップ
	if($("#reasononly").get(0).checked === false) {
		// テキストボックスへ入力
		$("#talktag > input").val($newtag);
		
		// チェックボックスを選択
		$("#usettag > input").val(["1"]);
	}
	
	// ブロック理由を挿入
	$("#blockreason > input").val($reason);
}