Bioinformatics Wiki
Sommaire
Utilisation
Ce module permet l'implémentation de l'ensemble des palettes de navigation sur 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 code JavaScript présent dans MediaWiki:Common.js#L-233. La mise en forme css est gérée par MediaWiki:Common.css#L-1061, ainsi que par MediaWiki:Vector-2022.css#L-237 pour le mode sombre.
Fonctions exportables
listePalette(frame)
– implémente {{Palette}}. Prend en argument un frame avec le paramètre nommémaxPalette
valant 4 par défaut et des paramètres non nommés correspondant aux palettes en argument. Retourne le wikicode pour les palettes, accompagné de quelques catégories de maintenance lorsque c'est pertinent : Catégorie:Modèle Palette - Palette inconnue, Catégorie:Modèle Palette - Page contenant trop de palettes ou Catégorie:Modèle Palette - Palette affichée en double ou bien des messages d'erreur.
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 title associé à 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
Dans Modè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
- Module:Palette de navigation, une alternative proposée à ce module, inutilisée pour le moment.
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable ().
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local mwTrim = mw.text.trim
local p = {}
function p.listePalette( frame )
local args = frame.args
local parentArgs = {}
for k, v in pairs( frame:getParent().args ) do
-- effectue un trim sur les paramètres non nommés
if type( k ) == 'number' then
v = mwTrim( v )
end
parentArgs[ k ] = v
end
local wikiTable = { '<div class="navbox-container" style="clear:both;">\n' }
setmetatable( wikiTable, { __index = table } ) -- permet d'utiliser les fonctions de table comme des méthodes
local palettesVerticales = ''
local maxPalette = tonumber( args.maxPalette ) or 4
local categoriePaletteInconnue = '[[Catégorie:Modèle Palette - Palette inconnue]]'
local categorieTropDePalette = '[[Catégorie:Modèle Palette - Page contenant trop de palettes]]'
local categoriePaletteEnDouble = '[[Catégorie:Modèle Palette - Palette affichée en double]]'
local categories = {}
local function _erreur( texte, param, ... )
if param then texte = texte:format( param, ... )
end
local sep = #wikiTable > 1 and '<hr>' or ''
return sep .. '<p><strong class="error" style="padding-left:.5em;">' .. texte .. '</strong></p>\n'
end
local function _pasDePalette()
return _erreur( 'Erreur dans l’utilisation du [[Modèle:Palette]] : paramètre obligatoire absent.' )
end
local function _paletteInconnue( i )
categories.paletteInconnue = categoriePaletteInconnue
local nomPalette = 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
local function _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
local function _paletteAvecParametres( i )
local argsPalette = {}
for n, v in pairs( parentArgs ) do
if not tonumber(n) then
if n:match( ' ' .. i .. '$' ) then
argsPalette[ n:sub(1, n:len() - 1 - tostring(i):len() ) ] = v
elseif n == 'nocat' .. i then
argsPalette.nocat = v
elseif not argsPalette[n] and n ~= 'stylecorps' then
argsPalette[n] = v
end
end
end
return frame:expandTemplate{ title = 'Palette ' .. parentArgs[i], args = argsPalette }
end
local function _tropDePalettes()
categories.tropDePalette = categorieTropDePalette
return _erreur( 'Erreur dans le [[Modèle:Palette]] : trop de palettes (maximum : %s)', maxPalette )
end
local boite = parentArgs['titre boîte déroulante'] or parentArgs['titre boite déroulante']
if boite then
wikiTable[1] = '<div class="NavFrame navbox-container" style="clear:both;" >\n'
.. '<div class="NavHead" style="text-align:center; height:1.6em; background-color:'
.. ( parentArgs.couleurFondT or '#CCF' )
.. '; color:' .. ( parentArgs.couleurTexteT or 'black' ) .. ';">'
.. boite
.. '</div>\n<div class="NavContent" style="margin-top:2px;">\n'
end
local i = 1
local palettesValides = {}
while parentArgs[i] and i <= maxPalette do
if parentArgs[i] ~= '' then
for _, j in ipairs( palettesValides ) do
if args[i] == args[j] and not args[i]:match('^palette ') then
wikiTable:insert ( _paletteEnDouble(i))
end
end
table.insert( palettesValides, i )
if parentArgs[i]:match( '^<' ) then
wikiTable:insert( parentArgs[i] )
elseif parentArgs[i]:match( '^{|' ) then
wikiTable:insert( '\n' )
wikiTable:insert( parentArgs[i] )
else
local codePalette = args[i]
if codePalette:match( '^%[%[:Modèle:' ) then -- La palette n'existe pas
wikiTable:insert( _paletteInconnue( i ) )
table.remove( palettesValides )
elseif codePalette:match( '^palette avec paramètres' ) then -- C'est une palette nécessitant des paramètres nommés
wikiTable:insert( _paletteAvecParametres( i ) )
elseif codePalette:match( '^palette verticale avec paramètres' ) then -- C'est une palette verticale nécessitant des paramètres nommés
palettesVerticales = palettesVerticales .. ( _paletteAvecParametres( i ) )
elseif codePalette: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
if i == 1 then
wikiTable:insert( _pasDePalette() )
elseif i > maxPalette and parentArgs[i] and parentArgs[i] ~= '' then
wikiTable:insert( _tropDePalettes() )
end
if #wikiTable == 1 then
wikiTable[1] = palettesVerticales
else
if boite then
wikiTable:insert( '</div>' )
end
wikiTable:insert( '</div>' .. palettesVerticales )
end
if mw.title.getCurrentTitle().namespace == 0 then
for i, v in pairs( categories ) do
wikiTable:insert( v )
end
end
return wikiTable:concat()
end
return p