Module:Pp-move-indef

From TechInfoDepot
Jump to navigationJump to search
Documentation icon Module documentation[view] [edit] [history] [purge]

This module implements {{pp-move-indef}}. It is a protection template, but has no visible output, unlike other protection templates which output banners or padlock icons. The only output is a category.

If the page is move-protected with either full move protection or template move protection, the module outputs one of the following categories, depending on the namespace it is used in:

On pages that are not full-move-protected or template-move-protected, the module outputs Category:TechInfoDepot pages with incorrect protection templates.

Usage

From wikitext

The usual way to use this module from wikitext is with the {{pp-move-indef}} template. You can also use it from #invoke directly with the code {{#invoke:pp-move-indef|main}}. Neither of these take any parameters, and both only work on the current page.

From Lua

From Lua, load the module like this:

local ppMoveIndef = require('Module:Pp-move-indef').main

You can then use ppMoveIndef like this:

ppMoveIndef(title)

The title parameter is an optional title object, used for testing purposes. If no parameters are supplied the module works on the current page.

-- This module implements [[Template:Pp-move-indef]].

local p = {}

function p.main(title)
	if type(title) == 'string' then
		title = mw.title.new(title)
	elseif type(title) ~= 'table' or not title.text or not title.getContent then
		-- The title parameter is absent or not a title object. It could be a
		-- frame object if we are being called from #invoke.
		title = mw.title.getCurrentTitle()
	end
	
	local level = title
		and title.protectionLevels
		and title.protectionLevels.move
		and title.protectionLevels.move[1]
	local namespace = title and title.namespace

	local category
	if level == 'sysop' or level == 'templateeditor' then
		if namespace == 2 or namespace == 3 then
			category = 'TechInfoDepot move-protected user and user talk pages'
		elseif namespace == 4 or namepace == 12 then
			category = 'TechInfoDepot move-protected project pages'
		elseif namespace == 100 then
			category = 'TechInfoDepot move-protected portals'
		elseif title.isTalkPage then
			category = 'TechInfoDepot move-protected talk pages'
		else
			category = 'TechInfoDepot indefinitely move-protected pages'
		end
	else
		category = 'TechInfoDepot pages with incorrect protection templates'
	end

	return string.format(
		'[[%s:%s|%s]]',
		mw.site.namespaces[14].name, -- "Category"
		category,
		title.text -- equivalent of {{PAGENAME}}
	)
end

return p