Модуль:Запыт на рэдагаваньне
Дакумэнтацыю да гэтага модуля можна стварыць у Модуль:Запыт на рэдагаваньне/Дакумэнтацыя
require('strict')
local yesno = require('Модуль:ТакНе')
local makeMessageBox = require('Модуль:Вакно паведамленьняў').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 = { ['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()
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">Памылка: Запыты на рэдагаваньне абароненых старонак могуць разьмяшчацца толькі на старонках абмеркаваньняў.</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[k])
end
end
local pagesText
if #titles == 0 then
pagesText = ''
elseif #titles == 1 and mw.title.getCurrentTitle().subjectPageTitle.fullText == titles[1] then
pagesText = ''
else
for i, v in pairs(titles) do
if i == 1 then
pagesText = ' to [[:' .. v .. ']]'
elseif i == #titles then
pagesText = pagesText .. ' and [[:' .. v .. ']]'
else
pagesText = pagesText .. ', [[:' .. v .. ']]'
end
end
end
self:setArg('smalltext', "Гэты [[Вікіпэдыя:Запыты на рэдагаваньне|запыт на рэдагаваньне]]" .. pagesText ..
" быў выкананы. Каб ізноўку актываваць запыт, пастаўце значэньне парамэтру <code style=\"white-space: nowrap;\">|выкананы=</code> ў '''не'''.")
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('Модуль:Запыт на рэдагаваньне/актыўны')(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('Модуль:Аргумэнты').getArgs
end
return function (frame)
return t._main(k, getArgs(frame, {wrappers = {'Шаблён:Запыт на рэдагаваньне', 'Шаблён:Запыт на рэдагаваньне інтэрфэйсу'}}))
end
end
return setmetatable(p, mt)