Modul:Protected edit request
This is [[MediaWiki:Tagline]]. Set to <code>display:none</code> by chameleon skin.
Module documentation[create]
You might want to create a documentation page for this Scribunto module. Please add categories to the /doc subpage. Subpages of this module. |
require('Module:No globals')
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 = {}
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 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
-- unfortunately with REL1_23 setting of metatable doesn't seem to work.
-- more precisely: setting metatables works, but Scribunto strips them when the module is returned to the mw environment
-- you can thereby use metatables as long as you are within your module. but it gets lost at the final return :(
--[[
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 protected', 'Template:Edit semi-protected', 'Template:Edit template-protected', 'Vorlage:Edit protected', 'Vorlage:Edit semi-protected', 'Vorlage:Edit template-protected'}}))
end
end
return setmetatable(p, mt)
--]]
-- we have to declare a function for each action manually. reason see line 65ff
function p.full(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return p._main('full', getArgs(frame, {wrappers = {'Template:Edit protected', 'Template:Edit semi-protected', 'Template:Edit template-protected', 'Vorlage:Edit protected', 'Vorlage:Edit semi-protected', 'Vorlage:Edit template-protected'}}))
end
function p.semi(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return p._main('semi', getArgs(frame, {wrappers = {'Template:Edit protected', 'Template:Edit semi-protected', 'Template:Edit template-protected', 'Vorlage:Edit protected', 'Vorlage:Edit semi-protected', 'Vorlage:Edit template-protected'}}))
end
function p.template(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return p._main('template', getArgs(frame, {wrappers = {'Template:Edit protected', 'Template:Edit semi-protected', 'Template:Edit template-protected', 'Vorlage:Edit protected', 'Vorlage:Edit semi-protected', 'Vorlage:Edit template-protected'}}))
end
return p