Module:Bandeau : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
(fonctions de bandeau générique, d'article, de section, d'ébauche fonctionnels.)
Ligne 9 : Ligne 9 :
 
--Créer une fonction exportable pour les bandeaux système (ns:8).
 
--Créer une fonction exportable pour les bandeaux système (ns:8).
 
--Gérer les images multiples.
 
--Gérer les images multiples.
+
 
 
local p = {}
 
local p = {}
  
local format = mw.ustring.format
+
local trim = require('Module:Outils').trim
 +
local yesno = require('Module:yesno')
 +
local class = mw.loadData('Module:Bandeau/Class/Test')
 +
-- local paramEbauche = mw.loadData('Module:Bandeau/Ébauche') -- ne sera chargé que pour un bandeau d'ébauche.
  
local cfg = {}
+
local cfg = {
 +
forme = 'test-bandeau-simple',
 +
niveau = 'test-bandeau-niveau-neutre',
 +
formatLien = '[[Fichier:%s|%spx|alt=%s]]',
 +
tailleIcone = '45x45',
 +
erreurArgument = 'Paramètre <code>|%s=</code> manquant',
 +
erreurEbaucheParam = 'le thème « %s » du modèle [[Modèle:Ébauche|{{ébauche}}]] n’est pas [[Aide:Ébauche/Aide paramètres|défini]].',
 +
erreurEbaucheType = 'le thème « %s » doit apparaître en tête de liste du modèle [[Modèle:Ébauche|{{ébauche}}]].',
 +
ebaucheImage = '<span style="white-space:nowrap;word-spacing:5px">%s</span>',
 +
ebaucheTitre = '%s est une [[Aide:Ébauche|ébauche]].',
 +
ebaucheTitreSujet = '%s est une [[Aide:Ébauche|ébauche]] concernant %s.',
 +
ebaucheCateg = '[[Catégorie:Wikipédia:ébauche %s]]',
 +
}
 +
 
 +
local function erreur(texte, formatstring, tag)
 +
local res = mw.html.create(tag or 'span')
 +
res :addClass('error')
 +
:wikitext('Erreur : ')
  
cfg.classeSimple = 'simple'
+
if formatstring then
cfg.niveauNeutre = 'neutre'
+
res:wikitext(string.format(formatstring, texte))
cfg.formatLien = '[[Fichier:%s|40px|alt=%s|link=]]'
+
else
cfg.erreurArgument = 'Paramètre <code>|%s=</code> manquant'
+
res:wikitext(texte)
 +
end
  
local icones = {
+
return tostring(res)
grave = 'Fairytale no.svg',
+
end
['modéré'] = 'Emblem-important.svg',
 
information = 'Information icon.svg',
 
['ébauche'] = 'Nuvola apps kedit.svg'
 
}
 
  
function p._bandeau(argsBandeau)
+
function p._bandeau(args)
args = argsBandeau
 
 
local res = mw.html.create('div')
 
local res = mw.html.create('div')
 +
local cells = mw.html.create()
 +
local icone = trim(args.image) or trim(args['icône'])
 +
local backgroundIcone = class.icones[icone] or ''
 +
local texte = (trim(args.texte) or erreur('texte', cfg.erreurArgument))
  
res
+
res :attr{ id = args.id }
:addClass('test-bandeau-' .. (args.classe or cfg.classeSimple))
+
:addClass(class.formes[args.forme] or cfg.forme)
:addClass('test-bandeau-niveau-' .. (args.niveau or cfg.niveauNeutre))
+
:addClass(class.niveau[args.niveau] or cfg.niveau)
 
:addClass('plainlinks')
 
:addClass('plainlinks')
:cssText(args.style) --Provisoire
+
:addClass(args.class)
 
+
:cssText(args.style)
if args.image then
+
local imageFormat = res:tag('div')
+
if yesno(args.centrer) then
:addClass('test-bandeau-image')
+
cells = mw.html.create('div')
 
