Module:Protected edit request
Appearance
require('Module:No globals')
local yesno = require('Module:Yesno')
local makeMessageBox = require('Module:Message box').main
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 = {}
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
end
function box:setArg(key, value)
-- This sets a value to be passed to tmbox.
if key then
self.tmboxArgs[key] = value
end
end
function box:export()
self:setArg('smalltext', "This [[Wikipedia:Edit requests|edit request]] has been answered. Set the <code style=\"white-space: nowrap;\">|answered=</code> or <code style=\"white-space: nowrap;\">|ans=</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 function makeWrapper(protectionType)
return function (frame)
-- If called via #invoke, use the args passed into the invoking template, or the args passed to #invoke if any exist.
-- Otherwise assume args are being passed directly in from the debug console or from another Lua module.
local origArgs
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
for k, v in pairs(frame.args) do
origArgs = frame.args
break
end
else
origArgs = frame
end
-- Trim whitespace and remove blank arguments.
local args = {}
for k, v in pairs(origArgs) do
if type(v) == 'string' then
v = mw.text.trim(v)
end
if v ~= '' then
args[k] = v
end
end
return p.main(protectionType, args)
end
end
local funcNames = {'semi', 'template', 'full'}
for _, funcName in ipairs(funcNames) do
p[funcName] = makeWrapper(funcName)
end
return p