Module:Bandeau navigation évaluation
Apparence
La documentation de ce module est générée par le modèle {{Documentation module}}.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local p = {}
-- Les paramètres d'un projet sous stockés dans une sous-page Projet:.../Évaluation/Paramètres.
-- Voir [[Projet:Évaluation/Bot#Paramétrage]] pour le format.
local function lireParametres(sousPageEvaluation)
local params = {}
local page = mw.title.new(sousPageEvaluation .. '/Paramètres')
if page.exists then
for ligne in mw.text.gsplit(page:getContent(), '\n', true) do
param, valeur = string.match(ligne, "^%s*([%a%d]+)%s*=(.+)")
if param and valeur then
params[param] = mw.text.trim(valeur)
end
end
end
return params
end
-- Renvoie le nom du projet et l'emplacement de la sous-page évaluation à partir des arguments.
-- Le cas standard est celui où seul projet est spécifié. La sous-page d'évaluation est alors Projet:<projet>/Évaluation.
-- Certains projets sont en sous-page d'un autre projet et ont besoin de fournir une autre valeur pour sous-page évaluation.
-- Enfin, dans les anciennes versions des pages, le bandeau n'avait qu'un paramètre donnant directement un lien
-- [[sous-page|nom du projet]]. Pour permettre l'affichage de ces anciennes versions, la fonction peut extraire les
-- deux paramètres d'un tel lien.
local function extraireProjetEtSousPageEval(args)
local projet = args['projet'] or ''
local sousPageEvaluation = args['sous-page évaluation'] or ''
local lienProjet = args['lien projet'] or ''
if projet == '' then
projet = string.match(lienProjet, '|([^%]]+)') or ''
end
if sousPageEvaluation == '' then
if lienProjet ~= '' then
sousPageEvaluation = string.match(lienProjet, '%[%[([^|%]]+)')
else
sousPageEvaluation = 'Projet:' .. projet .. '/Évaluation'
end
end
return projet, sousPageEvaluation
end
-- Construit un lien vers cible. Une cible commençant par '/' est considérée comme étant relative à sousPageEvaluation.
local function construireLienNavigation(sousPageEvaluation, cible, texte)
if cible:sub(1, 1) == '/' then
cible = sousPageEvaluation .. cible
end
return '[[' .. cible .. '|' .. texte .. ']]'
end
-- Lit un unique paramètre de la sous-page /Évaluation/Paramètres d'un projet (utile pour les tests).
function p.lireParametre(frame)
local _, sousPageEvaluation = extraireProjetEtSousPageEval(frame.args)
return lireParametres(sousPageEvaluation)[frame.args['paramètre']] or ''
end
-- Construit le bandeau de navigation pour les sous-pages /Évaluation/Historique, /Évaluation/Index, etc.
function p.bandeauNavigationEvaluation(frame)
local projet, sousPageEvaluation = extraireProjetEtSousPageEval(frame.args)
local lienPrecedent = ''
if (frame.args['lien précédent'] or '') ~= '' then
lienPrecedent = '← ' .. construireLienNavigation(sousPageEvaluation, frame.args['lien précédent'],
frame.args['nom précédent'] or 'précédent')
end
local lienSuivant = ''
if (frame.args['lien suivant'] or '') ~= '' then
lienSuivant = construireLienNavigation(sousPageEvaluation, frame.args['lien suivant'],
frame.args['nom suivant'] or 'suivant') .. ' →'
end
local params = lireParametres(sousPageEvaluation)
local couleurFond = params['wp10FondCadre']
local logo = ''
if (params['wp10Logo'] or '') ~= '' then
logo = '[[Image:' .. params['wp10Logo'] .. '|25px]] '
end
local bandeau = mw.html.create('table')
:addClass('bandeau-navigation-evaluation')
:css('background', couleurFond)
:tag('tr')
:tag('td')
:css('width', '20%'):css('text-align', 'left')
:wikitext(logo .. '[[' .. sousPageEvaluation .. '|' .. projet .. ']]')
:done()
:tag('td')
:css('width', '60%')
:done()
:tag('td')
:css('width', '20%'):css('text-align', 'right')
:wikitext('[[Projet:Évaluation|Évaluation]] [[Fichier:Rio de Janeiro 2016 Summer Olympics bid icon (blue) 70.svg|25px]]')
:done()
:done()
:tag('tr')
:tag('td')
:css('text-align', 'left'):css('border-top', '1px solid #aaaaaa')
:wikitext(lienPrecedent)
:done()
:tag('td')
:wikitext('↑[[' .. mw.title.getCurrentTitle().basePageTitle.prefixedText .. '|(haut)]]')
:done()
:tag('td')
:css('text-align', 'right'):css('border-top', '1px solid #aaaaaa')
:wikitext(lienSuivant)
:done()
:done()
return tostring(bandeau)
end
return p