705
modifications
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 Balise : Révoqué |
||
Ligne 1 : | Ligne 1 : | ||
local p = {} | local p = {} | ||
local | -- Types de bandeau | ||
local shapes = { | |||
article = "banner-article", | |||
note = "banner-note", | |||
section = "banner-section", | |||
simple = "bandeau-simple", | |||
} | } | ||
local | -- Niveau d'information | ||
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) | ||
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 config.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() | ||
end | end | ||
if text then | if text then | ||
html_text | html_text | ||
Ligne 74 : | Ligne 88 : | ||
cells | cells | ||
:tag( | :tag("div") | ||
:addClass( | :addClass("banner-cell") | ||
:newline() | :newline() | ||
:wikitext(tostring(html_text)) | :wikitext(tostring(html_text)) | ||
Ligne 84 : | Ligne 98 : | ||
end | end | ||
-- Fonction | -- 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.sujet | |||
) | |||
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, | |||
}) .. category | |||
end | |||
-- Table de correspondance type de bandeau - fonction | |||
local actions = { | |||
banner = p._banner, | |||
stub = p._stub, | |||
} | |||
function p.banner(frame) | function p.banner(frame) | ||
local args | local args | ||
Ligne 92 : | Ligne 145 : | ||
args = frame:getParent().args | args = frame:getParent().args | ||
end | end | ||
return actions[shape](args) | |||
end | end | ||
return p | return p |