Module:Bandeau : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
Ligne 87 : Ligne 87 :
 
p['_ébauche'] = function (args)
 
p['_ébauche'] = function (args)
 
local htmlTexte = mw.html.create()
 
local htmlTexte = mw.html.create()
 +
local donnees = {
 +
Italie = {
 +
icone = 'Italy looking like the flag.svg',
 +
sujet = 'l’[[Portail:Italie|Italie]]',
 +
selon = '; pour plus d’indications, visitez le [[Projet:Italie|projet Italie]]',
 +
categ = 'Italie'
 +
},
 +
lac = {
 +
icone = 'Icon river reservoir.svg',
 +
sujet = 'un [[lac]]',
 +
categ = 'lac'
 +
}
 +
}
 +
local ebauches, gestionErreur = {}, {}
 +
 +
for i, ebauche in ipairs(args) do
 +
if donnees[ebauche] then
 +
ebauches[i] = donnees[ebauche]
 +
else
 +
table.insert(gestionErreur, ebauche)
 +
end
 +
end
  
 
local parametres = {
 
local parametres = {

Version du 10 août 2014 à 12:44

La documentation pour ce module peut être créée à Module:Bandeau/doc

--Ce module implémente les modèles de bandeau.

--Standardisation des bandeaux ([[Catégorie:Modèle de bandeau]]).
--Créer une fonction exportable pour le modèle {{Bandeau}} (ns:all).
--Créer une fonction exportable pour les bandeaux d'article (ns:0).
--Créer une fonction exportable pour les bandeaux de section (ns:0).
--Créer une fonction exportable pour les bandeaux d'ébauche (ns:0).
--Créer une fonction exportable pour les bandeaux de discussion (ns:1).
--Créer une fonction exportable pour les bandeaux système (ns:8).
--Gérer les images multiples.
 
local p = {}

local format = mw.ustring.format

local cfg = {}

cfg.classeSimple = 'simple'
cfg.niveauNeutre = 'neutre'
cfg.formatLien = '[[Fichier:%s|40px|alt=%s|link=]]'
cfg.erreurArgument = 'Paramètre <code>|%s=</code> manquant'

local icones = {
	grave = 'Fairytale no.svg',
	['modéré'] = 'Emblem-important.svg',
	information = 'Information icon.svg',
	['ébauche'] = 'Nuvola apps kedit.svg'
}

function p._bandeau(argsBandeau)
	args = argsBandeau
	local res = mw.html.create('div')

	res
		:addClass('test-bandeau-' .. (args.classe or cfg.classeSimple))
		:addClass('test-bandeau-niveau-' .. (args.niveau or cfg.niveauNeutre))
		:addClass('plainlinks')
		:cssText(args.style) --Provisoire

	if args.image then
		local imageFormat = res:tag('div')
			:addClass('test-bandeau-image')

		if mw.ustring.sub(args.image, 1, 1) == '[' then
			imageFormat:wikitext(args.image)
		else
			imageFormat:wikitext(mw.ustring.format(cfg.formatLien,
				args.image,
				args['légende'] or ''))
		end
	end
	res
		:tag('p')
			:addClass('test-bandeau-texte')
			:wikitext(args.texte)
			:done()
		:wikitext(args['supplément'])

	return tostring(res)
end

function p._bandeauAvertissement(args)
	local htmlTexte = mw.html.create()

	htmlTexte
		:tag('strong')
			:wikitext(args.titre or erreur(true, 'titre'))
		:done()
		:tag('br')
		:done()
		:tag('span')
			:css('font-size', '0.9em')
			:css('line-height', '1.2em')
			:wikitext(args.texte or erreur(true, 'texte'))

	local parametres = {
		classe = 'article',
		niveau = args.niveau,
		image = args['icône'] or args['icône-complexe'] or icones[niveau],
		texte = tostring(htmlTexte),
		['supplément'] = args['supplément']
	}

	return p._bandeau(parametres)
end

p['_ébauche'] = function (args)
	local htmlTexte = mw.html.create()
	local donnees = {
		Italie = {
			icone = 'Italy looking like the flag.svg',
			sujet = 'l’[[Portail:Italie|Italie]]',
			selon = '; pour plus d’indications, visitez le [[Projet:Italie|projet Italie]]',
			categ = 'Italie'
		},
		lac = {
			icone = 'Icon river reservoir.svg',
			sujet = 'un [[lac]]',
			categ = 'lac'
		}
	}
	local ebauches, gestionErreur = {}, {}
	
	for i, ebauche in ipairs(args) do
		if donnees[ebauche] then
			ebauches[i] = donnees[ebauche]
		else
			table.insert(gestionErreur, ebauche)
		end
	end

	local parametres = {
		classe = 'article',
		niveau = args.niveau,
		image = args['icône'] or args['icône-complexe'] or icones[niveau],
		texte = args.texte,
		['supplément'] = args['supplément']
	}

	return p._bandeau(parametres)
end

function erreur(gestionArg, texte)
	local res = mw.html.create('span')
		:addClass('error')
		:wikitext('Erreur : ')

	if gestionArg then
		res:wikitext(format(cfg.erreurArgument, texte))
	else
		res:wikitext(texte)
	end

	return tostring(res)
end

-- Insertion dans la table p des fonctions appelées par les
-- modèles à l'aide d'un adaptateur de fonction.
function adaptateur(nomFonction)
	return function (frame)
		local args = {}
		local argsParent = frame:getParent().args
 
		--Paramètres vides interprétés par Lua
		for cle, val in pairs(argsParent) do
			if val ~= '' then
				args[cle] = mw.text.trim(val)
			end
		end

		return p[nomFonction](args)
	end
end
 
local nomsFonction = {'bandeau', 'bandeauAvertissement', 'ébauche'} 
for _, nomFonction in ipairs(nomsFonction) do
	p[nomFonction] = adaptateur('_' .. nomFonction)
end

return p