local p = {}
local ModuloArgumentos = require('Módulo:Argumentos')
local ModuloFicha = require('Módulo:Ficha')
local ModuloWikidata = require('Module:Wikidata')
local ModuloPaginas = require('Módulo:Páginas')
local elementoTabla = require('Módulo:Tablas').elemento
local argumentos
local Entidad
function p.Ficha(frame)
argumentos = ModuloArgumentos.obtenerArgumentosConValor(frame)
Entidad = mw.wikibase.getEntityObject(argumentos.id) or {}
local Imagen = argumentos['imagen']
local Pie
if Imagen then
Pie = argumentos['pie']
else
Imagen, Pie = obtenerImagenWikidata()
end
local Titulo = argumentos['título'] or obtenerEtiquetaWikidata() or ModuloPaginas.nombrePagina({desambiguar='sí'})
local MIME = argumentos['mime'] or propiedad('P1163') or ""
local Alias = argumentos['alias'] or propiedad('P742') or ""
local Estandar = argumentos['estándar'] or propiedad('P361') or ""
local Idioma = argumentos['idioma'] or propiedad('P407') or ""
local Estado = argumentos['estado'] or ""
local Anterior = argumentos['anterior'] or propiedad('P155') or ""
local Siguiente = argumentos['siguiente'] or propiedad('P156') or ""
local FichaCodigo = {
entidad = argumentos.id,
titulo = Titulo,
clasetitulo = 'informática',
estilotitulo = 'background-color: #ccccff; color:#000;',
estiloseccion = 'background-color: #ccccff; color:#000;',
estiloetiqueta = 'background-color: #ddddff; width:35%',
estilodatos = 'width:65%',
imagen = Imagen,
['tamañoimagen'] = Tamano,
pie = Pie,
estilopie = 'font-size:88%',
{'[[MIME Type]]', MIME},
{'Alias', Alias},
{'Estándar', Estandar},
{'Idioma', Idioma},
{'Estado', Estado},
{'Anterior', Anterior},
{'Siguiente', Siguiente},
}
return ModuloFicha.infobox(FichaCodigo)
end
function obtenerEtiquetaWikidata()
if Entidad and Entidad.labels and Entidad.labels.es then
return Entidad.labels.es.value
end
end
function obtenerImagenWikidata()
local imagen, valorImagen, piesDeImagen, k, pieDeImagen
if not Entidad then
return
end
-- Obtener la primera imagen en Wikidata de la persona
local imagen = elementoTabla(Entidad, 'claims','P18',1)
if not imagen then
return
end
valorImagen = elementoTabla(imagen, 'mainsnak','datavalue','value')
piesDeImagen = elementoTabla(imagen, 'qualifiers','P2096')
-- Encontrar el pie en español
if piesDeImagen then
for k,pieDeImagen in pairs(piesDeImagen) do
if pieDeImagen.datavalue.value.language == 'es' then
return valorImagen, pieDeImagen.datavalue.value.text
end
end
end
-- Sin pie de imagen en español
return valorImagen
end
function propiedad(idPropiedad,opciones)
if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
if not opciones then
opciones = {['linkback']='sí'}
end
opciones.entityId = Entidad.id
opciones.propiedad = idPropiedad
valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
return valorPropiedad
end
end
return p