Mòdulu:Protezione
Aspettu
Istruzzioni pi l'usu
Chistu è un mòdulu scrittu 'n Lua. L'istruzzioni appressu sunnu nnâ suttapàggina Mòdulu:Protezione/doc (cancia · crunuluggìa)
Sandbox: Mòdulu:Protezione/sandbox (cancia · crunuluggìa) · Suttapàggini: lista · Test: Mòdulu:Protezione/test (cancia · crunuluggìa · abbìa)
Chistu è un mòdulu scrittu 'n Lua. L'istruzzioni appressu sunnu nnâ suttapàggina Mòdulu:Protezione/doc (cancia · crunuluggìa)
Sandbox: Mòdulu:Protezione/sandbox (cancia · crunuluggìa) · Suttapàggini: lista · Test: Mòdulu:Protezione/test (cancia · crunuluggìa · abbìa)
Mòdulu che 'mplementa lu template {{Prutetta}}.
Havi na suttapàggina di configurazziuni: Mòdulu:Protezione/Configurazione.
--[[
* Mòdulu ca 'mplementa lu template Prutetta.
]]--
require('strict')
local getArgs = require('Mòdulu:Arguments').getArgs
local cfg = mw.loadData('Mòdulu:Protezione/Configurazione')
-- Restituisce la prutizzioni della pàggina per l'azione richiesta o nil se non prutetta.
--
-- @param {table} title
-- @param {string} action
-- @return {string}
local function getProtection(title, action)
return title.protectionLevels[action] and title.protectionLevels[action][1]
end
-- Aggiunge l'icona per l'azione e la prutizzioni specificate.
--
-- @param {string} action
-- @param {string} prot
local function addIcon(action, prot)
-- l'underscore di move serve per cambiare l'ordine di visualizzazione delle icone
local icon = string.format('<indicator name="prot%s">%s</indicator>',
action == 'move' and '_move' or action, cfg.icone[action][prot])
mw.getCurrentFrame():preprocess(icon)
end
-- Restituisce il messaggio configurato per il tipo di azione e prutizzioni sulla pagina specificata.
--
-- @param {table} title
-- @param {string} action
-- @param {string} prot
-- @return {string}
local function getMsg(title, action, prot)
local msg = cfg.messaggi[action][prot][title.namespace]
return msg and msg:gsub('$1', string.format('[[%s|pagina di discussione]]', title.talkPageTitle.fullText)) or nil
end
-- Restituisce la catigurìa configurata per il tipo di azione e prutizzioni nta pàggina specificata.
--
-- @param {table} title
-- @param {string} action
-- @param {string} prot
-- @return {string}
local function getCategory(title, action, prot)
local categories = cfg.categorie[action]
local cat = categories[title.namespace] or categories.default
if prot == 'autoconfirmed' then
cat = cat .. ' parzialmente'
end
return string.format('[[Catigurìa:%s]]', cat)
end
-- Restituisci a catigurìa arbitraria scelta dall'utente.
--
-- @param {string} editProt
-- @param {table} args
-- @return {string}
local function getUserCategory(editProt, args)
local cat
if editProt == 'sysop' then
cat = args.cat .. ' ' .. (args.generecat == 'm' and 'prutetti' or 'protette')
elseif editProt == 'autoconfirmed' then
cat = args.cat .. ' ' .. (args.generecat == 'm' and 'prutetti parzialmenti' or 'protette parzialmente')
end
return cat and string.format('[[Catigurìa:%s]]', cat) or nil
end
-- =============================================================================
-- Funzioni esportate
-- =============================================================================
local p = {}
-- Funzione per l'utilizzo da un altro mòdulu.
function p._main(args)
local title, editProt, moveProt, editCat, moveCat, msg, ret
title = mw.title.getCurrentTitle()
editProt = getProtection(title, 'edit')
moveProt = getProtection(title, 'move')
-- moveProt=autoconfirmed è già il default in itwiki
if moveProt == 'autoconfirmed' then
moveProt = nil
end
-- prutizzioni per la modifica
if editProt then
addIcon('edit', editProt)
msg = getMsg(title, 'edit', editProt)
-- lu paràmitru "cat" permette di specificare na catigurìa arbitraria
if args.cat then
editCat = getUserCategory(editProt, args)
else
editCat = getCategory(title, 'edit', editProt)
end
end
-- prutizziuni per lo spostamento
if moveProt then
addIcon('move', moveProt)
-- a catigurìa per lo spostamento non è aggiunta se editProt=sysop
if editProt ~= 'sysop' then
moveCat = getCategory(title, 'move', moveProt)
end
end
if editProt or moveProt then
ret = (msg or '') .. (editCat or '') .. (moveCat or '')
else
-- la pàggina non è prutetta
if title.namespace == 10 and title.isSubpage and title.subpageText:match('^[Ss]andbox$') then
ret = '[[Catigurìa:Sandbox dei template]]'
else
ret = string.format('[[Catigurìa:%s]]', cfg.catSprotette)
end
end
return ret
end
-- Funzione per il template {{Prutetta}}.
function p.main(frame)
return p._main(getArgs(frame, { parentOnly = true }))
end
return p