Module:Infobox
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.
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (modifier).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
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