利用者:Yuukin0248/checkSignature.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
/**
* checkSignature.js
* 署名忘れ防止スクリプト
* [[利用者:Cpro]] さんによる作成。[[利用者:Yuukin0248]] が一部改変
*
* "以下のスクリプトはパブリックドメインとします。
* 改変・再配布を含め自由にお使いいただけますが、自己責任でお願いします。
* These scripts below are under public domain.
* You can freely use, modify or redistribute, at your own risk." --[[利用者:Cpro|cpro]]
*/
mw.loader.using('oojs-ui').then(function () {
/** 署名の文字列。必要に応じて各自で定義 */
const SIGNATURE_STRING = '\u007E\u007E\u007E\u007E'; // \u007Eはチルダ
//すべてのノート名前空間と、Wikipedia名前空間の一部を対象とする
const ns = mw.config.get('wgNamespaceNumber');
if (ns % 2 === 0 && ns !== 4) return;
/** Wikipedia名前空間で署名が必要なページのリスト */
const pageNamesRequireSignature = [
'^井戸端($|/subj/)',
'^お知らせ$',
'^利用案内$',
'^削除依頼/(?!ログ/)',
'^投稿ブロック依頼/',
'^保護(解除)?依頼$',
'^リダイレクトの削除依頼/d+年d+月$',
'^削除の復帰依頼($|/)',
'^チェックユーザー依頼/',
'^移動依頼$',
'^改名提案$',
'^管理者伝言板/(荒らし|投稿ブロック|保護ページ編集|その他の伝言)/',
'^利用者ページの削除依頼$',
'^利用者名変更依頼$',
'^著作権問題調査依頼$',
'^Bot作業依頼$',
'^Bot/使用申請$',
'^バグの報告$',
];
// リストに含まれない場合は終了
if (ns === 4 && mw.config.get('wgTitle').search(pageNamesRequireSignature.join('|')) === -1) return;
const saveButton = $('#wpSave');
if (!saveButton.length) return;
saveButton.on('click', function (e) {
// 細部の編集の際は終了
if ($('#wpMinoredit').prop('checked')) return;
/** @type {string} */
const text = $('#wpTextbox1').val();
let pos = text.indexOf(SIGNATURE_STRING);
while (pos !== -1) {
// nowikiされていないかチェック
const nowiki = text.substring(0, pos).match(/<\/?nowiki>/gi);
if (!nowiki) return; //nowikiが見つからなければ抜ける
if (nowiki[nowiki.length - 1].toLowerCase() === '</nowiki>') return; // nowikiが閉じられていれば抜ける
pos = text.indexOf(SIGNATURE_STRING, pos + SIGNATURE_STRING.length);
}
if (!window.confirm('署名が入力されていません。\nこのまま投稿しますか?')) e.preventDefault();
});
});