Module:Bandeau
Ce module implémente les modèles de bandeau.
Utilisation[modifier le wikicode]
Fonctions exportables :
banner(frame)
– voir la documentation du modèle {{Bandeau}} ;stub(frame)
– voir la documentation du modèle {{ébauche}}.
Autres fonctions :
- les fonctions ci-dessus avec un « _ » avant le nom peuvent être appelées directement depuis lua, avec les paramètres dans une table.
Modules externes et autres éléments dont ce module a besoin pour fonctionner :
local p = {}
-- Types de bandeau autorisés
local shapes = {
article = "banner-article",
note = "banner-note",
section = "banner-section",
simple = "banner-simple",
}
-- Niveaux d'information autorisés
local levels = {
ebauche = "banner-stub",
grave = "banner-serious",
information = "banner-info",
modere = "banner-moderate",
neutre = "banner-neutral",
}
levels["modéré"] = levels.modere
levels["ébauche"] = levels.ebauche
-- Paramétrage par défaut
local default = {
shape = "simple",
level = "information",
image_format = "[[Fichier:%s|%spx|alt=%s|link=|class=noviewer]]",
image_size = "x50",
stub_title = "Cet article est une [[Aide:Ébauche|ébauche]].",
stub_title_subject = "Cet article est une [[Aide:Ébauche|ébauche]] concernant %s.",
stub_category = "[[Catégorie:Ébauche]]",
stub_category_subject = "[[Catégorie:Ébauche (%s)]]",
stub_text = "Vous pouvez partager vos connaissances en l'améliorant ('''[[Aide:Modifier une page|comment ?]]''') selon nos [[Aide:Accueil#Politique de Starfield Wiki|conventions]].",
}
-- Fonction retournant un bandeau au format souhaité
function p._banner(args)
local text = args.texte
local title = args.titre
if not text and not title then
error("Paramètres texte ou titre absents.")
end
local shape = args.forme or default.shape
local shape_class = shapes[shape]
if shape_class == nil then
error("Valeur inconnue pour le paramètre forme.")
end
local level = args.niveau or default.level
local level_class = levels[level]
if level_class == nil then
error("Valeur inconnue pour le paramètre niveau.")
end
local res = mw.html.create("div")
local cells = mw.html.create()
res :addClass("banner")
:addClass(shape_class)
:addClass(level_class)
:addClass("noexcerpt")
local image = args.image
if image then
local alt = args["image légende"] or ""
local size = args["image taille"] or default.image_size
image = cells
:tag("div")
:addClass("banner-cell banner-image")
:wikitext(default.image_format:format(image, size, alt))
end
local html_text = mw.html.create()
if title then
html_text = html_text
:tag("strong")
:addClass("banner-title")
:wikitext(title)
:done()
if text then
html_text
:newline()
:newline()
:wikitext(text)
end
elseif text then
html_text
:newline()
:wikitext(text)
end
cells
:tag("div")
:addClass("banner-cell")
:newline()
:wikitext(tostring(html_text))
:newline()
res :node(cells)
return tostring(res)
end
-- Fonction spécifique au bandeau de type ébauche
function p._stub(args)
local subjects = mw.loadData("Module:Bandeau/Ébauche")
local subject = args[1]
if subject ~= nil then
subject = subjects[subject:lower()]
end
local title
local category
if subject ~= nil then
title = string.format(
default.stub_title_subject,
subject.subject
)
category = string.format(
default.stub_category_subject,
args[1]:lower()
)
else
title = default.stub_title
category = default.stub_category
end
return p._banner({
forme = "article",
niveau = "ébauche",
titre = title,
texte = default.stub_text,
image = subject.image,
["image taille"] = subject.size,
}) .. category
end
function get_args(frame)
local args = {}
local argsParent = frame:getParent().args
for cle, val in pairs(argsParent) do
if val then
args[cle] = mw.text.trim(val)
end
end
return args
end
-- Fonctions destinées à être appelées dans les modèles
function p.banner(frame)
return p._banner(get_args(frame))
end
function p.stub(frame)
return p._stub(get_args(frame))
end
return p