Module:Navbar
Utilisation
Ce module fournit les fonction Navbar.navbar(frame)
et Navbar._navbar(args)
servant à la création, respectivement depuis un modèle et un module, de trois liens internes « voir », « discussion » et « éditer », pour permettre par exemple de mettre un lien direct dans un article vers la modification d'un modèle et ne pas avoir besoin de chercher le nom de ce modèle dans le wikicode.
Le module Navbar est initialement utilisé pour l'implémentation de en:Template:Navbar sur la Wikipédia en anglais. Le module ayant été copié tel quel, les boutons générés sont restés sous leurs noms anglais (« view », « talk », « edit », etc.) Sur Wikipédia en français, ce module n'est pas utilisé par Modèle:Tnavbar qui est codé entièrement en wikicode. La seule utilisation significative actuelle est dans Module:Medical cases chart, pour la génération de graphiques liés à la pandémie de Covid-19.
Pour son implémentation, ce modèle utilise la feuille de styles Module:Navbar/styles.css, ainsi que la sous-page contenant les paramètres : Module:Navbar/configuration.
Fonctions exportables
navbar(frame)
– Même fonction que_navbar(args)
ci-dessous, mais pour une invocation directement depuis un modèle._navbar(args)
– Prend en argument un tableau contenant les paramètres (tous facultatifs) :style
: paramètre libre de style css à appliquer à la navbar. Exemple :float:right; padding:5px; border:1px solid;
;fontstyle
: paramètre libre de style css à appliquer au texte. Exemple :color: green; font-style: italic;
;fontcolor
: valeur du style css à appliquer au texte pourcolor:
uniquement. Incompatible avec le paramètrefontstyle
. Exemple :green
collapsible
: booléen[a] Lorsquetrue
, le texte est placé sur la gauche de façon à être adapté pour une disposition sur une palette.mini
: booléen[a], forcé à1
lorsqueplain
vautfalse
. Lorsquetrue
, les noms sur les boutons sont remplacés par leurs initiales « v », « t », « e », etc.plain
: booléen[a] pour enlever le texte qui précède les boutons.brackets
: booléen[a] ajoutant des crochets[ ]
autour des boutons lorsquetrue
.text
: texte à afficher avant les liens. Par défaut :Cette boîte :
. N'est pas pris en compte siplain
vauttrue
.template
: nom du modèle sans l'espace de nom. Par défaut, le nom du modèle contenant l'appel de module.talk
/t
/d
,edit
/e
,hist
/h
,move
/m
,watch
/w
: arguments associés à des paramètres numériques quelconques (1, 2, 3, etc.) Lorsque présents, activent les boutons associés. (« view » est toujours activé, « talk » et « edit » sont activés par défaut sauf quand le paramètretemplate
est défini.noedit
: booléen[a] servant à retirer le lien pour éditer le modèle.
Retourne le wikitexte pour une navbar.
- Lorsque ce module est appelé depuis un modèle, un booléen est défini comme valant
true
lorsqu'il est non vide, etfalse
lorsqu'il est vide. Lorsqu'il est appelé depuis un autre module, il est préférable d'utiliser les vraies valeurs booléennestrue
etfalse
pour une meilleure clarté du code.
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.getCurrentFrame
– Retourne l'objet frame courant, généralement l'objet frame du dernier appel à#invoke
;frame:getParent()
– Si le{{#invoke:}}
est contenu dans un modèle,frame
contient les arguments passés dans le{{#invoke:}}
etframe:getParent()
contient les paramètres donnés dans l'appel de modèle.frame:getTitle()
– Renvoie le titre associé à l'objet frame sous forme de chaine de caractères. Pour l'objet frame créé par{{#invoke:}}
, c'est le titre du module invoqué ;frame:extensionTag()
– Permet l'utilisation d'équivalents lua aux fonctions d'analyse syntaxique, appelées via le mot magique{{#tag:}}
;
mw.title.new
– Crée un nouvel objet title ;title:fullUrl()
– Renvoie l'url associée à l'objet title encodée.
mw.html.create
– Crée un nouvel objet mw.html, équivalent d'un élément HTML ;html:addClass()
,html:cssText()
,html:attr
,html:tag()
,html:wikitext()
,html:done()
ethtml:node()
: méthodes de la bibliothèque mw.html.
Module:Arguments
– Module simplifiant l'utilisation des arguments de#invoke
;Module:TableTools
– Module fournissant diverses fonctions de manipulation des tables lua ;
- Module en sous-page : Module:Navbar/configuration
- Feuille de style css : Module:Navbar/styles.css
Exemples
Appel depuis un modèle
Ce module peut être appelé depuis un modèle de la manière suivante :
{{#invoke:Navbar|navbar|params}}
Appel depuis un module
local navbar = require('Module:Navbar')
local p={}
function p.main(param1, param2, args)
local wikitexte = ''
-- code pour la génération d'un modèle visuel en wikitexte
return wikitexte .. navbar._navbar(args)
end
return p
Exemple concret
{{#invoke:Navbar|navbar|template=Navbar|brackets=oui|fontstyle=color: green; font-style: italic;|m}}
ou le code équivalent en lua
local navbar = require('Module:Navbar')
navbar._navbar({template="Navbar", brackets=true, fontstyle="color: green; font-style: italic;", m})
donnent tous les deux :
Comme vous pouvez le constater, le module n'est pas entièrement fonctionnel en l'état car certaines classes css utilisées par la version anglaise ne sont pas présentes sur Wikipédia en français.
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.
local p = {}
local getArgs
function p._navbar(args)
local titleArg = 1
if args.collapsible then
titleArg = 2
if not args.plain then
args.mini = 1
end
if args.fontcolor then
args.fontstyle = 'color:' .. args.fontcolor .. ';'
end
args.style = 'float:left; text-align:left; width:6em;'
end
local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local title = mw.title.new(mw.text.trim(titleText), 'Template');
if not title then
error('Invalid title ' .. titleText)
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '';
local div = mw.html.create():tag('div')
div
:addClass('plainlinks')
:addClass('hlist')
:addClass('navbar')
:cssText(args.style)
if args.mini then div:addClass('mini') end
if not (args.mini or args.plain) then
div
:tag('span')
:css('word-spacing', 0)
:cssText(args.fontstyle)
:wikitext(args.text or 'This box:')
:wikitext(' ')
end
if args.brackets then
div
:tag('span')
:css('margin-right', '-0.125em')
:cssText(args.fontstyle)
:wikitext('[')
:newline();
end
local ul = div:tag('ul');
ul
:tag('li')
:addClass('nv-view')
:wikitext('[[' .. title.fullText .. '|')
:tag(args.mini and 'abbr' or 'span')
:attr('title', 'View this template')
:cssText(args.fontstyle)
:wikitext(args.mini and 'v' or 'view')
:done()
:wikitext(']]')
:done()
:tag('li')
:addClass('nv-talk')
:wikitext('[[' .. talkpage .. '|')
:tag(args.mini and 'abbr' or 'span')
:attr('title', 'Discuss this template')
:cssText(args.fontstyle)
:wikitext(args.mini and 't' or 'talk')
:done()
:wikitext(']]');
if not args.noedit then
ul
:tag('li')
:addClass('nv-edit')
:wikitext('[' .. title:fullUrl('action=edit') .. ' ')
:tag(args.mini and 'abbr' or 'span')
:attr('title', 'Edit this template')
:cssText(args.fontstyle)
:wikitext(args.mini and 'e' or 'edit')
:done()
:wikitext(']');
end
if args.brackets then
div
:tag('span')
:css('margin-left', '-0.125em')
:cssText(args.fontstyle)
:wikitext(']')
:newline();
end
if args.collapsible then
div
:done()
:tag('span')
:css('font-size', '110%')
:cssText(args.fontstyle)
:wikitext(args[1])
end
return tostring(div:done())
end
function p.navbar(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return p._navbar(getArgs(frame))
end
return p