require('strict')
local yesno = require('Module:Yesno')local makeMessageBox = require('Module:Message box').mainlocal 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 = return objend
function box:setArg(key, value) -- This sets a value to be passed to tmbox. if key then self.tmboxArgs[key] = value endend
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 '
Error: Protected edit requests can only be made on the talk page.' end-- String together page names provided local titles = for k, v in pairs(self.args) do if type(k)
0 then pagesText = elseif #titles
titles[1] then pagesText = else for i, v in pairs(titles) do if i
#titles then pagesText = pagesText .. ' and ' else pagesText = pagesText .. ', ' end end end self:setArg('smalltext', "This edit request" .. pagesText .. " has been answered. Set the |answered=
or |ans=
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:exportend
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,)) endend
return setmetatable(p, mt)