Module:Méta palette
Fonctions utiles pour les méta palettes de navigation, actuellement seulement le support des redirections.
Liens internes
[modifier le code]Tout le monde connaît les liens internes : il suffit de cliquer dessus pour arriver sur l'article désiré.
Ce qui est bon à savoir, c'est qu'un lien interne s'affiche généralement en bleu mais que si la cible du lien est identique à l'article affiché, le lien s'affiche en noir gras[1] et ressort donc bien à la lecture.
Redirections
[modifier le code]Une redirection est une page qui redirige vers un autre article, la cible de la redirection. Dans un article, une redirection s'affiche en bleu comme un lien normal ; il suffit de cliquer dessus pour arriver sur l'article cible de la redirection.
Ce qui est bon à savoir, c'est que le lien d'une redirection n'est jamais identique à l'article affiché. Le lien s'affichera donc toujours en bleu et jamais en noir gras[1], même si la cible de la redirection est identique à l'article affiché.
Palettes
[modifier le code]Les palettes sont des modèles contenant une collection de liens internes et prévues pour être incluses dans plusieurs articles. Par exemple, la Palette Président de la République française reprend la liste des présidents de la République française, et elle est incluse en bas de l'article de chacun des présidents. Ce qu'il y a de bien, c'est que dans l'article sur Raymond Poincaré par exemple, le nom de Raymond Poincaré apparaîtra en noir gras[1] dans la palette en bas de la page, ce qui permet de le situer rapidement dans la liste des présidents français.
Le problème, c'est que le lien reste bel et bien en bleu au lieu d'apparaître en noir gras[1] si la palette contient une redirection au lieu de contenir un lien vers l'article lui-même. C'est pour cela qu'il existe une recommandation qui préconise d'éviter les redirections dans les palettes.
Méta palettes
[modifier le code]Supposons qu'on veuille une palette avec la liste de tous les pays d'Afrique, puis une autre palette avec la liste des gouvernements des pays d'Afrique, une autre avec la culture, la musique, etc. Au lieu de recopier la liste de tous les pays d'Afrique dans chacune de ces palettes (bonjour les erreurs et la maintenance), on crée une méta palette, par exemple la {{Méta palette de navigation Afrique}} : on lui donne le préfixe que l'on désire, par exemple gouvernement, culture ou musique, et la méta palette génère la liste de tous les articles avec ce préfixe pour tous les pays d'Afrique. Il suffit donc de créer les palettes désirées en se contentant d'appeler la méta palette : {{Méta palette de navigation Afrique|préfixe=Culture}}
.
Le problème, c'est qu'une méta palette exige une convention très stricte sur les titres des articles. Par exemple la méta palette exigera un titre Culture du Maroc, ce qui coince si l'article s'intitule Culture marocaine. Utiliser une redirection de Culture du Maroc vers Culture marocaine n'est pas une solution valable puisqu'une redirection apparaîtra toujours comme un lien bleu alors que le titre Culture du Maroc devrait apparaître en noir gras[1] dans l'article Culture marocaine.
La solution est de « détourner » le lien dans la palette qui appelle la méta-palette : au lieu d'écrire simplement {{Méta palette de navigation Afrique|préfixe=Culture}}
on écrira plutôt {{Méta palette de navigation Afrique|préfixe=Culture|Culture du Maroc=Culture marocaine}}
pour indiquer qu'on détourne le lien Culture du Maroc demandé par la méta palette vers l'article Culture marocaine qui est l'article réel. La méta palette générera alors religieusement un lien vers Culture marocaine, qui apparaîtra donc en noir gras[1] dans cet article.
Mode d'emploi
[modifier le code]Détournement dans les palettes
[modifier le code]Dans les palettes appelant une méta palette, par exemple {{Palette Culture en Afrique}}, repérer les cas où la méta palette utilise une redirection. Si par exemple, la méta palette génère un lien [[Culture de l'Égypte]] qui est en fait une redirection vers l'article [[Culture égyptienne]], il suffit de « détourner » le lien [[Culture de l'Égypte]] vers [[Culture égyptienne]] en le disant à la méta palette avec {{Méta palette de navigation Afrique | préfixe = Culture | Culture de l'Égypte = Culture égyptienne}}
. La méta palette génèrera alors le bon lien, qui apparaîtra en noir gras[1] dans l'article Culture égyptienne.
Inutile d'essayer de reproduire exactement le lien généré par la méta palette, avec tous ses blancs soulignés et ses espaces insécables. Le mieux est de cliquer sur le lien et de copier/coller le texte affiché. Par exemple dans « (Redirigé depuis XXX) » il suffit de copier/collet le XXX. Le module comprendra.
Support dans les méta palettes
[modifier le code]Un support est nécessaire de la part des méta palettes. Il n'est pas nécessaire ni possible de supporter tous les paramètres additionnels ; il suffit d'utiliser le Module:Méta palette pour générer les liens, et le module s'occupera du reste. Par exemple, au lieu d'écrire [[Cuisine de l'Égypte|Égypte]]
la méta palette doit écrire {{#invoke:Méta palette|Cuisine de l'Égypte|Égypte}}
Module Méta palette
[modifier le code]Le Module:Méta palette offre un support aux méta palettes. Il ne contient actuellement qu'une seule fonction, lien.
Fonction « lien »
[modifier le code]Cette fonction du Module:Méta palette n'est utilisée que par les méta palettes. Elle formate un lien interne.
Paramètres :
- lien : lien de l'article désiré ;
- texte : texte à afficher.
Cette fonction formate un lien interne, en utilisant comme cible du lien la valeur du premier paramètre et comme texte affiché la valeur du second paramètre. Si le modèle contenant le #invoke (c'est à dire la méta palette) avait été appelé (donc par la palette) avec un paramètre portant le même nom que la valeur du premier paramètre passé au module, alors le module utilisera la valeur du paramètre du modèle comme cible du lien, ce qui permet de détourner le lien.
Par exemple, si le modèle contient
{{#invoke:Méta palette|lien|cible-1|texte-1}}
et que le modèle est appelé avec
{{Modèle}}
alors le lien généré sera
[[cible-1|texte-1]]
.
Mais si le même modèle est appelé avec
{{Modèle|cible-1=toto}}
alors le lien généré sera
[[toto|texte-1]]
.
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 (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
- en blanc gras en mode sombre.
--[[
Fonctions utiles pour les méta-palettes de navigation.
]]
local p = {}
--[[
Nettoyage d'une chaîne.
Argument: lien reçu du #invoke
Résultat: l'argument, avec les diverses espaces HTML remplacés par des
espaces normales
Ce code est utile, par exemple avec lien = "Culture_en Égypte". Si on
ne le fait pas, les résultats ne seront pas les résultats attendus.
]]
local function nettoyage(chaine)
if type(chaine) ~= "string" then return chaine end
return chaine
-- nbsp
:gsub( '\194\160', ' ' )
:gsub( ' ', ' ' )
:gsub( ' ', ' ' )
-- narrow nbsp
:gsub( '\226\128\175', ' ' )
:gsub( ' ', ' ' )
-- thin space
:gsub( '\226\128\137', ' ' )
:gsub( ' ', ' ' )
:gsub( ' ', ' ' )
-- simple space
:gsub( ' ', ' ' )
-- underscore
:gsub( '_', ' ' )
end
--[[
Formate un lien interne.
Paramètres: lien: lien de l'article désiré
texte: texte à afficher
Cette fonction formate un lien interne, en utilisant comme cible du lien
la valeur du premier paramètre et comme texte affiché la valeur du second
paramètre. Si le modèle contenant le #invoke avait été appelé avec un
paramètre portant le même nom que la valeur du premier paramètre passé au
module, alors le module utilisera la valeur du paramètre du modèle comme
cible du lien, ce qui permet de détourner le lien.
Par exemple, si le modèle contient
{{#invoke:Méta palette|lien|cible-1|texte-1}}
et que le modèle est appelé avec
{{Modèle}}
alors le lien généré sera
cible-1|texte-1 (entre crochets)
Mais si le même modèle est appelé avec
{{Modèle|cible-1=toto}}
alors le lien généré sera
toto|texte-1 (entre crochets)
]]
function p.lien(frame)
local args0 = frame.args -- arguments du #invoke
local args1 = frame:getParent().args -- arguments du modèle appelant
-- Le modèle appelant (la méta palette) génère automatiquement la cible du lien
-- en assemblant divers éléments.
local lienMeta = mw.text.trim(args0[1]) -- cible générée par la meta palette
-- Si la palette appelant la méta palette lui passe un argument dont le nom est
-- identique à celui du lien généré par la méta palette, utiliser la valeur de
-- cet argument comme cible du lien.
local lien1 = args1[lienMeta] -- cible détournée par la palette
if lien1 then return "[[" .. lien1 .. "|" .. args0[2] .. "]]" end
-- Le lien généré par la méta palette peut contenir des blancs soulignés,
-- ou des espaces insécables, il faut donc nettoyer le lien généré avant
-- de voir si la palette n'a pas utilisé un nom de paramètre nettoyé.
local lien2 = args1[nettoyage(lienMeta)] -- cible détournée par la palette
if lien2 then return "[[" .. lien2 .. "|" .. args0[2] .. "]]" end
return "[[" .. lienMeta .. "|" .. args0[2] .. "]]"
end
return p