Módulo:Testes/Gkiyoshinishimoto/Protected edit request
Este módulo ainda está em fase de testes aqui.
Este módulo produz uma caixa de mensagem usada para solicitar edições para páginas protegidas. As solicitações de edição podem ser feitas para páginas protegidas por administradores, protegidas por editores de predefinições e semiprotegidas (ainda estamos "trabalhando" nas semiprotegidas por autorrevisores), e é possível solicitar edições em várias páginas de uma só vez.
Este módulo deve ser utilizado na página de discussão da página a ser editada. Se você não conseguir colocá-lo diretamente nesta página de discussão, poderá especificar a página a ser editada com os parâmetros posicionais. Você também pode especificar diversas páginas a serem editadas, se isso for mais conveniente do que fazer diversas solicitações de edição em locais diferentes.
Sintaxe
editarO módulo possui cinco funções, uma para cada nível de proteção disponível:
Função | Nível de proteção | Predefinição |
---|---|---|
interface |
protegida por administradores de interface | {{Teste/Gkiyoshinishimoto/Edit interface-protected}} |
full |
protegida por administradores | {{Teste/Gkiyoshinishimoto/Edit fully-protected}} |
template |
protegida por editores de predefinições | {{Teste/Gkiyoshinishimoto/Edit template-protected}} |
extended |
protegida por autoconfirmados estendidos | {{Teste/Gkiyoshinishimoto/Edit extended-protected}} |
semi |
Semiprotegida | {{Teste/Gkiyoshinishimoto/Edit semi-protected}} |
Uso básico
{{#invoke:Testes/Gkiyoshinishimoto/Protected edit request|função}}
Especificar as páginas que serão editadas
{{#invoke:Testes/Gkiyoshinishimoto/Protected edit request|função|Primeira página a ser editada|Segunda página a ser editada|...}}
Desativar uma solicitação
{{#invoke:Testes/Gkiyoshinishimoto/Protected edit request|função|answered=yes}}
- Forçar o nível de proteção de uma solicitação em vez de permitir a detecção automática
{{#invoke:Testes/Gkiyoshinishimoto/Protected edit request|função|force=yes}}
- Substituir a verificação "deve estar apenas em uma página de discussão"
{{#invoke:Testes/Gkiyoshinishimoto/Protected edit request|função|skiptalk=yes}}
Todos os parâmetros
{{#invoke:Testes/Gkiyoshinishimoto/Protected edit request|função | Primeira página a ser editada|Segunda página a ser editada|Terceira página a ser editada|... | answered = | ans = | demo = | force = | skiptalk = }}
Categorias
editarA predefinição categoriza a página dependendo do nível de proteção das páginas a serem editadas.
O módulo tenta detectar o nível de proteção das páginas utilizadas. Se uma ou mais páginas estiverem desprotegidas, ou múltiplas páginas com diferentes níveis de proteção forem especificadas, a página será categorizada em Categoria:!Solicitações de edição da Wikipédia possivelmente usando predefinições incorretas. Caso não, se o parâmetro force não estiver definido, elas serão automaticamente categorizadas no nível de proteção correto.
require('strict')
local yesno = require('Módulo:Testes/Gkiyoshinishimoto/Yesno')
local makeMessageBox = require('Módulo:Testes/Gkiyoshinishimoto/Message box').main
local getArgs
local activeBox -- Inicializado preguiçosamente se recebermos uma solicitação ativa
----------------------------------------------------------------------
-- Definição de classe de caixa
----------------------------------------------------------------------
local box = {}
box.__index = box
function box.new(protectionType, args)
local obj = {}
obj.args = args
setmetatable(obj, box)
obj.tmboxArgs = {} -- Usado para armazenar argumentos a serem passados para "tmbox" pelo método "box:export".
-- Define os campos de dados.
obj.tmboxArgs.attrs = { ['data-origlevel'] = protectionType }
return obj
end
function box:setArg(key, value)
-- Isso define um valor a ser passado para "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">Erro: Solicitações de edição protegidas só podem ser feitas na página de discussão.</span>[[Categoria:!Páginas que não são de discussão com uma predefinição de solicitação de edição]]'
end
-- Sequencia os nomes de páginas fornecidos juntos
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 = ' para [[:' .. v .. ']]'
elseif i == #titles then
pagesText = pagesText .. ' e [[:' .. v .. ']]'
else
pagesText = pagesText .. ', [[:' .. v .. ']]'
end
end
end
self:setArg('smalltext', "Esta solicitação de edição" .. pagesText ..
" foi respondida. Defina o parâmetro <code style=\"white-space: nowrap;\">|answered=</code> ou <code style=\"white-space: nowrap;\">|ans=</code> como '''no''' para reativar sua solicitação.")
self:setArg('small', true)
self:setArg('class', 'editrequest')
return makeMessageBox('tmbox', self.tmboxArgs)
end
----------------------------------------------------------------------
-- Processa argumentos e inicializa objetos
----------------------------------------------------------------------
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('Módulo:Testes/Gkiyoshinishimoto/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('Módulo:Testes/Gkiyoshinishimoto/Arguments').getArgs
end
return function (frame)
return t._main(k, getArgs(frame, {wrappers = {'Predefinição:Teste/Gkiyoshinishimoto/Edit fully-protected', 'Predefinição:Teste/Gkiyoshinishimoto/Edit semi-protected', 'Predefinição:Teste/Gkiyoshinishimoto/Edit template-protected', 'Predefinição:Teste/Gkiyoshinishimoto/Edit extended-protected', 'Predefinição:Teste/Gkiyoshinishimoto/Edit interface-protected'}}))
end
end
return setmetatable(p, mt)