Aller au contenu

Module:Palette

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.

Documentation[voir] [modifier] [historique] [purger]

Utilisation

Ce module permet l'implémentation de l'ensemble despalettes de navigationsur Wikipédia français. Il est l'équivalent du module nommé Navbox en anglais.

Ce module ne suffit pas à implémenter les palettes. La fonction Afficher / Masquer est permise par un codeJavaScriptprésent dansMediaWiki:Common.js#L-233.La mise en formecssest gérée parMediaWiki:Common.css#L-1061,ainsi que parMediaWiki:Vector-2022.css#L-237pour lemode sombre.

Fonctions exportables

Modules externes et autres éléments dont ce module a besoin pour fonctionner

  • mw.text.trim– Enlève les espaces au début et à la fin d'une chaine de caractères;
  • mw.title.getCurrentTitle– Retourne l'objet titleassocié à la page courante. Un objet title contient les différentes informations sur une page comme son titre, son espace de noms, son contenu,etc.

Exemples

DansModèle:Palette,ce module est appelé de la façon suivante:

{{#invoke:Palette | listePalette | maxPalette = 20
|{{Palette {{{1}}} |{{{parametre palette1|}}}| nocat={{{nocat1|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{2}}} |{{{parametre palette2|}}}| nocat={{{nocat2|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{3}}} |{{{parametre palette3|}}}| nocat={{{nocat3|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{4}}} |{{{parametre palette4|}}}| nocat={{{nocat4|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{5}}} |{{{parametre palette5|}}}| nocat={{{nocat5|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{6}}} |{{{parametre palette6|}}}| nocat={{{nocat6|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{7}}} |{{{parametre palette7|}}}| nocat={{{nocat7|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{8}}} |{{{parametre palette8|}}}| nocat={{{nocat8|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{9}}} |{{{parametre palette9|}}}| nocat={{{nocat9|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{10}}} |{{{parametre palette10|}}}| nocat={{{nocat10|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{11}}} |{{{parametre palette11|}}}| nocat={{{nocat11|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{12}}} |{{{parametre palette12|}}}| nocat={{{nocat12|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{13}}} |{{{parametre palette13|}}}| nocat={{{nocat13|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{14}}} |{{{parametre palette14|}}}| nocat={{{nocat14|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{15}}} |{{{parametre palette15|}}}| nocat={{{nocat15|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{16}}} |{{{parametre palette16|}}}| nocat={{{nocat16|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{17}}} |{{{parametre palette17|}}}| nocat={{{nocat17|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{18}}} |{{{parametre palette18|}}}| nocat={{{nocat18|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{19}}} |{{{parametre palette19|}}}| nocat={{{nocat19|{{{nocat|}}}}}} | parent=bandeau}}
|{{Palette {{{20}}} |{{{parametre palette20|}}}| nocat={{{nocat20|{{{nocat|}}}}}} | parent=bandeau}}
}}

Voir aussi

localmwTrim=mw.text.trim

localp={}

functionp.listePalette(frame)
localargs=frame.args

localparentArgs={}
fork,vinpairs(frame:getParent().args)do
-- effectue un trim sur les paramètres non nommés
iftype(k)=='number'then
v=mwTrim(v)
end
parentArgs[k]=v
end

localwikiTable={'<div class= "navbox-container" style= "clear:both;" >\n'}
setmetatable(wikiTable,{__index=table})-- permet d'utiliser les fonctions de table comme des méthodes
localpalettesVerticales=''

localmaxPalette=tonumber(args.maxPalette)or4
localcategoriePaletteInconnue='[[Catégorie:Modèle Palette - Palette inconnue]]'
localcategorieTropDePalette='[[Catégorie:Modèle Palette - Page contenant trop de palettes]]'
localcategoriePaletteEnDouble='[[Catégorie:Modèle Palette - Palette affichée en double]]'

localcategories={}

localfunction_erreur(texte,param,...)
ifparamthentexte=texte:format(param,...)
end
localsep=#wikiTable>1and'<hr>'or''
returnsep..'<p><strong class= "error" style= "padding-left:.5em;" >'..texte..'</strong></p>\n'
end
localfunction_pasDePalette()
return_erreur('Erreur dans l’utilisation du [[Modèle:Palette]]: paramètre obligatoire absent.')
end

localfunction_paletteInconnue(i)
categories.paletteInconnue=categoriePaletteInconnue
localnomPalette=parentArgs[i]
return_erreur('Erreur: il n’existe pas de modèle {{[[Modèle:Palette %s|Palette %s]]}} [[Aide:Palette de navigation|(aide)]]',nomPalette,nomPalette)
end

localfunction_paletteEnDouble(i)
categories.paletteEnDouble=categoriePaletteEnDouble
return""-- inutile d'afficher une erreur visible pour ce cas puisque la mise en page n'est pas cassée
end

localfunction_paletteAvecParametres(i)
localargsPalette={}
forn,vinpairs(parentArgs)do
ifnottonumber(n)then
ifn:match(' '..i..'$')then
argsPalette[n:sub(1,n:len()-1-tostring(i):len())]=v
elseifn=='nocat'..ithen
argsPalette.nocat=v
elseifnotargsPalette[n]andn~='stylecorps'then
argsPalette[n]=v
end
end
end
returnframe:expandTemplate{title='Palette '..parentArgs[i],args=argsPalette}
end

localfunction_tropDePalettes()
categories.tropDePalette=categorieTropDePalette
return_erreur('Erreur dans le [[Modèle:Palette]]: trop de palettes (maximum: %s)',maxPalette)
end


localboite=parentArgs['titre boîte déroulante']orparentArgs['titre boite déroulante']
ifboitethen
wikiTable[1]='<div class= "NavFrame navbox-container" style= "clear:both;" >\n'
..'<div class= "NavHead" style= "text-align:center; height:1.6em; background-color:'
..(parentArgs.couleurFondTor'#CCF')
..'; color:'..(parentArgs.couleurTexteTor'black')..'; ">'
..boite
..'</div>\n<div class= "NavContent" style= "margin-top:2px;" >\n'
end
locali=1
localpalettesValides={}

whileparentArgs[i]andi<=maxPalettedo
ifparentArgs[i]~=''then
for_,jinipairs(palettesValides)do
ifargs[i]==args[j]andnotargs[i]:match('^palette ')then
wikiTable:insert(_paletteEnDouble(i))
end
end
table.insert(palettesValides,i)
ifparentArgs[i]:match('^<')then
wikiTable:insert(parentArgs[i])
elseifparentArgs[i]:match('^{|')then
wikiTable:insert('\n')
wikiTable:insert(parentArgs[i])
else
localcodePalette=args[i]
ifcodePalette:match('^%[%[:Modèle:')then-- La palette n'existe pas
wikiTable:insert(_paletteInconnue(i))
table.remove(palettesValides)
elseifcodePalette:match('^palette avec paramètres')then-- C'est une palette nécessitant des paramètres nommés
wikiTable:insert(_paletteAvecParametres(i))
elseifcodePalette:match('^palette verticale avec paramètres')then-- C'est une palette verticale nécessitant des paramètres nommés
palettesVerticales=palettesVerticales..(_paletteAvecParametres(i))
elseifcodePalette:match('^palette verticale')then-- C'est une palette verticale
palettesVerticales=palettesVerticales..codePalette:sub(18)
else
wikiTable:insert((codePalette:gsub('^<div class= "navbox%-container" ','<div')))
end
end
end
i=i+1
end

ifi==1then
wikiTable:insert(_pasDePalette())
elseifi>maxPaletteandparentArgs[i]andparentArgs[i]~=''then
wikiTable:insert(_tropDePalettes())
end
if#wikiTable==1then
wikiTable[1]=palettesVerticales
else
ifboitethen
wikiTable:insert('</div>')
end
wikiTable:insert('</div>'..palettesVerticales)
end
ifmw.title.getCurrentTitle().namespace==0then
fori,vinpairs(categories)do
wikiTable:insert(v)
end
end

returnwikiTable:concat()
end

returnp