Jump to content

Module:Effective protection level: Difference between revisions

make the metatable work with the change coming June 5th
(add a metamethod so the action can be passed as the first param to #invoke instead of 'main')
(make the metatable work with the change coming June 5th)
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(frame, action, pagename)
function p._main(action, pagename)
frame = frame or mw.getCurrentFrame()
action = action or frame.args.action or frame.args[1]
pagename = pagename or frame.args.pagename or frame.args[2]
local title
local title
if type(pagename) == 'table' then
if type(pagename) == 'table' then
title = pagename
title = pagename
pagename = title.prefixedText
else
else
title = mw.title.new(pagename) or mw.title.getCurrentTitle()
title = pagename and mw.title.new(pagename) or mw.title.getCurrentTitle()
end
end
pagename = title.prefixedText
if action == 'autoreview' then
if action == 'autoreview' then
local level = frame:callParserFunction('PENDINGCHANGELEVEL', pagename)
local level = mw.getCurrentFrame():callParserFunction('PENDINGCHANGELEVEL', pagename)
if level == 'review' then
if level == 'review' then
return 'reviewer'
return 'reviewer'
Line 34: Line 31:
if level == 'sysop' then
if level == 'sysop' then
return 'sysop'
return 'sysop'
elseif frame:callParserFunction('CASCADINGSOURCES', pagename) ~= '' then -- used by a cascading-protected page
elseif mw.getCurrentFrame():callParserFunction('CASCADINGSOURCES', pagename) ~= '' then -- used by a cascading-protected page
return 'sysop'
return 'sysop'
elseif level == 'templateeditor' then
elseif level == 'templateeditor' then
Line 65: Line 62:


setmetatable(p, { __index = function(t, k)
setmetatable(p, { __index = function(t, k)
return function(frame, ...)
return function(frameOrPagename)
return t.main(frame, k, ...)
if type(frameOrPagename) == 'table' and frameOrPagename.args then
return t._main(k, frame.args[1])
else
return t._main(k, frameOrPagename)
end
end
end
end })
end })


return p
return p
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.