« Module:Infobox/Core » : différence entre les versions
De Nefald
Autres actions
erreur suite implémentation CSS |
Coordonnées |
||
Ligne 57 : | Ligne 57 : | ||
for _, champ in ipairs(section.champs or {}) do | for _, champ in ipairs(section.champs or {}) do | ||
if args[champ.cle] and args[champ.cle] ~= '' then | -- Cas spécial pour les coordonnées de spawn | ||
if champ.cle == 'spawn' and args.x and args.x ~= '' and args.y and args.y ~= '' and args.z and args.z ~= '' then | |||
local rowDiv = mw.html.create('div') | |||
:addClass('infobox-row') | |||
local labelDiv = mw.html.create('div') | |||
:addClass('infobox-label') | |||
:wikitext(champ.label) | |||
local valueDiv = mw.html.create('div') | |||
:addClass('infobox-value') | |||
-- Construction du lien vers la carte | |||
local mapUrl = string.format('[https://map.nefald.fr/?worldname=%s&mapname=surface&zoom=4&x=%s&y=%s&z=%s %s, %s, %s]', | |||
args.monde or '', args.x, args.y, args.z, args.x, args.y, args.z) | |||
valueDiv:wikitext("''" .. mapUrl .. "''") | |||
rowDiv:node(labelDiv):node(valueDiv) | |||
body:node(rowDiv) | |||
-- Traitement normal des autres champs | |||
elseif args[champ.cle] and args[champ.cle] ~= '' then | |||
local rowDiv = mw.html.create('div') | local rowDiv = mw.html.create('div') | ||
:addClass('infobox-row') | :addClass('infobox-row') |
Version du 24 septembre 2025 à 12:43
La documentation pour ce module peut être créée à Module:Infobox/Core/doc
local p = {}
local getArgs = require('Module:Arguments').getArgs
function p.build(args, config)
if not args.nom or args.nom == '' then
return '<div class="error">Nom requis pour l\'infobox</div>'
end
local root = mw.html.create('div')
:addClass('infobox-table')
:attr('role', 'table')
-- En-tête avec nom
local header = mw.html.create('div')
:addClass('infobox-header')
if args.image and args.image ~= '' then
local imageDiv = mw.html.create('div')
:addClass('infobox-image')
local imageSize = args.tailleimage or '280px'
local imageCode = string.format('[[Fichier:%s|%s|center', args.image, imageSize)
if args.legende and args.legende ~= '' then
imageCode = imageCode .. '|' .. args.legende
end
imageCode = imageCode .. ']]'
imageDiv:wikitext(imageCode)
header:node(imageDiv)
end
local titleDiv = mw.html.create('div')
:addClass('infobox-title')
:wikitext(args.nom)
header:node(titleDiv)
if args.soustitre and args.soustitre ~= '' then
local subtitleDiv = mw.html.create('div')
:addClass('infobox-subtitle')
:wikitext(args.soustitre)
header:node(subtitleDiv)
end
root:node(header)
-- Corps avec les champs
local body = mw.html.create('div')
:addClass('infobox-body')
for _, section in ipairs(config.sections or {}) do
if section.titre then
local sectionDiv = mw.html.create('div')
:addClass('infobox-section-title')
:wikitext(section.titre)
body:node(sectionDiv)
end
for _, champ in ipairs(section.champs or {}) do
-- Cas spécial pour les coordonnées de spawn
if champ.cle == 'spawn' and args.x and args.x ~= '' and args.y and args.y ~= '' and args.z and args.z ~= '' then
local rowDiv = mw.html.create('div')
:addClass('infobox-row')
local labelDiv = mw.html.create('div')
:addClass('infobox-label')
:wikitext(champ.label)
local valueDiv = mw.html.create('div')
:addClass('infobox-value')
-- Construction du lien vers la carte
local mapUrl = string.format('[https://map.nefald.fr/?worldname=%s&mapname=surface&zoom=4&x=%s&y=%s&z=%s %s, %s, %s]',
args.monde or '', args.x, args.y, args.z, args.x, args.y, args.z)
valueDiv:wikitext("''" .. mapUrl .. "''")
rowDiv:node(labelDiv):node(valueDiv)
body:node(rowDiv)
-- Traitement normal des autres champs
elseif args[champ.cle] and args[champ.cle] ~= '' then
local rowDiv = mw.html.create('div')
:addClass('infobox-row')
local labelDiv = mw.html.create('div')
:addClass('infobox-label')
:wikitext(champ.label)
local valueDiv = mw.html.create('div')
:addClass('infobox-value')
:wikitext(args[champ.cle])
rowDiv:node(labelDiv):node(valueDiv)
body:node(rowDiv)
end
end
end
root:node(body)
return tostring(root)
end
return p