Módulo:Ficha de código de estado HTTP

Uso


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.getEntity(argumentos.id) or {}
    local colorPrimario
    local colorSecundario
    local Titulo = argumentos['título'] or obtenerEtiquetaWikidata() or ModuloPaginas.nombrePagina({desambiguar='sí'})

    -- Obtener colores de fichas
    local catCod = string.sub(Titulo, -3,-3)
    if catCod == "1" then
        colorPrimario = "#b0c4de"
        colorSecundario = "#d8e2ee"
    elseif catCod == "2" then
        colorPrimario = "#8fbc8f"
        colorSecundario = "#afdeaf"
    elseif catCod == "3" then
        colorPrimario = "#ffdead"
        colorSecundario = "#fbe7c9"
    elseif catCod == "4" then
        colorPrimario = "#ffa07a"
        colorSecundario = "#f9d9cd"
    elseif catCod == "5" then
        colorPrimario = "#ff5050"
        colorSecundario = "#f99999"
    else
        colorPrimario = "#ccccff"
        colorSecundario = "#ddddff"
    end

    -- Propiedades
    local Imagen = argumentos['captura']
    local Pie
    if Imagen then
        Pie = argumentos['pie']
    else
        Imagen, Pie = obtenerImagenWikidata()
    end
    local Tamano = argumentos['tamaño'] or "250px"
    local Codigo = argumentos['código'] or string.sub(Titulo, -3) or ''
    local Texto = argumentos['texto'] or propiedad('P1451') or ''
    local RFC = argumentos['rfc'] or propiedad('P892') or ''
    local Creador = argumentos['creador'] or propiedad('P170', {['enlace']='sí', ['linkback']='sí'}) or ''
    local Uso = argumentos['uso'] or propiedad('P366') or ''
    local FichaCodigo = {
        entidad = argumentos.id,
        titulo  = Titulo,
        clasetitulo = 'comunicación',
        estilotitulo = 'background-color:' .. colorPrimario .. '; color:#000;',
        estiloseccion = 'background-color:' .. colorPrimario .. '; color:#000;',
        estiloetiqueta = 'background-color:' .. colorSecundario .. '; width:35%',
        estilodatos = 'width:65%',
        imagen = Imagen,
        ['tamañoimagen'] = Tamano,
        pie = Pie,
        estilopie = 'font-size:88%',
        {tipo='sección',
            titulo = "Información",
            {'Código de estado', Codigo},
            {'Texto asociado', Texto},
            {'[[Request For Comments|RFC]]', 'RFC ' .. RFC},
            {'Creador', Creador},
            {'Uso', Uso},
        }
    }
    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
    -- 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

return p