+
:addClass('test-bandeau-centrer')
if mw.ustring.sub(args.image, 1, 1) == '[' then
+
end
imageFormat:wikitext(args.image)
+
if icone and backgroundIcone == '' then
else
+
local iconeWiki = icone
imageFormat:wikitext(mw.ustring.format(cfg.formatLien,
+
if not icone:match('%[') then
args.image,
+
local alt = args['légende'] or '|link='
args['légende'] or ''))
+
local taille = args['taille icône'] or cfg.tailleIcone
 +
iconeWiki = mw.ustring.format(cfg.formatLien, icone, taille, alt)
 
end
 
end
 +
cells
 +
:tag('div')
 +
:addClass('test-bandeau-cell test-bandeau-icone')
 +
:cssText(args.styleImage) --Provisoire
 +
:wikitext(iconeWiki)
 +
:done()
 +
elseif backgroundIcone ~= '' and args.forme == 'section' then
 +
texte = '&ensp;' .. texte
 
end
 
end
res
+
cells
:tag('p')
+
:tag('div')
:addClass('test-bandeau-texte')
+
:addClass('test-bandeau-cell ' .. backgroundIcone)
:wikitext(args.texte)
+
:cssText(args.styleTexte) --Provisoire
 +
:wikitext(texte)
 +
:newline()
 +
:done()
 +
 +
res :node(cells)
 +
 +
if trim(args['supplément']) then
 +
res :tag('p') 
 +
:wikitext(args['supplément'])
 
:done()
 
:done()
:wikitext(args['supplément'])
+
end
 
+
 
return tostring(res)
 
return tostring(res)
 
end
 
end
Ligne 65 : Ligne 103 :
 
htmlTexte
 
htmlTexte
 
:tag('strong')
 
:tag('strong')
:wikitext(args.titre or erreur(true, 'titre'))
+
:addClass('test-bandeau-titre')
 +
:wikitext(trim(args.titre) or erreur('titre', cfg.erreurArgument))
 
:done()
 
:done()
:tag('br')
+
:wikitext(' ' .. (args.date or ''))
:done()
+
:newline():newline()
:tag('span')
+
:wikitext(args.texte)
:css('font-size', '0.9em')
 
:css('line-height', '1.2em')
 
:wikitext(args.texte or erreur(true, 'texte'))
 
  
 
