Módulo:Zona de pruebas/Agabi10/Ficha de centro educativo
Este módulo no tiene página de documentación[crear]
local z = {}
local argumentos -- Tabla de argumentos con los que se llama a la función
local argumento={} -- Argumentos eliminando los argumentos sin datos
local Entidad -- Tabla con los datos en Wikidata del libro.
-- Ver Wikidata:WikiProject Books para las propicedades posibles
local algunaPropiedadEnlazaWikidata -- Para alguna propiedad no existe la etiqueta ni el enlace mostrándose algo de la forma d:...
-- Módulos utilizados
local ModuloArgumentos = require('Módulo:Argumentos')
local ModuloFicha = require('Módulo:Ficha')
local ModuloIdentificadores = require('Módulo:Identificadores')
local ModuloPaginas = require('Módulo:Páginas')
local ModuloWikidataFormatos = require('Módulo:Wikidata/Formatos')
local ModuloWikidata = require('Módulo:Wikidata')
local ModuloTablas = require('Módulo:Tablas')
local ModuloURL = require('Módulo:URL')
-- Constantes
local enMayusculas = {['formatoTexto'] = 'mayúscula'}
local enMayusculasO = {['formatoTexto'] = 'mayúscula', ['conjunción']=' o '}
local listaNoOrdenada = {['lista'] = 'no ordenada'} --, ['debeExistir'] = 'sí'
local lugar = {['conjunción']=' o ', ['valor-función'] = ModuloWikidataFormatos.formatoLugar}
local debeExistir = {['debeExistir'] = 'sí'}
local conPeriodo = {['lista'] = 'no ordenada', ['formatoTexto'] = 'mayúscula', ['calificativo'] = ModuloWikidataFormatos.formatoPeriodo}
local formatoCoordenadas = {['tipo'] = 'landmark', ['uno'] = 'sí'}
function z.Ficha(frame)
-- Hacer que funcione la función formatBandera y formatoGentilicio
ModuloWikidata:setFrame(frame) -- No funciona si se pone ModuloWikidata.setFrame(marco)
-- Obtener una copia de los argumentos eliminando los argumentos sin valor
local argumento = ModuloArgumentos.obtenerArgumentosConValor(frame)
-- Obtener datos complejos
-- Obtener los datos de la página donde se inserta la ficha de Wikidata.
Entidad = mw.wikibase.getEntityObject() or {}
--if true then
-- return ModuloTablas.tostring(Entidad)
--end
nombre = argumento['nombre'] or argumento['Nombre'] or
obtenerEtiquetaWikidata() or
ModuloPaginas.nombrePagina({desambiguar='sí'})
if argumento['lema'] then
lema = "''" .. argumento['lema'] .. "''" .. (argumento['lemaref'] or '')
end
if argumento['lemaesp'] then
lemaEsp = "«" .. argumento['lemaesp'] .. "»" .. (argumento['lemaespref'] or '')
end
if lema and lemaEsp then
lemaMostrar = lema .. "<br />" .. lemaEsp
else
lemaMostrar = lema or lemaEsp
end
web = propiedad('P856') or argumento['web'] or argumento['página web'] or
argumento['website'] or argumento['sitio web']
twitter = argumento['twitter'] or argumento['Twitter'] or obtenerTwitter()
facebook = argumento['facebook'] or argumento['Facebook'] or obtenerFacebook()
if (not argumento['coordenadas'] == 'no') then
coordenadas = propiedad('P625', formatoCoordenadas)
end
estilotitulo = 'background-color:#5F81AD; color:#FFFFFF'
local Ficha = {
clase = 'biography vcard',
-- Título
tipocabecera = 'libro',
titulo = nombre,
colorfondo = colorfondo,
estilotitulo = estilotitulo,
--Imagen
imagen = argumento['imagen'] or argumento['Imagen'] or
argumento['foto'] or
propiedad('P18', {uno='sí'}),
['tamañoimagen']= argumento['tamaño de imagen'] or argumento['tamaño'] or
argumento['tamaño imagen'] or argumento['tamañoimagen'] or argumento['tamañodelaimagen'] or
argumento['tamaño de foto'] or
'220px', -- or '200px' en la ficha de escritor, 192 en la ficha de artista. Tomo por defecto 220, el tamaño de thumb
pie = argumento['pie de imagen'] or argumento['descripción'] or
argumento['pie de foto'] or argumento['piedefoto'] or
argumento['textoimagen'] or argumento['TextoImagen'] or argumento['texto_imagen'] or
argumento['pie de foto']
,
--Etiquetas y datos
estiloetiqueta = 'width:33%',
estilodatos = 'padding:0.2em; line-height:1.3em; vertical-align:middle;',
{tipo='sección',
estilotitulo = estilotitulo,
{'[[Sigla]]', argumento['sigla'] },
{'[[Acrónimo]]', argumento['acrónimo'] },
{'[[Alias]]', argumento['sobrenombre'] },
{'[[Lema]]', lemaMostrar },
{'Nombre original', argumento['nombre_original'] },
},
{tipo='sección',
['titulo'] = 'Información',
estilotitulo = estilotitulo,
{'Tipo', argumento['tipo'] or argumento['tipo_de_escuela'] },
{'[[Universidad]]', argumento['universidad'] },
{'[[Dotación financiera|Dotación]]', argumento['dotación'] },
{'Afiliación religiosa', argumento['afiliación_religiosa'] },
{'Patron(es)', argumento['patrón'] },
{'Establecida', argumento['establecida'] },
{'Fundación', argumento['fundación'] or argumento['apertura'] },
{'Fundador(es)', argumento['fundador'] },
{'Estatus', argumento['estatus'] },
{'Clausura', argumento['clausura'] or argumento['cierre'] },
{'Distrito escolar', argumento['distrito'] },
{'Género', argumento['género'] },
{'Escuelas hermanas', argumento['escuelas_hermanas'] },
{'Afiliaciones', argumento['afiliaciones'] },
},
{tipo='sección',
['titulo'] = 'Localización',
estilotitulo = estilotitulo,
{'Ubicación', argumento['ubicación'] },
{'Dirección', argumento['dirección'] },
{'[[Coordenadas geográficas|Coordenadas]]', coordenadas },
{'Otras sedes', argumento['sedes'] },
{'[[Campus]]', argumento['campus'] },
},
{tipo='sección',
['titulo'] = 'Academia',
estilotitulo = estilotitulo,
{'Estudiantes', argumento['estudiantes'] },
{'Profesores', argumento['profesores'] },
{'Jornada', argumento['jornada'] },
{'Colores', argumento['colores'] },
{'[[Mascota (símbolo)|Mascota]]', argumento['mascota'] },
},
{tipo='sección',
['titulo'] = 'Administración',
estilotitulo = estilotitulo,
{'Funcionarios', argumento['funcionarios'] },
{'Administrativos', argumento['administrativos'] },
{'Presupuesto', argumento['presupuesto'] },
},
{tipo='sección',
['titulo'] = 'Autoridades',
estilotitulo = estilotitulo,
{'Rector/a', argumento['rector'] },
{'Vicerrector/a', argumento['vicerrector'] },
{'Inspector/a General', argumento['inspector'] },
{'Director/a', argumento['director'] },
{'Vicedirector/a', argumento['vicedirector'] },
{'Coordinador/a', argumento['coordinador'] },
{'Administrador/a', argumento['administrador'] },
},
{tipo='sección', -- Web
clase ='plainlinks',
{'Sitio web', ModuloURL.enlazar(web)},
{'Facebook', facebook and ('[http://www.facebook.com/' .. facebook .. ' ' .. facebook .. ']')}, -- Ver la plantilla facebook
{'Twitter', twitter and ('[http://www.twitter.com/' .. twitter .. ' ' .. twitter .. ']')}, -- Ver la plantilla twitter
},
{tipo='sección',
titulo ='Notas',
estilotitulo='border-top:1px solid #c0c0c0;text-align:left',
{'', argumento['notas'], estilodatos='text-align:left;font-size:90%; line-height:1.2em'}
},
imageninferior = argumento['logo'],
['tamañoimageninferior'] = argumento['logo_tamaño'] or '200px',
}
categorias = ''
if algunaPropiedadEnlazaWikidata then
categorias = '[[Categoría:Wikipedia:Páginas con propiedades de Wikidata sin etiqueta]]'
end
return ModuloFicha.infobox(Ficha) .. categorias
end
-- Función que devuelve la lista de los valores de una propiedad en Wikidata formateados
function propiedad(idPropiedad,opciones)
if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
if not opciones then
opciones = {}
end
opciones['propiedad'] = idPropiedad
valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
if valorPropiedad and valorPropiedad:match('%[%[:d:') then
algunaPropiedadEnlazaWikidata = true
end
return valorPropiedad
end
end
function obtenerEtiquetaWikidata()
if Entidad and Entidad.labels and Entidad.labels.es then
return Entidad.labels.es.value
end
end
function listaDesplegable(titulo, lista, frame)
if not lista then
return
end
return frame:preprocess('{{lista desplegable|título=' .. titulo ..
--'|marco_estilo=border:0; padding:0; border-top:1px solid #c0c0c0;' ..
'|marco_estilo=border:0; padding:0;' ..
'|título_estilo=background:transparent; text-align:left|lista_estilo=padding-left:33%;text-align:left; display:none|1='
.. lista .. '}}')
end
function estaEnlazado(que)
if not que then
return
end
for contenido in que:gmatch("%[%[(.+)]]") do
if not contenido:match('^:d:') then
return que
end
end
end
function obtenerValorCalificativo(Propiedad, Calificativo, ValorPropiedad)
-- Obtener el valor del primer calificativo de la propiedad con el valor recibido
if not Entidad or not Entidad.claims or not Entidad.claims[Propiedad] then
return
end
for k,v in pairs(Entidad.claims[Propiedad]) do
if v.mainsnak
and v.mainsnak.datavalue
and v.mainsnak.datavalue.value
and v.mainsnak.datavalue.value['numeric-id'] == ValorPropiedad
and v.qualifiers
and v.qualifiers[Calificativo]
and v.qualifiers[Calificativo][1]
and v.qualifiers[Calificativo][1].datavalue then
return v.qualifiers[Calificativo][1].datavalue.value
end
end
end
function obtenerFacebook()
return obtenerValorCalificativo('P553' -- cuenta en red social
, 'P554' --dirección en red social
, 355) -- Facebook
or propiedad('P2013'); -- Ejemplo: Gillian Flynn
end
function obtenerTwitter()
return obtenerValorCalificativo('P553' -- cuenta en red social
, 'P554' --dirección en red social
, 918) -- Twitter
end
return z