Tu banner alternativo

Module:Protected edit request

In today's world, Module:Protected edit request has become a topic of interest and debate in different areas. Whether in the personal, social, political or technological sphere, Module:Protected edit request has generated a great impact and has aroused the curiosity and interest of people of all ages and professions. Over time, Module:Protected edit request has evolved and taken different forms, adapting to the needs and demands of modern society. In this article, we will explore in detail the role and influence of Module:Protected edit request today, analyzing its importance, its impact and the different perspectives that exist on this topic.

Tu banner alternativo

require('strict')

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

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

----------------------------------------------------------------------
-- Box class definition
----------------------------------------------------------------------

local box = {}
box.__index = box

function box.new(protectionType, 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 = {  = protectionType }
	return obj
end

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

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">Error: Protected edit requests can only be made on the talk page.</span>]'
	end

	-- 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)
		end
	end
	local pagesText
	if #titles == 0 then
		pagesText = ''
	elseif #titles == 1 and mw.title.getCurrentTitle().subjectPageTitle.fullText == titles then
		pagesText = ''
	else 
		for i, v in pairs(titles) do
		    if i == 1 then
		        pagesText = ' to ]'
		    elseif i == #titles then
		        pagesText = pagesText .. ' and ]'
		    else
		        pagesText = pagesText .. ', ]'
		    end
		end
	end
	
	self:setArg('smalltext', "This ]" .. pagesText ..
		" has been answered. Set the <code style=\"white-space: nowrap;\">&#124;answered&#61;</code> parameter to '''no''' to reactivate your request.")
	self:setArg('small', true)
	self:setArg('class', 'editrequest')
	return makeMessageBox('tmbox', self.tmboxArgs)
end

----------------------------------------------------------------------
-- 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('Module:Protected edit request/active')(box, yesno, makeMessageBox)
		end
		boxType = activeBox
	end
	local requestBox = boxType.new(protectionType, args)
	return requestBox:export()
end

local mt = {}

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

return setmetatable(p, mt)