Module:Effective protection level: Difference between revisions
add PC detection, from sandbox
(enable titleblacklist checks) |
(add PC detection, from sandbox) |
||
Line 3: | Line 3: | ||
-- Returns the permission required to perform a given action on a given title. | -- 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. | -- If no title is specified, the title of the page being displayed is used. | ||
function p.main(action, pagename) | function p.main(action, pagename, frame) | ||
if not frame then | |||
frame = mw.getCurrentFrame() | |||
end | |||
local title | local title | ||
if type(pagename) == 'table' then | if type(pagename) == 'table' then | ||
Line 12: | Line 14: | ||
title = mw.title.new(pagename) or mw.title.getCurrentTitle() | title = mw.title.new(pagename) or mw.title.getCurrentTitle() | ||
end | end | ||
if action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then | if action == 'autoreview' then | ||
error( 'First parameter must be one of edit, move, create, upload', 2 ) | local level = frame:callParserFunction('PENDINGCHANGELEVEL', pagename) | ||
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' then | |||
error( 'First parameter must be one of edit, move, create, upload, autoreview', 2 ) | |||
end | end | ||
if title.namespace == 8 then -- MediaWiki namespace | if title.namespace == 8 then -- MediaWiki namespace | ||
Line 53: | Line 64: | ||
end | end | ||
-- Make | -- Make the protection function usable from wikitext rather than just other lua modules | ||
function p.p(frame) | function p.p(frame) | ||
local | local args = frame.args | ||
return p.main( | local pargs = frame:getParent().args | ||
return p.main(args.action or args[1] or pargs.action or pargs[1], args.title or args[2] or pargs.title or pargs[2], frame) | |||
end | end | ||
return p | return p |