Module:Effective protection level: Difference between revisions

Nothing to hide, but nothing to show you either.
Jump to navigation Jump to search
Content added Content deleted
(don't bother checking our own frame)
(detect cascading protection)
Line 20: Line 20:
return 'sysop'
return 'sysop'
else
else
return frame:callParserFunction('PROTECTIONLEVEL', action, pagename)
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'
end
return level
end
end
end
end

Revision as of 19:44, 16 January 2014

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

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 frame = mw.getCurrentFrame()
	local title
	if type(pagename) == 'table' then
		title = pagename
		pagename = title.prefixedText
	else
		title = mw.title.new(pagename) or mw.title.getCurrentTitle()
	end
	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
		return 'sysop'
	elseif title.namespace == 2 and ( mw.ustring.find( pagename, '/.*%.js$') or mw.ustring.find( pagename, '/.*%.css$') ) then -- user .js or .css page
		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'
		end
		return level
	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

return p