Module:Bandeau d'avertissement

De Les Archives de Vault-Tec
Révision datée du 26 juin 2021 à 13:10 par Kharmitch (discussion | contributions) (Possibilité de rendre dynamique le titre et la description d'un bandeau)

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

local p = {}

-----------------------------------------------------------
-----     Référentiel des bandeaux de maintenance     -----
-----------------------------------------------------------

data = {
	["ébauche"] = {
		image        = "Atelier de rédaction.png",
		title        = "Cet article est une ébauche et mériterait un meilleur développement.",
		description  = "Vous pouvez aider les Archives de Vault-Tec en partageant vos connaissances sur le sujet ([[Aide:Modifier les pages|comment ?]]) ; n'hésitez pas à consulter le [[Les Archives de Vault-Tec:Guide de l'utilisateur|guide de l'utilisateur]] pour connaitre toutes nos recommandations.",
		category     = "Ébauches"
	},
	["en cours"] = {
		image        = "Atelier de rédaction.png",
		title        = function(args)
			local user = args.utilisateur
			if user then user = '[[Utilisateur:'..user..'|'..user..']]' else user = 'utilisateur ?' end
			return "L'utilisateur " .. user .. " travaille en ce moment sur cet article."
		end,
		description  = "Merci de le contacter sur sa page de discussion avant de modifier l'article. Sans réponse de sa part 72 heures après votre demande, vous êtes autorisé à modifier la page.",
		category     = "Articles en cours"
	},
}

-----------------------------------------------------------

function p.build(frame)
	local args = {}
	args.nom = frame.args.nom
	
	local argsParent = frame:getParent().args
	for cle, val in pairs(argsParent) do
		if val then
			args[cle] = mw.text.trim(val)
		end
	end
	
	return p._build(args)
end

function p._build(args)
	local banner = data[args.nom:lower()]
	
	local image = banner.image or 'bandeau de maintenance - defaut.png'
	local title = banner.title or 'Titre ?'
	local description = banner.description
	local category = banner.category or ''
	
	local game = args[1] or ''
	local note = args[2]
	
	if category ~= '' then
		if game ~= '' then
			game = require( 'Module:Abréviation' ).name(game) or ''
			if game ~= '' then
				game = ' (' .. game .. ')'
			end
		end
		category = '[[Catégorie:' .. category .. game .. ']]'
	end
	
	if type(title) == 'function' then
		title = title(args)
	end
	
	title = mw.html.create( 'p' )
		:addClass( 'avt-maintenance-banner-title' )
		:wikitext( title )
		:done()
	
	if description then
		if type(description) == 'function' then
			description = description(args)
		end
		
		description = mw.html.create( 'p' )
			:addClass( 'avt-maintenance-banner-desc' )
			:wikitext( description )
			:done()
	end
	
	if note then
		note = mw.html.create( 'p' )
			:addClass( 'avt-maintenance-banner-note' )
			:wikitext( 'Note : ' .. note )
			:done()
	end
	
	local res = mw.html.create( 'div' )
		:addClass( 'avt-maintenance-banner noexcerpt' )
		:tag( 'div' )
			:addClass( 'avt-maintenance-banner-img' )
			:wikitext( '[[Fichier:' .. image .. '|x50px|link=|alt=]]' )
			:done()
		:tag( 'div' )
			:addClass( 'avt-maintenance-banner-text' )
			:node(title)
			:node(description)
			:node(note)
			:done()
		:done()
	
	return tostring(res) .. category
end

return p