Módulo:Navegación
De MundoConan Wiki
Más acciones
La documentación para este módulo puede ser creada en Módulo:Navegación/doc
-- Módulo:Navegación — cajas de navegación plegables al pie de los artículos.
-- Uso: {{Navegación|título=...|color=negro|grupo1=...|lista1=...|grupo2=...}} (grupos sin límite)
local p = {}
local COLORES = {
azul = true, rojo = true, negro = true, dorado = true, verde = true, morado = true, gris = true,
}
local function limpio(v)
v = v and mw.text.trim(v)
return (v ~= '' and v) or nil
end
function p.caja(frame)
local args = frame:getParent().args
local titulo = limpio(args['título']) or limpio(args.titulo) or 'Navegación'
local color = limpio(args.color)
color = color and COLORES[mw.ustring.lower(color)] and mw.ustring.lower(color) or 'azul'
-- Números de grupo presentes, en orden
local numeros = {}
for k, _ in pairs(args) do
local n = type(k) == 'string' and (k:match('^grupo(%d+)$') or k:match('^lista(%d+)$'))
if n then
numeros[tonumber(n)] = true
end
end
local orden = {}
for n, _ in pairs(numeros) do
table.insert(orden, n)
end
table.sort(orden)
local caja = mw.html.create('div')
:addClass('mc-nav mc-nav--' .. color .. ' mw-collapsible')
:attr('role', 'navigation')
:attr('aria-label', mw.text.killMarkers(titulo))
:attr('data-expandtext', 'mostrar')
:attr('data-collapsetext', 'ocultar')
local plegada = limpio(args.plegada)
if plegada == 'sí' or plegada == 'si' or plegada == 'yes' then
caja:addClass('mw-collapsed')
end
local cab = caja:tag('div'):addClass('mc-nav__titulo')
if limpio(args.enlace) then
cab:wikitext('[[' .. limpio(args.enlace) .. '|' .. titulo .. ']]')
else
cab:wikitext(titulo)
end
local cuerpo = caja:tag('div'):addClass('mw-collapsible-content')
if limpio(args.arriba) then
cuerpo:tag('div'):addClass('mc-nav__arriba'):newline():wikitext(limpio(args.arriba)):newline()
end
for _, n in ipairs(orden) do
local grupo = limpio(args['grupo' .. n])
local lista = limpio(args['lista' .. n])
if lista then
local fila = cuerpo:tag('div'):addClass('mc-nav__fila')
if grupo then
fila:tag('div'):addClass('mc-nav__grupo'):wikitext(grupo)
else
fila:addClass('mc-nav__fila--sin-grupo')
end
fila:tag('div'):addClass('mc-nav__lista'):newline():wikitext(lista):newline()
end
end
if limpio(args.abajo) then
cuerpo:tag('div'):addClass('mc-nav__abajo'):newline():wikitext(limpio(args.abajo)):newline()
end
return frame:extensionTag('templatestyles', '', { src = 'Plantilla:Navegación/styles.css' }) .. tostring(caja)
end
return p