local parametres = {
 
local parametres = {
classe = 'article',
+
forme = 'article',
 
niveau = args.niveau,
 
niveau = args.niveau,
image = args['icône'] or args['icône-complexe'] or icones[niveau],
+
id = args.id,
 +
['icône'] = trim(args['icône']) or trim(args['icône-complexe']) or args.niveau,
 
texte = tostring(htmlTexte),
 
texte = tostring(htmlTexte),
 
['supplément'] = args['supplément']
 
['supplément'] = args['supplément']
Ligne 83 : Ligne 120 :
  
 
return p._bandeau(parametres)
 
return p._bandeau(parametres)
 +
end
 +
 +
function p._bandeauSection(args)
 +
local res = mw.html.create('div')
 +
local icone = trim(args.image) or trim(args['icône'])
 +
local backgroundIcone = class.icones[icone] or ''
 +
local texte = '&ensp;' .. (trim(args.texte) or erreur('texte', cfg.erreurArgument))
 +
 +
res :addClass('test-bandeau-section')
 +
:addClass(class.niveau[args.niveau] or cfg.niveau)
 +
 +
if icone and backgroundIcone == '' then
 +
local iconeWiki = icone
 +
if not icone:match('%[') then
 +
local alt = args['légende'] or '|link='
 +
iconeWiki = mw.ustring.format(cfg.formatLien, icone, '20x17', alt)
 +
end
 +
res :wikitext(iconeWiki)
 +
:done()
 +
end
 +
res :addClass(backgroundIcone)
 +
:wikitext(texte)
 +
:done()
 +
 +
return tostring(res)
 
end
 
end
  
 
p['_ébauche'] = function (args)
 
p['_ébauche'] = function (args)
local htmlTexte = mw.html.create()
+
local paramEbauche = mw.loadData('Module:Bandeau/Ébauche')
local donnees = {
+
local ebauches, gestionErreur = {}, {}
Italie = {
+
local frame = mw.getCurrentFrame()
icone = 'Italy looking like the flag.svg',
+
local parametres = {
sujet = 'l’[[Portail:Italie|Italie]]',
+
icone = 'icône',
selon = '; pour plus d’indications, visitez le [[Projet:Italie|projet Italie]]',
+
sujet = 'sujet',
categ = 'Italie'
+
selon = 'selon',
},
+
categ = 'catégorie',
lac = {
+
type  = 'type',
icone = 'Icon river reservoir.svg',
+
message = 'message'
sujet = 'un [[lac]]',
 
categ = 'lac'
 
}
 
 
}
 
}
local ebauches, gestionErreur = {}, {}
+
local getEbaucheTable = function( theme )
 +
-- récupére les paramètres lié au theme, à partir du module:Bandeau/Ébauche ou du modèle:Ébauche/paramètres theme
 +
local modele = 'Modèle:Ébauche/paramètres ' .. theme
 +
local params
 +
if paramEbauche[theme] then
 +
params = { nom = theme }
 +
for n, v in pairs(paramEbauche[theme]) do
 +
params[n] = v
 +
end
 +
elseif mw.title.new( modele ).exists then
 +
params = { nom = theme }
 +
for n, v in pairs(parametres)  do
 +
local param = frame:expandTemplate{title = modele, args = {v}}
 +
params[n] = trim(param)
 +
end
 +
end
 +
return params
 +
end
 +
local ebaucheParam = function( i, param )
 +
-- foction qui retourne la valeur de param pour l'ébauche i, ou une valeur par défaut.
 +
return ebauches[i] and ebauches[i][param] or paramEbauche[''][param]
 +
end
 +
 +
for i, theme in ipairs(args) do
 +
-- récupération des paramètres de tous les thèmes
 +
theme = trim(theme)
 +
if theme then
 +
local t = getEbaucheTable(theme)
 +
if t then
 +
table.insert(ebauches, t)
 +
else
 +
table.insert(
 +
gestionErreur,
 +
erreur(theme, cfg.erreurEbaucheParam, 'div')
 +
)
 +
end
 +
end
 +
end
 +
 +
local images, titres, categs = {}, {}, {}
 +
local tailleIcone = cfg.tailleIcone
 +
if #ebauches > 3 then
 +
tailleIcone = '35x25'
 +
end
 +
for i, ebauche in ipairs(ebauches) do
 +
-- mise en forme des images
 +
if ebauche.icone then
 +
table.insert(
 +
images,
 +
cfg.formatLien:format(
 +
ebauche.icone,
 +
tailleIcone,
 +
ebauche.altIcone or ''
 +
)
 +
)
 +
end
 +
if math.fmod(#ebauches, 3) == 1 and (#ebauches - i) == 2
 +
or math.fmod(i, 3) == 0 and (#ebauches - i) > 1
 +
then
 +
-- sur plusieurs lignes s'il y a plus de 3 images, avec minimum deux images sur la dernière ligne.
 +
table.insert(images,'<br>')
 +
end
 +
 +
if i > 1 and ebauche.type and ebauche.type ~= paramEbauche[''].type then
 +
-- remplace "Cet article par "Ce portail" ou autre en fonction du premier thème.
 +
table.insert(
 +
gestionErreur,
 +
erreur(ebauche.nom, cfg.erreurEbaucheType, 'div')
 +
)
 +
end
 +
 +
-- récupères les différents noms de thème
 +
table.insert(titres, ebauche.sujet)
 +
 +
-- mise en forme des catégories
 +
if ebauche.categ then
 +
table.insert( categs, cfg.ebaucheCateg:format( ebauche.categ ) )
 +
end
 +
end
 
 
for i, ebauche in ipairs(args) do
+
local image
if donnees[ebauche] then
+
if trim(args['icône']) then
ebauches[i] = donnees[ebauche]
+
local theme = getEbaucheTable(args['icône'])
else
+
if theme and theme.icone then
table.insert(gestionErreur, ebauche)
+
image = cfg.formatLien:format(theme.icone, tailleIcone, '')
 
end
 
end
 +
elseif #images == 1 then
 +
image = images[1]
 +
elseif #images > 1 then
 +
image = cfg.ebaucheImage:format(table.concat(images, ' '))
 +
end
 +
 +
local titre
 +
if #titres > 0 then
 +
titre = cfg.ebaucheTitreSujet:format(
 +
ebaucheParam(1, 'type'),
 +
mw.text.listToText(titres)
 +
)
 +
else
 +
titre = cfg.ebaucheTitre:format(ebaucheParam(1, 'type'))
 
end
 
end
 
+
local texte
 +
if #ebauches == 0 then
 +
texte = (ebaucheParam(1, 'message')) .. '.'
 +
else
 +
texte = (ebaucheParam(1, 'message')) .. ' ' .. (ebaucheParam(1, 'selon')) .. '.'
 +
end
 +
 
local parametres = {
 
local parametres = {
classe = 'article',
+
niveau = 'ébauche',
niveau = args.niveau,
+
['icône'] = image,
image = args['icône'] or args['icône-complexe'] or icones[niveau],
+
titre = titre,
texte = args.texte,
+
texte = texte,
['supplément'] = args['supplément']
+
id = args.id
 
}
 
}
 
+
return p._bandeau(parametres)
+
local categ = ''
end
+
if not yesno(args.nocat) then
 
+
categ = table.concat(categs)
function erreur(gestionArg, texte)
+
if categ == '' then
local res = mw.html.create('span')
+
categ = cfg.ebaucheCateg:format('')
:addClass('error')
+
end
:wikitext('Erreur : ')
+
end
 
+
if gestionArg then
+
local messageErreur = table.concat(gestionErreur)
res:wikitext(format(cfg.erreurArgument, texte))
+
if messageErreur:len() > 0 and not yesno(args.nocat) then
else
+
messageErreur = messageErreur .. '[[Catégorie:Page utilisant un modèle avec une syntaxe erronée|Ébauche]]'
res:wikitext(texte)
 
 
end
 
end
  
return tostring(res)
+
return p._bandeauAvertissement(parametres) .. messageErreur .. categ
 
end
 
end
  
 
-- Insertion dans la table p des fonctions appelées par les
 
-- Insertion dans la table p des fonctions appelées par les
 
-- modèles à l'aide d'un adaptateur de fonction.
 
-- modèles à l'aide d'un adaptateur de fonction.
function adaptateur(nomFonction)
+
local function adaptateur(nomFonction)
 
return function (frame)
 
return function (frame)
local args = {}
+
return p[nomFonction](frame:getParent().args or frame.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
 
end
 
end
 
   
 
   
local nomsFonction = {'bandeau', 'bandeauAvertissement', 'ébauche'}  
+
local nomsFonction = {'bandeau', 'bandeauAvertissement', 'bandeauSection', 'ébauche' }  
 
for _, nomFonction in ipairs(nomsFonction) do
 
for _, nomFonction in ipairs(nomsFonction) do
 
p[nomFonction] = adaptateur('_' .. nomFonction)
 
p[nomFonction] = adaptateur('_' .. nomFonction)

Version du 3 janvier 2016 à 23:07

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 trim = require('Module:Outils').trim
local yesno = require('Module:yesno')
local class = mw.loadData('Module:Bandeau/Class/Test')
-- local paramEbauche = mw.loadData('Module:Bandeau/Ébauche') -- ne sera chargé que pour un bandeau d'ébauche.

local cfg = {
	forme = 'test-bandeau-simple',
	niveau = 'test-bandeau-niveau-neutre',
	formatLien = '[[Fichier:%s|%spx|alt=%s]]',
	tailleIcone = '45x45',
	erreurArgument = 'Paramètre <code>|%s=</code> manquant',
	erreurEbaucheParam = 'le thème « %s » du modèle [[Modèle:Ébauche|{{ébauche}}]] n’est pas [[Aide:Ébauche/Aide paramètres|défini]].',
	erreurEbaucheType = 'le thème « %s » doit apparaître en tête de liste du modèle [[Modèle:Ébauche|{{ébauche}}]].',
	ebaucheImage = '<span style="white-space:nowrap;word-spacing:5px">%s</span>',
	ebaucheTitre = '%s est une [[Aide:Ébauche|ébauche]].',
	ebaucheTitreSujet = '%s est une [[Aide:Ébauche|ébauche]] concernant %s.',
	ebaucheCateg = '[[Catégorie:Wikipédia:ébauche %s]]',
}

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

	if formatstring then
		res:wikitext(string.format(formatstring, texte))
	else
		res:wikitext(texte)
	end

	return tostring(res)
end

function p._bandeau(args)
	local res = mw.html.create('div')
	local cells = mw.html.create()
	local icone = trim(args.image) or trim(args['icône'])
	local backgroundIcone = class.icones[icone] or ''
	local texte = (trim(args.texte) or erreur('texte', cfg.erreurArgument))

	res	:attr{ id = args.id }
		:addClass(class.formes[args.forme] or cfg.forme)
		:addClass(class.niveau[args.niveau] or cfg.niveau)
		:addClass('plainlinks')
		:addClass(args.class)
		:cssText(args.style)
	
	if yesno(args.centrer) then
		cells = mw.html.create('div')
			:addClass('test-bandeau-centrer')
	end
	if icone and backgroundIcone == '' then
		local iconeWiki = icone
		if not icone:match('%[') then
			local alt = args['légende'] or '|link='
			local taille = args['taille icône'] or cfg.tailleIcone
			iconeWiki = mw.ustring.format(cfg.formatLien, icone, taille, alt)
		end
		cells
			:tag('div')
				:addClass('test-bandeau-cell test-bandeau-icone')
				:cssText(args.styleImage) --Provisoire
				:wikitext(iconeWiki)
			:done()
	elseif backgroundIcone ~= '' and args.forme == 'section' then
		texte = '&ensp;' .. texte
	end
	cells
		:tag('div')
			:addClass('test-bandeau-cell ' .. backgroundIcone)
			:cssText(args.styleTexte) --Provisoire
			:wikitext(texte)
			:newline()
		:done()
		
	res	:node(cells)
	
	if trim(args['supplément']) then
		res	:tag('p')   
				:wikitext(args['supplément'])
			:done()
	end
	
	return tostring(res)
end

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

	htmlTexte
		:tag('strong')
			:addClass('test-bandeau-titre')
			:wikitext(trim(args.titre) or erreur('titre', cfg.erreurArgument))
		:done()
		:wikitext(' ' .. (args.date or ''))
		:newline():newline()
		:wikitext(args.texte)

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

	return p._bandeau(parametres)
end

function p._bandeauSection(args)
	local res = mw.html.create('div')
	local icone = trim(args.image) or trim(args['icône'])
	local backgroundIcone = class.icones[icone] or ''
	local texte = '&ensp;' .. (trim(args.texte) or erreur('texte', cfg.erreurArgument))

	res	:addClass('test-bandeau-section')
		:addClass(class.niveau[args.niveau] or cfg.niveau)
	
	if icone and backgroundIcone == '' then
		local iconeWiki = icone
		if not icone:match('%[') then
			local alt = args['légende'] or '|link='
			iconeWiki = mw.ustring.format(cfg.formatLien, icone, '20x17', alt)
		end
		res	:wikitext(iconeWiki)
			:done()
	end
	res	:addClass(backgroundIcone)
		:wikitext(texte)
		:done()

	return tostring(res)
end

p['_ébauche'] = function (args)
	local paramEbauche = mw.loadData('Module:Bandeau/Ébauche')
	local ebauches, gestionErreur = {}, {}
	local frame = mw.getCurrentFrame()
	local parametres = {
		icone = 'icône',
		sujet = 'sujet',
		selon = 'selon',
		categ = 'catégorie',
		type  = 'type',
		message = 'message'
	}
	local getEbaucheTable = function( theme )
		-- récupére les paramètres lié au theme, à partir du module:Bandeau/Ébauche ou du modèle:Ébauche/paramètres theme
		local modele = 'Modèle:Ébauche/paramètres ' .. theme
		local params
		if paramEbauche[theme] then
			params = { nom = theme }
			for n, v in pairs(paramEbauche[theme]) do
				params[n] = v
			end
		elseif mw.title.new( modele ).exists then
			params = { nom = theme }
			for n, v in pairs(parametres)  do
				local param = frame:expandTemplate{title = modele, args = {v}}
				params[n] = trim(param)
			end
		end
		return params
	end
	local ebaucheParam = function( i, param )
		-- foction qui retourne la valeur de param pour l'ébauche i, ou une valeur par défaut.
		return ebauches[i] and ebauches[i][param] or paramEbauche[''][param]
	end
	
	for i, theme in ipairs(args) do
		-- récupération des paramètres de tous les thèmes
		theme = trim(theme)
		if theme then
			local t = getEbaucheTable(theme)
			if t then
				table.insert(ebauches, t)
			else
				table.insert(
					gestionErreur, 
					erreur(theme, cfg.erreurEbaucheParam, 'div')
				)
			end
		end
	end
	
	local images, titres, categs = {}, {}, {}
	local tailleIcone = cfg.tailleIcone
	if #ebauches > 3 then
		tailleIcone = '35x25'
	end
	for i, ebauche in ipairs(ebauches) do
		-- mise en forme des images
		if ebauche.icone then
			table.insert(
				images, 
				cfg.formatLien:format(
					ebauche.icone, 
					tailleIcone, 
					ebauche.altIcone or ''
				)
			)
		end
		if math.fmod(#ebauches, 3) == 1 and (#ebauches - i) == 2	
			or math.fmod(i, 3) == 0 and (#ebauches - i) > 1
		then
			-- sur plusieurs lignes s'il y a plus de 3 images, avec minimum deux images sur la dernière ligne.
			table.insert(images,'<br>')
		end
		
		if i > 1 and ebauche.type and ebauche.type ~= paramEbauche[''].type then
			-- remplace "Cet article par "Ce portail" ou autre en fonction du premier thème.
			table.insert(
				gestionErreur, 
				erreur(ebauche.nom, cfg.erreurEbaucheType, 'div')
			)
		end
		
		-- récupères les différents noms de thème
		table.insert(titres, ebauche.sujet)
		
		-- mise en forme des catégories
		if ebauche.categ then 
			table.insert( categs, cfg.ebaucheCateg:format( ebauche.categ ) )
		end
	end
	
	local image 
	if trim(args['icône']) then
		local theme = getEbaucheTable(args['icône'])
		if theme and theme.icone then
			image = cfg.formatLien:format(theme.icone, tailleIcone, '')
		end
	elseif #images == 1 then
		image = images[1]
	elseif #images > 1 then
		image = cfg.ebaucheImage:format(table.concat(images, ' '))
	end
	
	local titre
	if #titres > 0 then
		titre = cfg.ebaucheTitreSujet:format( 
			ebaucheParam(1, 'type'), 
			mw.text.listToText(titres)
		)
	else
		titre = cfg.ebaucheTitre:format(ebaucheParam(1, 'type'))
	end
	local texte
	if #ebauches == 0 then
		texte = (ebaucheParam(1, 'message')) .. '.'
	else
		texte = (ebaucheParam(1, 'message')) .. ' ' .. (ebaucheParam(1, 'selon')) .. '.'
	end
	
	local parametres = {
		niveau = 'ébauche',
		['icône'] = image,
		titre = titre,
		texte = texte,
		id = args.id
	}
	
	local categ = ''
	if not yesno(args.nocat) then
		categ = table.concat(categs)
		if categ == '' then
			categ = cfg.ebaucheCateg:format('')
		end
	end
	
	local messageErreur = table.concat(gestionErreur)
	if messageErreur:len() > 0 and not yesno(args.nocat) then
		messageErreur = messageErreur .. '[[Catégorie:Page utilisant un modèle avec une syntaxe erronée|Ébauche]]'
	end

	return p._bandeauAvertissement(parametres) .. messageErreur .. categ
end

-- Insertion dans la table p des fonctions appelées par les
-- modèles à l'aide d'un adaptateur de fonction.
local function adaptateur(nomFonction)
	return function (frame)
		return p[nomFonction](frame:getParent().args or frame.args)
	end
end
 
local nomsFonction = {'bandeau', 'bandeauAvertissement', 'bandeauSection', 'ébauche' } 
for _, nomFonction in ipairs(nomsFonction) do
	p[nomFonction] = adaptateur('_' .. nomFonction)
end

return p