利用者:Cpro/checksigniture.js

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

多くの WindowsLinux のブラウザ

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

Mac における Safari

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

Mac における ChromeFirefox

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

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

/*
	署名忘れ防止スクリプト [[利用者:Cpro|cpro]] 2012年12月6日 (木) 07:39 (UTC)
	
	以下のスクリプトはパブリックドメインとします。
	改変・再配布を含め自由にお使いいただけますが、自己責任でお願いします。
	These scripts below are under public domain.
	You can freely use, modify or redistribute, at your own risk.
 */

//署名の文字列。必要に応じて各自で再定義
var SIGNITURE_STRING = "\u007E\u007E\u007E\u007E"; // \u007Eはチルダ

jQuery(function($) {
	//すべてのノート名前空間と、Wikipedia名前空間の一部を対象とする
	var ns = mw.config.get('wgNamespaceNumber');
	if(ns % 2 == 0 && ns != 4) return;
	
	//Wikipedia名前空間で署名が必要なページのリスト
	var pagenamesRequireSigniture = [
		"^井戸端($|/subj/)",
		"^削除依頼/(?!ログ/)",
		"^投稿ブロック依頼/",
		"^保護(解除)?依頼$",
		"^リダイレクトの削除依頼/\d+年\d+月$",
		"^削除の復帰依頼($|/)",
		"^チェックユーザー依頼/",
		"^移動依頼$",
		"^改名提案$",
		"^管理者伝言板/(荒らし|投稿ブロック|保護ページ編集|その他の伝言)$",
		"^利用者ページの削除依頼$",
		"^利用者名変更依頼$",
		"^著作権問題調査依頼$"
	];
	//リストに含まれない場合は終了
	if(ns == 4 && mw.config.get('wgTitle').search(pagenamesRequireSigniture.join("|")) == -1) return;
	
	var $saveButton = $('#wpSave');
	if($saveButton.length == 0) return;
	
	$saveButton.click(function(e) {
		var text = $('#wpTextbox1').val();
		
		var pos = text.indexOf(SIGNITURE_STRING);
		while(pos != -1) {
			//nowikiされていないかチェック
			var nowiki = text.substring(0, pos).match(/<\/?nowiki>/ig);
			if(!nowiki) return; //nowikiが見つからなければ抜ける
			
			if(nowiki[nowiki.length - 1].toLowerCase() == '</nowiki>') return; //nowikiが閉じられていれば抜ける
			
			pos = text.indexOf(SIGNITURE_STRING, pos + SIGNITURE_STRING.length);
		}
		
		if(!window.confirm("署名が入力されていません。\nこのまま投稿しますか?"))
			e.preventDefault();
	});
});