Editing Module:Effective protection level
From MINR.ORG WIKI
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
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. | + | function p.main(action, pagename) |
+ | local frame = mw.getCurrentFrame() | ||
local title | local title | ||
− | if type(pagename) == 'table' | + | if type(pagename) == 'table' then |
title = pagename | title = pagename | ||
− | + | pagename = title.prefixedText | |
− | |||
else | else | ||
− | title = 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 | + | error( 'First parameter must be one of edit, move, create, upload', 2 ) |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | error( 'First parameter must be one of edit, move, create, upload | ||
end | end | ||
if title.namespace == 8 then -- MediaWiki namespace | if title.namespace == 8 then -- MediaWiki namespace | ||
return 'sysop' | return 'sysop' | ||
− | elseif title.namespace == 2 and | + | elseif title.namespace == 2 and ( mw.ustring.find( pagename, '/.*%.js$') or mw.ustring.find( pagename, '/.*%.css$') ) then -- user .js or .css page |
return 'sysop' | return 'sysop' | ||
− | + | else | |
− | + | local level = frame:callParserFunction('PROTECTIONLEVEL', action, pagename) | |
− | + | if level == 'sysop' then | |
− | + | return 'sysop' | |
− | + | elseif frame:callParserFunction('CASCADINGSOURCES', pagename) ~= '' then -- used by a cascading-protected page | |
− | + | return 'sysop' | |
− | |||
− | |||
− | |||
− | |||
− | if | ||
− | |||
− | |||
− | |||
− | |||
− | return ' | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | return ' | ||
− | |||
− | |||
end | end | ||
− | |||
− | |||
− | |||
return level | return level | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
end | end | ||
− | + | -- Make this usable from wikitext rather than just other lua modules | |
− | + | function p.p(frame) | |
− | + | local parent = frame:getParent() | |
− | + | return p.main(parent.args.action or parent.args[1], parent.args.title or parent.args[2]) | |
− | end | + | end |
return p | return p |