(Translated by https://www.hiragana.jp/)
Module:Infobox — Wikipédia Aller au contenu

Module:Infobox

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 16 mars 2013 à 13:19 et modifiée en dernier par Tpt (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

 Documentation[voir] [modifier] [historique] [purger]

Module pour la création d'infobox à partir d'un sous-module de paramétrage de l'infobox, de paramètres passés à un modèle et, le cas échéant, de données de Wikidata.

build(frame)

Fonction à utiliser depuis un modèle, elle ne prend qu'un paramètre direct, nom, le nom du sous-module où est définie la structure de l'infobox. Par exemple Modèle:Infobox Tapis persan contient {{#invoke:Infobox|build|nom=Tapis persan}}, indiquant qu'il faut utiliser Module:Infobox/Tapis persan. Les paramètres passés au modèles sont disponibles dans le Module:Infobox/Localdata, qui peut être appelé depuis les sous-modules. Les classes css des infobox (actuellement infobox_v3 et noarchive) sont gérées par Modèle:Classes début infobox.

La structure de l'infobox est définie par une table contenue dans un sous-module, et dont le format est :

{
 maincolor = '#XXXXXX' -- couleur à utiliser par défaut pour les titres et les sous titre
 parts = {} -- les différentes sous-parties de l'infobox
}

La partie parts contient elle-même des tables, ou des fonctions utilisant les variables localdata et item pour créer des tables. Pour une liste des types de données acceptés, et des conseils pratiques, voir Aide:Infobox en Lua.

local Infobox = {}

function Infobox:new( args )
    --Object initialisation
    local object = {
        text = "",
        title = mw.title.getCurrentTitle()
    }
    setmetatable(object, {
        __index = Infobox,
        __tostring = function( self ) return self:tostring() end
    })

    --Open main div
    local str = '<div class="infobox_v3 '
    if args.class then
        str = str .. args.class
    end
    str = str ..'"'
    if args.width then
        str = str .. ' style="width: ' .. args.width .. 'em"'
    end
    object.text = str .. '>'
    return object
end

function Infobox:addTitle( args )
    local str = '<p class="entete '
    if args.icon then
        str = str .. 'icon ' .. args.icon
    end
    if args.class then
        str = str .. args.class
    end
    str = str .. '"'
    if args.background then
        local style = {}
        style['background-color'] = args.background
        if args.border-color then
            style['border-color'] = args.border-color
        else
            style['border-color'] = args.background
        end
        if args.color then
            style['color'] = args.color
        end
        str = str .. 'style="' .. formatStyle( style ) .. '"'
    end
    str = str .. '>'
    if args.text then
        str = str .. args.text
    else
        str = str .. self.title.text
    end
    self.text = self.text .. str .. '</p>'
end

function Infobox:tostring()
    return self.text .. '</div>'
end

--Create a style property value from an array CSS property = CSS value
function formatStyle( args )
    local elems = {}
    for args = key, val do
        elems.add( key .. ':' .. val )
    end
    return table.concat( elems, '; ' )
end

local p = {}
function p.new( args )
    return Infobox:new( args )
end
function p.test()
    local a = Infobox:new( {} )
    a:addTitle( {} )
    return a
end
return p