Wikipedia
Módulo:Ficha de sitio web
Este módulo no tiene página de documentación[crear]
local p = {} local ModuloArgumentos = require('Módulo:Argumentos') local ModuloFicha = require('Módulo:Ficha') local ModuloWikidata = require('Módulo:Wikidata') local ModuloPaginas = require('Módulo:Páginas') local elementoTabla = require('Módulo:Tablas').elemento --local FormatNum = require('Módulo:Formatnum') local argumentos local Entidadale function p.Ficha(frame) -- :: Inicializador argumentos = ModuloArgumentos.obtenerArgumentosConValor(frame) Entidad = mw.wikibase.getEntity(argumentos.entidad) or mw.wikibase.getEntity(argumentos.id) or {} -- :: Cabecera local Titulo = argumentos['nombre'] or obtenerEtiquetaWikidata() or ModuloPaginas.nombrePagina({desambiguar='sí'}) local Captura = argumentos['captura'] local Pie if Captura then Pie = argumentos['pie'] or '' else Captura, Pie = obtenerImagenWikidata('P18') end if Pie then Pie = '<span style="font-size:smaller">' .. Pie .. '</span>' end local Tamano = argumentos['tamaño'] or '250px' local Logo = argumentos['logo'] or obtenerImagenWikidata('P154') or '' local TamanoLogo = argumentos['tamaño logo'] or argumentos['tamaño_logo'] or '150px' -- :: Datos generales local URL = argumentos['url'] or propiedad('P856',{['enlace']='no', uno='sí'}) local Eslogan = argumentos['eslogan'] or propiedad('P6291',{['lista'] = 'nobullet'}) or '' local Tipo = argumentos['tipo'] or propiedad('P31', {['uno'] = 'sí'}) or '' local Creador = argumentos['creador'] or argumentos['autor'] or propiedad('P170', {['uno'] = 'sí'}) or '' local Propietario = argumentos['propietario'] or propiedad('P127', {['uno'] = 'sí'}) or '' local Operador = argumentos['adoptada por'] or propiedad('P137', {['uno'] = 'sí'}) or '' local Pais = argumentos['país'] or propiedad('P495', {['uno'] = 'sí'}) or '' local Licencia = argumentos['licencia'] or propiedad('P275', {['lista'] = 'nobullet'}) or '' local Plataforma = argumentos['plataforma'] or propiedad('P400', {['lista'] = 'nobullet'}) or '' local Dominio if URL then Dominio = '<span class="plainlinks">[' .. URL .. ' ' .. URL:match('^%w+://([^/]+)') .. ']</span>' end local Comercial = argumentos['comercial'] if Comercial then if Comercial == 'No' or Comercial == 'no' or Comercial == '{{No}}' or Comercial == '{{no}}' then Comercial = frame:preprocess('{{no}}') else Comercial = frame:preprocess('{{sí}}') end end local Registro = argumentos['registro'] if Registro then if Registro == 'No' or Comercial == 'no' or Comercial == '{{No}}' or Comercial == '{{no}}' then Registro = frame:preprocess('{{no}}') else Registro = frame:preprocess('{{sí}}') end end -- :: Idiomas local Idiomas = argumentos['idiomas'] or argumentos['idioma'] or propiedad('P407', {['lista'] = 'nobullet'}) or '' if string.len(Idiomas) > 200 then Idiomas = seccionDesplegable('[[Multilingüe]]', Idiomas, frame) end local Espanol = argumentos['español'] or argumentos['castellano'] or esUnValor(Entidad, 'P407', 'Q1321') if Espanol then Espanol = frame:preprocess('{{sí}}') else Espanol = frame:preprocess('{{no}}') end -- :: Estadísticas local Usuarios = argumentos['usuarios'] or propiedad('P1833', {['lista'] = 'nobullet'}) or '' local Ingresos = argumentos['ingresos'] or propiedad('P2139', {['lista'] = 'nobullet'}) or '' local Alexa = argumentos['alexa'] or propiedad('P1661', {['lista'] = 'nobullet'}) --if Alexa then -- Alexa = FormatNum.FormatNum(Alexa) --end local Estado = argumentos['estado actual'] or argumentos['estado_actual'] or argumentos['estadoactual'] if Estado == 'activo' then Estado = '{{Sí|Activo}}' elseif Estado == 'inactivo' then Estado = '{{No|Inactivo}}' end -- :: Fechas local Lanzamiento = argumentos['fecha_de_lanzamiento'] or argumentos['fecha lanzamiento'] or argumentos['fechalanzamiento'] or argumentos['lanzamiento'] or propiedad('P571', {['linkback'] = 'no'}) or '' local Relanzamiento = argumentos['relanzamiento'] or argumentos['ffecharelanzamiento'] or '' local Cierre = argumentos['cierre'] or argumentos['fechacierre'] or propiedad('P2669', {['linkback'] = 'no'}) or '' -- :: La ficha local TablaFicha = { entidad = argumentos.id, titulo = Titulo, clasetitulo = 'comunicación', estilotitulo = 'background-color: #DCEAEC; color:#000;', estiloseccion = 'background-color: #DCEAEC; color:#000;', estiloetiqueta = 'background-color: #DCEAEC; width:35%', estilodatos = 'width:65%', imagen = Logo, ['tamañoimagen'] = TamanoLogo, imagen2 = Captura, ['tamañoimagen2'] = Tamano, pie2 = Pie, estilopie2 = 'font-size:88%', {tipo='sección', titulo = 'Información general', {'[[Dominio de Internet|Dominio]]', Dominio}, {'Tipo', Tipo}, {'[[Desarrollador de software|Desarrollador]]', Creador}, {'Propietario', Propietario}, {'Operador', Operador}, {'País de origen', Pais}, {'¿Comercial?', Comercial}, {'¿Requiere registro?', Registro}, {'Idiomas disponibles', Idiomas}, {'¿En español?', Espanol}, }, {tipo='sección', estilodatos = 'text-align:left', titulo = 'Datos técnicos', {'Software utilizado', Software}, {'Plataforma', Plataforma}, {'Licencia', Licencia}, }, {tipo='sección', estilodatos = 'text-align:left', titulo = 'Datos históricos', {'Estado actual', Estado}, {'Lanzamiento', Lanzamiento}, {'Relanzamiento', Relanzamiento}, {'Cierre', Cierre}, }, {tipo='sección', estilodatos = 'text-align:left', titulo = 'Estadísticas', {'Usuarios registrados', Registrados}, {'Ranking [[Alexa Internet|Alexa]]', Alexa}, {'Ingresos', Ingresos}, }, {tipo='sección', titulo = 'Artículos relacionados', {'', OtrosArticulos} }, } return ModuloFicha.infobox(TablaFicha) end function obtenerEtiquetaWikidata() if Entidad and Entidad.labels and Entidad.labels.es then return Entidad.labels.es.value end end function obtenerImagenWikidata(propiedad) 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', propiedad,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 -- Si no hay pie de imagen en español comprueba si hay fecha especificada para la imagen piesDeImagen = elementoTabla(imagen, 'qualifiers', 'P585') if piesDeImagen and piesDeImagen[1] then return valorImagen, nombre .. ' en ' .. require('Módulo:Wikidata/Fecha').FormateaFechaHora(piesDeImagen[1].datavalue.value, {['formatoFecha']='año',['enlace']='no'}) 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 function esUnValor(entidad, idPropiedad, idaBuscar) if not entidad or not idPropiedad then return false end local declaracion = elementoTabla(entidad, 'claims', idPropiedad) local idBuscado if not declaracion then return false end for k,v in pairs(declaracion) do idBuscado = elementoTabla(v,'mainsnak','datavalue','value','id') if idBuscado == idaBuscar then return true end end return false end function listaDesplegable(titulo, lista, frame) if not lista then return end return frame:preprocess('{{Lista desplegable|align=left|título='..titulo .. '|1='..lista..'}}') end function seccionDesplegable(titulo, lista, frame) if not lista then return end return frame:preprocess('{{Sección desplegable|align=left|título=' .. titulo .. '|datos='.. lista .. '}}') end function capitalizar(cad) return string.upper(string.sub(cad,1,1)) .. string.sub(cad,2) end function obtenerEnumCalculado(entidad) local valc for k,v in ipairs(clasificacionValores) do valc = esUnValor(entidad, v[0], v[1]) if valc then return v[2] end end end function obtenerValor(entidad, idPropiedad, idValor) local valor = {} if not entidad or not idPropiedad or not idValor then return valor end local declaracion = elementoTabla(entidad, 'claims', idPropiedad) if declaracion then for k, v in pairs(declaracion) do local propBuscado = elementoTabla(v, 'mainsnak', 'datavalue', 'value', 'id') if propBuscado == idValor then table.insert(valor, v) end end end return valor end return p