Модуль:Protected edit request

![]() | Цей модуль позначено як К:такий, що потребує захищеного статусу (92). Завершені модулі використовуються в дуже великій кількості статей, або часто використовуються як підстановки. Позаяк акти вандалізму або помилки можуть вплинути на багато сторінок і навіть незначне редагування призведе до істотного навантаження на сервери, вони підлягають захисту від редагувань. |
![]() | Цей модуль Lua використовується на багатьох сторінках і його зміни будуть дуже помітними. Будь ласка, перевіряйте будь-які зміни на підсторінках /пісочниці та /тестів цього модуля, або у вашій пісочниці модуля, та зважайте на обговорення змін на сторінці обговорення перед їхнім впровадженням. |
![]() | Цей модуль залежить від наступних модулів: |
Цей модуль створює контейнер повідомлень, які використовуються, щоб робити запити на редагування захищених. Запити на редагування можна роботи для повністю захищених або частково захищених сторінок. Крім того, код модуля містить закоментований код, що може забезпечити, при бажані, роботу запитів на редагування одночасно кількох сторінок.
Цей модуль повинен використовуватися лише на сторінках обговорення сторінок, на яких потрібно внести зміни.
Синтаксис
[ред. код]Модуль має три функції, доступні для кожного рівня захисту:
Функція | Рівень захисту | Шаблон |
---|---|---|
full |
Повний захист | {{Editprotected}} |
semi |
Частковий захист | {{Editsemiprotected}} |
Просте використання
{{#invoke:protected edit request|функція}}
Виконаний запит
{{#invoke:protected edit request|функція|виконано=так}}
Відхилений запит
{{#invoke:protected edit request|функція|виконано=ні}}
Відхилений запит із поясненням причини
{{#invoke:protected edit request|функція|виконано=ні|причина=Не вказано авторитетні джерела}}
Додати власну категорію для запиту
{{#invoke:protected edit request|функція|категорія=[[Категорія:Приклад]]}}
Вимкнути категоризацію
{{#invoke:protected edit request|функція|nocat=так}}
- Примусити використати вказаний рівень захисту в запиті на редагуванні, ніж автоматично його визначити
{{#invoke:protected edit request|функція|force=так}}
- Перезаписати перевірку «повинно бути лише на сторінці обговорення»
{{#invoke:protected edit request|функція|skiptalk=так}}
Усі параметри
{{#invoke:protected edit request|функція | причина, чому відхилено | виконано = | done = | причина = | категорія = | category = | nocat = | demo = | force = | skiptalk = }}
Категорії
[ред. код]Шаблон категоризує сторінку залежно від рівня захисту сторінки, до якої потрібно внести зміни. Якщо вказано параметр |категорія=
, то буде використано вказану категорію.
Функція | Категорія |
---|---|
full |
Категорія:Запити на редагування захищених сторінок |
semi |
Категорія:Запити на редагування частково захищених сторінок |
Модуль намагається визначити рівень захисту сторінки, на якій він використаний. Якщо не вказано параметр |force=
, то він автоматично категоризує до відповідного рівня захисту.
Документація вище включена з Модуль:Protected edit request/документація. (ред. | історія) Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та протестувати зміни (ред.) цього модуля. Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки. |
require('strict')
local yesno = require('Модуль:Yesno')
local makeMessageBox = require('Модуль: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 = { ['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>' .. (self.args.nocat and '[[Category:Non-talk pages with an edit request template]]' or '')
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
local smalltext, image
if yesno(self.args.done) then
smalltext = 'Запит виконано'
image = '[[Файл:Symbol confirmed.svg|20px]]'
else
self.args['причина'] = self.args['причина'] or self.args[1]
smalltext = 'Запит відхилено' .. (self.args['причина'] and ('<br/><span style=font-size:smaller>' .. self.args['причина'] .. '</span>') or '')
image = '[[Файл:Symbol declined.svg|20px]]'
end
self:setArg('smalltext', smalltext)
self:setArg('image', image)
self:setArg('small', true)
self:setArg('class', 'editrequest')
self:setArg('style', 'min-height:30px;')
return makeMessageBox('tmbox', self.tmboxArgs)
end
----------------------------------------------------------------------
-- Process arguments and initialise objects
----------------------------------------------------------------------
local p = {}
function p._main(protectionType, args)
local boxType = box
args.done = args.done or args['виконано']
if not args.done then
if not activeBox then
activeBox = require('Модуль: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('Модуль:Arguments').getArgs
end
return function (frame)
return t._main(k, getArgs(frame, {wrappers = {'Шаблон:Editprotected', 'Шаблон:Editsemiprotected'--[[, 'Template:Edit template-protected', 'Template:Edit extended-protected', 'Template:Edit interface-protected', 'Template:Edit protected']]}}))
end
end
return setmetatable(p, mt)