Difference between revisions of "Module:Effective protection level"

From EVE RP Wiki
Jump to: navigation, search
rp>Pppery
(Copy from enwiki, then update for this wiki's config)
(Blanked the page)
Line 1: Line 1:
−
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 ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then
 
−
error( 'First parameter must be one of edit, move, create, upload', 2 )
 
−
end
 
−
if title.namespace == 8 then -- MediaWiki namespace
 
−
if 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
 
−
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 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 'sysop'
 
−
elseif title.namespace == 6 then
 
−
return 'sysop'
 
−
else
 
−
return 'autoconfirmed'
 
−
end
 
−
end
 
−
local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename)
 
−
if blacklistentry then
 
−
if not blacklistentry.params.autoconfirmed then
 
−
return 'sysop'
 
−
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 'uploader'
 
−
else
 
−
return '*'
 
−
end
 
−
end
 
−
 
−
setmetatable(p, { __index = function(t, k)
 
−
return function(frame)
 
−
return t._main(k, frame.args[1])
 
−
end
 
−
end })
 
−
 
−
return p
 

Revision as of 14:26, 25 April 2020

Documentation for this module may be created at Module:Effective protection level/doc