Help:保護ステータスガジェット/仕様解説

保護記録参照ガジェットはMediaWiki:Gadget-protectionLog.jsを編集することで、保護関係の様々な仕様変更に追随することができます。

インジケータが表示される条件[編集]

1.ページに保護が設定されている
ガジェットは保護状態の有無を判定します。保護されていないページには反応しません。
2.保護関係のテンプレートが貼られていない
保護レベルに応じたテンプレートの有無を判定します。右上のインジケータとページのカテゴリを調べて判定するため、バナー表示にした場合でも、右上にインジケータとして表示した場合でも反応します。
半保護と移動保護が掛かっていて半保護テンプレートのみが貼られているような場合、移動保護のインジケータのみを補完します。
3.保護操作を行なった直後ではない
保護操作を行うユーザーが保護操作の画面で「確認」ボタンを押下し、画面が記事本文の表示画面に遷移した場合、そのユーザーの画面にインジケータが自動で表示されることはありません。自動で表示させるとテンプレートを省略を推奨することになりかねないためです。
ただし、MediaWiki側の仕様が原因で保護画面からの遷移を上手く認識できない場合があります。

配列の種類[編集]

保護の種類やアイコンは以下の4種類の配列で定義しています

  • $editLevel…編集保護の種類を定義
  • $moveLevel…移動保護の種類を定義
  • $createLevel…作成保護の種類を定義
  • $uploadLevel…アップロード保護の種類を定義

配列の書式[編集]

4種類の配列の中に以下の書式で連想配列を追加していくことで新しい保護の種類を追加できます。

"sysop": {
	"policy":"//ja.wikipedia.org/wiki/Wikipedia:%E4%BF%9D%E8%AD%B7%E3%81%AE%E6%96%B9%E9%87%9D",
	"id":{
		"normal":"#mw-indicator-fullprotect",
		"indef":"#mw-indicator-indefprotect"
	},
	"icon":"//upload.wikimedia.org/wikipedia/commons/thumb/0/01/Edit_Protection.svg/30px-Edit_Protection.svg.png",
	"alticon":"//upload.wikimedia.org/wikipedia/commons/thumb/0/01/Edit_Protection.svg/45px-Edit_Protection.svg.png 1.5x,//upload.wikimedia.org/wikipedia/commons/thumb/0/01/Edit_Protection.svg/60px-Edit_Protection.svg.png 2x",
	"message":"このページは保護されています。(保護の方針に基づく保護)",
	"category":"編集保護中のページ"
}

項目の説明[編集]

保護テンプレートを縮小表示で貼り付けたとき、右上に表示されるアイコンのIDやツールチップなどを変数として定義しています。ページに保護テンプレートがなかった場合、変数に格納された情報を元にして、保護テンプレートの縮小表示と同じ形式のアイコンを表示します。

sysop 保護の種類。{{PROTECTIONLEVEL}}マジックワードで取得できる値を指定します。
policy 方針ページのウェブアドレスを指定します。
id 保護関係のテンプレートを貼り付けたとき、右上に表示されるアイコンのID。
normalが通常保護、indefが半永久的な保護です。
icon 保護テンプレートが貼られていないとき、右上に表示させるアイコン。
保護テンプレートで右上に表示させる通常保護のアイコンと同じ画像を選択します。
alticon 別解像度のアイコン画像を指定します。(※省略可能)
message 右上の保護のアイコンにマウスカーソルをあわせたときに表示されるツールチップ。
category 保護されたページに付与されるカテゴリを指定します。このカテゴリが付与されたページにはアイコンを表示しません。

他のプロジェクトへの導入[編集]

MediaWiki:Gadget-protectionLog.js のパラメータを差し替えるだけで他のプロジェクトにもカスタムJSやガジェットとして使える仕様にしています。不具合の修正や仕様変更で core.js にパラメータを追加する場合、必ず省略可能という形を取らないと、他の場所からインクルードしているJSファイルでエラーを引き起こします。