Aller au contenu

Module:Navbar

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 11 mars 2016 à 09:27 et modifiée en dernier par Idrahduetdy (discuter | contributions) (Nouvelle page : 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.fontc...). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

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

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 pour color: uniquement. Incompatible avec le paramètre fontstyle. Exemple : green
    • collapsible : booléen[a] Lorsque true, le texte est placé sur la gauche de façon à être adapté pour une disposition sur une palette.
    • mini : booléen[a], forcé à 1 lorsque plain vaut false. Lorsque true, 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 lorsque true.
    • text : texte à afficher avant les liens. Par défaut : Cette boîte : . N'est pas pris en compte si plain vaut true.
    • 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ètre template est défini.
    • noedit : booléen[a] servant à retirer le lien pour éditer le modèle.

Retourne le wikitexte pour une navbar.

  1. a b c d et e Lorsque ce module est appelé depuis un modèle, un booléen est défini comme valant true lorsqu'il est non vide, et false lorsqu'il est vide. Lorsqu'il est appelé depuis un autre module, il est préférable d'utiliser les vraies valeurs booléennes true et false pour une meilleure clarté du code.

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

  • Module:Arguments – Module simplifiant l'utilisation des arguments de #invoke ;
  • Module:TableTools – Module fournissant diverses fonctions de manipulation des tables lua ;

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.

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