Modul:Protected edit request

Iz Wikipedije, proste enciklopedije
Documentation icon Dokumentacija modula[predogled] [uredi] [zgodovina] [osveži]

This module produces a message box used to request edits to protected pages. Edit requests can be made for fully protected, template-protected and semi-protected pages, and it is possible to request edits to multiple pages at once.

This module should be used on the talk page of the page to be edited. If you are not able to place it directly on this talk page, then you can specify the page to be edited with the positional parameters. You can also specify multiple pages to be edited, if this is more convenient than making multiple edit requests in different locations.


The module has five functions, one for each available protection level:

Function Protection level Template
interface CSS/JS protection {{edit interface-protected}}
full Full protection {{edit fully-protected}}
template Template protection {{edit template-protected}}
extended Extended confirmed protection {{edit extended-protected}}
semi Semi-protection {{edit semi-protected}}
Basic usage
{{#invoke:protected edit request|function}}
Specify pages to be edited
{{#invoke:protected edit request|function|First page to be edited|Second page to be edited|...}}
Deactivate a request
{{#invoke:protected edit request|function|answered=yes}}
Force a request's protection level rather than allowing auto-detection
{{#invoke:protected edit request|function|force=yes}}
All parameters
{{#invoke:protected edit request|function
| First page to be edited|Second page to be edited|Third page to be edited|...
| answered = 
| ans      = 
| demo     = 
| force    = 


The template categorises the page depending on the protection level of the pages to be edited.

Function Category
interface Category:Wikipedia interface-protected edit requests
full Category:Wikipedia fully-protected edit requests
template Category:Wikipedia template-protected edit requests
extended Category:Wikipedia extended-confirmed-protected edit requests
semi Category:Wikipedia semi-protected edit requests

The module attempts to detect the protection level of the pages used. If one or more of the pages are unprotected, or multiple pages with different protection levels are specified, the page is categorized in Category:Wikipedia edit requests possibly using incorrect templates. Otherwise, if the force parameter is not set, it is automatically categorized in the correct protection level.

require('Modul:No globals')

local yesno = require('Modul:Yesno')
local makeMessageBox = require('Modul:Message box').main
local getArgs

local activeBox -- lazily initialized if we get an active request

-- Box class definition

local box = {}
box.__index = box

function, args)
	local obj = {}
	obj.args = args
	setmetatable(obj, box)
	obj.tmboxArgs = {} -- Used to store arguments to be passed to tmbox by the box:export method.
	-- Set data fields.
	obj.tmboxArgs.attrs = { ['data-origlevel'] = protectionType }
	return obj

function box:setArg(key, value)
	-- This sets a value to be passed to tmbox.
	if key then
		self.tmboxArgs[key] = value

function box:export()
        local title = mw.title.getCurrentTitle()
        local skipCheck = yesno(self.args.demo) or yesno(self.args.skiptalk)
        if not title.isTalkPage and not skipCheck then
		return '<span class="error">Napaka: Zaščitene zahteve za urejanje lahko objavite samo na pogovorni strani.</span>[[Kategorija:Predlogi za spremembo zaščitenih strani izven pogovornih strani]]'

	-- String together page names provided
	local titles = {}
	for k, v in pairs(self.args) do
		if type(k) == 'number' then
			table.insert(titles, self.args[k])
	local pagesText
	if #titles == 0 then
		pagesText = ''
	elseif #titles == 1 and mw.title.getCurrentTitle().subjectPageTitle.fullText == titles[1] then
		pagesText = ''
		for i, v in pairs(titles) do
		    if i == 1 then
		        pagesText = ' to [[:' .. v .. ']]'
		    elseif i == #titles then
		        pagesText = pagesText .. ' and [[:' .. v .. ']]'
		        pagesText = pagesText .. ', [[:' .. v .. ']]'
	self:setArg('smalltext', "Ta [[Wikipedia:Edit requests|predlog za ureditev]]" .. pagesText ..
		" je bil odgovorjen. Postavi parameter <code style=\"white-space: nowrap;\">&#124;odgovor&#61;</code> ali <code style=\"white-space: nowrap;\">&#124;ans&#61;</code> na '''ne''' za reaktivacijo zahteve.")
	self:setArg('small', true)
	self:setArg('class', 'editrequest')
	return makeMessageBox('tmbox', self.tmboxArgs)

-- Process arguments and initialise objects

local p = {}

function p._main(protectionType, args)
	local boxType = box
	if not yesno(args.answered or args.ans, true) then
		if not activeBox then
			activeBox = require('Modul:Protected edit request/active')(box, yesno, makeMessageBox)
		boxType = activeBox
	local requestBox =, args)
	return requestBox:export()

local mt = {}

function mt.__index(t, k)
	if not getArgs then
		getArgs = require('Modul:Arguments').getArgs
	return function (frame)
		return t._main(k, getArgs(frame, {wrappers = {'Predloga:Edit fully-protected', 'Predloga:Edit semi-protected', 'Predloga:Edit template-protected', 'Predloga:Edit extended-protected', 'Predloga:Edit interface-protected'}}))

return setmetatable(p, mt)