« Module:Bandeau » : différence entre les versions
Page créée avec « -- Module standardisant la création et le format des bandeaux -- Inspiré de https://fr.wikipedia.org/wiki/Module:Bandeau local p = {} local banner_styles = { ["simple"] = "sf-banner-simple", ["article"] = "sf-banner-article", ["section"] = "sf-banner-section", } local banner_levels = { ["neutre"] = "sf-banner-neutral", ["grave"] = "sf-banner-serious", ["modéré"] = "sf-banner-moderate", ["information"] = "sf-banner-info", ["ébauche"] = "sf-banner-s... » |
Aucun résumé des modifications |
||
(8 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
local p = {} | local p = {} | ||
local | -- Types de bandeau autorisés | ||
local shapes = { | |||
article = "banner-article", | |||
note = "banner-note", | |||
section = "banner-section", | |||
simple = "banner-simple", | |||
} | } | ||
local | -- 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 | |||
local | -- Paramétrage par défaut | ||
local default = { | |||
shape = "simple", | |||
level = "information", | |||
image_format = "[[Fichier:%s|%spx|alt=%s|link=|class=noviewer]]", | image_format = "[[Fichier:%s|%spx|alt=%s|link=|class=noviewer]]", | ||
image_size = "x50", | 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 | -- Fonction retournant un bandeau au format souhaité | ||
function p._banner(args) | function p._banner(args) | ||
local text = args.texte | local text = args.texte | ||
local title = args.titre | local title = args.titre | ||
if not text and not title then | if not text and not title then | ||
error( " | error("Paramètres texte ou titre absents.") | ||
end | 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 res = mw.html.create( "div" ) | 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() | local cells = mw.html.create() | ||
res :addClass( " | res :addClass("banner") | ||
:addClass( | :addClass(shape_class) | ||
:addClass( | :addClass(level_class) | ||
:addClass("noexcerpt") | |||
local image = args.image | local image = args.image | ||
if image then | if image then | ||
local alt = args["image légende"] or "" | local alt = args["image légende"] or "" | ||
local size = args[ | local size = args["image taille"] or default.image_size | ||
image = | image = cells | ||
:tag("div") | |||
:tag( "div" ) | :addClass("banner-cell banner-image") | ||
:wikitext(default.image_format:format(image, size, alt)) | |||
end | end | ||
local html_text = mw.html.create() | local html_text = mw.html.create() | ||
if title then | if title then | ||
html_text = html_text | html_text = html_text | ||
:tag( "strong" ) | :tag("strong") | ||
:addClass( " | :addClass("banner-title") | ||
:wikitext(title) | :wikitext(title) | ||
:done() | :done() | ||
if text then | |||
html_text | |||
:newline() | |||
:newline() | |||
:wikitext(text) | |||
end | |||
elseif text then | |||
html_text | html_text | ||
:newline() | :newline() | ||
:wikitext(text) | :wikitext(text) | ||
Ligne 74 : | Ligne 92 : | ||
cells | cells | ||
:tag( | :tag("div") | ||
:addClass( | :addClass("banner-cell") | ||
:newline() | :newline() | ||
:wikitext(tostring(html_text)) | :wikitext(tostring(html_text)) | ||
Ligne 84 : | Ligne 102 : | ||
end | end | ||
-- Fonction | -- Fonction spécifique au bandeau de type ébauche | ||
function p. | function p._stub(args) | ||
local args | local subjects = mw.loadData("Module:Bandeau/Ébauche") | ||
if | 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 | else | ||
args = frame:getParent().args | 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 | end | ||
return p._banner( | 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 | end | ||
return p | return p |
Dernière version du 29 janvier 2023 à 11:20
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