Snowflake SVG animation.svg
¡Vikidia te desea una Feliz Navidad y Próspero Año Nuevo 2020!

¡Anímate a colaborar en Vikidia! Créate una cuenta y disfruta de múltiples beneficios.

Xmas tree.svg

Módulo:Navegación

De Vikidia
Saltar a: navegación, buscar
[editar] [purgar]Template-info.svg Documentación de plantilla

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 está transcluida desde Módulo:Navegación/doc.

Los editores pueden experimentar en la zona de pruebas de la plantilla.

Por favor, añade las categorías e interwikis en la subpágina de documentación. Subpáginas de esta plantilla.
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