Favicon Vikidia.png
¡Vikidia te necesita!Face-wink.svg
Corazón.svg

Actualmente tenemos 6582 artículos. ¡Anímate! Face-smile.svg a crear los artículos solicitados

Módulo:Navegación

De Vikidia
Ir a la navegación Ir a la búsqueda
Test Template Info-Icon - Version (2).svg Documentación de módulo

Este módulo permite crear plantillas de navegación con un estilo unificado.

Funciones

Navegacion(table args)

Crea una lista HTML, con los valores pasados en la secuencia args. La estructura de dicha tabla es la siguiente:

Parámetro Descripción
string pc Una cadena RGB válida, para especificar el color principal, y la base del color terciario.
string sc Una cadena RGB válida, para especificar el color secundario.
string título Una cadena, para especificar el título.
string img Una cadena, que se mostrará a la derecha en un recuadro.
table cabecera Una secuencia, donde cada elemento formará parte de una lista provista por el módulo Lista, y se mostrará justo después del título.
table pie Ídem del anterior, con la diferencia de que la lista se mostrará al final de la tabla.
table lista Una secuencia de tablas, que representan cada fila de la navegación. Su estructura se muestra en la siguiente tabla.
Estructura de la tabla lista
Parámetro Descripción
string título Una cadena, que contendrá el título de la fila.
table elementos Una secuencia de cadenas, donde cada cadena representa un elemento de la lista.

Retorna una cadena HTML con un elemento <div class="navbox">.

_Navegacion(frame frame)

Interfaz wikitexto. Es usada por {{Navegación}}. Retorna lo devuelto por Navegacion.

Esta documentación se encuentra en la subpágina Módulo:Navegación/doc (editar | historial)
Por favor, incluye las categorías a la subpágina /doc. Subpáginas de este módulo.

local z = {}
local modUtilidades = require('Módulo:Utilidades')
local modLista = require('Módulo:Lista')

function z.Navegacion(args)
  if not (args['título'] and args['título'] ~= '') then
    return ''
  end
  local navb = mw.html.create('div')
  navb
   :addClass('navbox')
   :attr('role', 'navigation')
   :css('--pc', args.pc)
   :css('--sc', args.sc)
   :css('--tc', args.pc..'70')
   :css('--img', args.img and '3' or '4')
  local navbtitle = navb:tag('div')
  navbtitle:wikitext(args['título'])
  local num = 0
  local lista = {}
  for k, v in ipairs(args.lista) do
    num = num + 1
    local navbrow = mw.html.create('div')
    navbrow
     :addClass('navb-fila')
     :css('--n', tostring(2 + num))
    local navbrowt = navbrow:tag('div')
    navbrowt:wikitext('<span>'..v['título']..'</span>')
    local navbrowc = navbrow:tag('div')
    navbrowc:wikitext(modLista.Lista({'h',' • ', ' • ', v['elementos']}))
    table.insert(lista, navbrow)
  end
  navb:css('--nl', num)
  if args.img then
    local navbimg = navb:tag('div')
    navbimg
     :addClass('navb-img')
     :css('--n', tostring(3 + num))
     :wikitext(args.img)
  end
  if args.cabecera and #args.cabecera ~= 0 then
    local navbhead = navb:tag('div')
    navbhead
     :addClass('navb-cabecera')
     :wikitext(modLista.Lista({'h',' • ', ' • ', args.cabecera}))
  end
  for i, v in ipairs(lista) do
    navb:node(v)
  end
  if args.pie and #args.pie ~= 0 then
    local navbfoot = navb:tag('div')
    navbfoot
     :addClass('navb-pie')
     :wikitext(modLista.Lista({'h',' • ', ' • ', args.pie}))
  end
  return tostring(navb)
end

function z._Navegacion(frame)
  local argumentos = modUtilidades.eliminarArgSinValor(mw.getCurrentFrame():getParent().args)
  local estilo = modUtilidades.esquemasColores[argumentos.estilo or 'indigo']
  local params = {
    ['pc'] = estilo[1],
    ['sc'] = estilo[2],
    ['título'] = argumentos['título'],
    ['img'] = argumentos.imagen,
    ['cabecera'] = {},
    ['pie'] = {},
    ['lista'] = {}
  }
  local pos
  for k, v in pairs(argumentos) do
    if string.find(k,'^arriba%d+$') then
      params.cabecera[tonumber(string.match(k,'%d+$'))] = v
    elseif string.find(k,'^abajo%d+$') then
      params.pie[tonumber(string.match(k,'%d+$'))] = v
    elseif string.find(k,'^grupo%d+$') then
      pos = tonumber(string.match(k,'%d+$'))
      local listaObj = {['título'] = '', ['elementos'] = {}}
      listaObj['título'] = v
      local i = 0
      repeat
        i = i + 1
        local p = 'lista'..tostring(pos)..'-'..tostring(i)
        if argumentos[p] then
          table.insert(listaObj['elementos'], argumentos[p])
        else
          break
        end
      until false
      params.lista[pos] = listaObj
    end
  end
  return z.Navegacion(params)
end

return z