Effective Protection Level

ページに対する特定の操作に必要な利用者グループを取得するためのモジュールです。具体的には、下記の操作について調べることができます。

Effective Protection Level モジュールの解説

  • 利用者名前空間かMediaWiki名前空間にあるJavaScriptページとCSSページ: interfaceadmin
  • MediaWiki名前空間のページ: sysop
  • 利用者名前空間のJSONページ: sysop
  • ページの復帰: eliminator
  • 保護されたページ: sysop, templateeditor, extendedconfirmed, autoconfirmedのどれか(保護レベルによる。日本語版ではtemplateeditorのレベルが存在しません)
  • カスケード保護されたページ: sysop
  • タイトルブラックリストに含まれるページ: sysop, autoconfirmedのどれか(ブラックリストでの設定による)
  • ファイルの移動: eliminator
  • ページの移動とファイルのアップロード: autoconfirmed
  • それ以外: *

使い方

このモジュールは呼び出される毎に高負荷パーサー関数を4回まで呼び出します。そのため、保護レベルを正確に知る必要がある場合のみに使用して、それ以外はtitle.protectionLevelsを使用してください。

ほかのモジュールからの利用

下記のようにモジュールを呼び出してください。

local effectiveProtectionLevel = require('Module:Effective protection level')._main 

この関数は引数を2つ使用します。第1引数はページに対する操作("edit"、"create"、"move"、"upload"、"autoreview"のどれか)を指定します。第2引数は操作を行うページ名を指定します。第2引数を省略した場合、モジュールが呼び出されたページのページ名が使用されます。

この関数の戻り値は操作を行うのに必要な利用者グループ名です。

ウィキテキストからの利用

下記のように呼び出します。引数はモジュールから呼び出す場合と同じです。

local p = {}  -- Returns the permission required to perform a given action on a given title. -- If no title is specified, the title of the page being displayed is used. function p._main(action, pagename) local title if type(pagename) == 'table' and pagename.prefixedText then title = pagename elseif pagename then title = mw.title.new(pagename) else title = mw.title.getCurrentTitle() end pagename = title.prefixedText if action == 'autoreview' then local level = mw.ext.FlaggedRevs.getStabilitySettings(title) level = level and level.autoreview if level == 'review' then return 'reviewer' elseif level ~= '' then return level else return nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can review end elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' and action ~= 'undelete' then error( '第1引数にはedit、move、create、upload、undelete、autoreviewのどれかを指定してください', 2 ) end if title.namespace == 8 then -- MediaWiki namespace if title.text:sub(-3) == '.js' or title.text:sub(-4) == '.css' or title.contentModel == 'javascript' or title.contentModel == 'css' then -- site JS or CSS page return 'interfaceadmin' else -- any non-JS/CSS MediaWiki page return 'sysop' end elseif title.namespace == 2 and title.isSubpage then if title.contentModel == 'javascript' or title.contentModel == 'css' then -- user JS or CSS page return 'interfaceadmin' elseif title.contentModel == 'json' then -- user JSON page return 'sysop' end end if action == 'undelete' then return 'eliminator' -- 英語版では'sysop' end local level = title.protectionLevels[action] and title.protectionLevels[action][1] if level == 'sysop' or level == 'editprotected' then return 'sysop' elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page return 'sysop' elseif level == 'templateeditor' then return 'templateeditor' elseif action == 'move' then local blacklistentry = mw.ext.TitleBlacklist.test('edit', pagename) -- Testing action edit is correct, since this is for the source page. The target page name gets tested with action move. if blacklistentry and not blacklistentry.params.autoconfirmed then return 'templateeditor' elseif title.namespace == 6 then return 'eliminator' -- 英語版では'filemover' elseif level == 'extendedconfirmed' then return 'extendedconfirmed' else return 'autoconfirmed' end end local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename) if blacklistentry then if not blacklistentry.params.autoconfirmed then return 'sysop' -- 英語版では'templateeditor' elseif level == 'extendedconfirmed' then return 'extendedconfirmed' else return 'autoconfirmed' end elseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reason return 'autoconfirmed' elseif level then return level elseif action == 'upload' then return 'autoconfirmed' -- 英語版とは異なり、日本語版では現在のところIPユーザーでも記事等を作成可能なので、以下はコメントアウト -- elseif action == 'create' and title.namespace % 2 == 0 and title.namespace ~= 118 then -- You need to be registered, but not autoconfirmed, to create non-talk pages other than drafts -- return 'user' else return '*' end end  setmetatable(p, { __index = function(t, k) return function(frame) return t._main(k, frame.args[1]) end end })  return p 

Tags:

🔥 Trending searches on Wiki 日本語:

IHI松坂慶子ゴールデンウィーク仁村紗和松田聖子高尾奏音堤礼実堀部圭亮国仲涼子小久保玲央ブライアン怪獣8号新木優子内野航太郎XVideos粗品 (お笑い芸人)9ボーダー岩田達七アルネ・スロット転生したら第七王子だったので、気ままに魔術を極めますデート・ア・ライブアメリカ合衆国河野純喜TM NETWORK神田沙也加王貞治ちょっといい姉妹中村アン田中昌之前田拳太郎ゆるキャン△ (アニメ)織田信長姫野和樹博多華丸木原誠二井川意高天使の耳ようこそ実力至上主義の教室へロシアAV女優大王製紙涌井秀章狂四郎2030ボクシング現王者一覧周期表ゴジラvsコング平野綾幾田りら大谷舞風自殺・自決・自害した日本の著名人物一覧生田竜聖黒沢ともよ及川光博NATURE (音楽グループ)倉木麻衣原田美枝子田中真美子ゴールドシップ麻生太郎田中達也田中幹也ドラゴン桜 (テレビドラマ)小野真弓角替和枝西舘勇陽宮脇咲良清原果耶坂本龍馬静岡県立磐田南高等学校町田啓太HUNTER×HUNTER松田悟志葉山奨之武元唯衣アルベルト・アインシュタインOPS (野球)カタールMOONCHILD🡆 More