Communauté  • Livre d'or
Chats noirs.jpg Actualités, astuces, interview... Venez lire la gazette de ce printemps de Vikidia ! DessinInterview.png
Cette page est protégée.

Module:Bandeau géant

Aller à la navigation Aller à la recherche
 Documentation[modifier] [purger]

Le module : Bandeau géant sert à créer des bandeaux, non pas pour les pages de contenu mais seulement pour les pages d’organisation et de discussion. Ces bandeaux prennent toute la largeur de la page (à l’inverse de ceux du module : Bandeau grand), entre zéro et une icône, et une zone de texte. Si idéalement, ce module ne serait accedé que depuis d’autres modules, ce n’est pas le cas actuellement, la fonction Bandeau offrant une manière générique de créer des bandeaux.

Fonctions

Le module offre trois fonctions appelables de l’extérieur :

  • bandeau, qui sert à créer les bandeaux ;
  • imageBandeau, qui sert à formater les arguments image_gauche et image_droite de la fonction bandeau ;
  • Bandeau, qui permet de créer un bandeau depuis un modèle.

À faire

  • Il faudrait bloquer les appels de bandeau et imageBandeau depuis les modèles, a priori en ajoutant un paramètre initial qui fait une erreur si non nul.
  • Il faut terminer d’éradiquer le modèle : Méta bandeau, faire que le modèle : Averto et ses copains utilisent cette fonction, etc.
local p = {}

--
-- Fonction qui génère le bandeau
--

function p.bandeau( canari, texte, couleur_fond, couleur_bord, image_gauche, image_droite )
	if canari ~= nil then
		error( 'utilisez la fonction « BandeauGeant » du [[module : Divers bandeaux]]' )
	end

	local html = mw.html.create( 'div' )
	html:addClass( 'plainlinks' )
	    :css( 'display', 'table' )
	    :css( 'box-sizing', 'border-box' )
	    :css( 'width', '100%' )
	    :css( 'clear', 'right' )
	    :css( 'margin', 'auto' )
	    :css( 'margin-bottom', '10px' )
	    :css( 'padding', '5px' )
	    :css( 'border-width', '0 12px 3px 0' )
	    :css( 'border-style', 'solid' )
	    :css( 'background-color', couleur_fond or 'white' )
	    :css( 'border-color', couleur_bord or '#AAA' )
	    :css( 'text-align', 'left' )

	if image_gauche then
		html:tag( 'div' ):addClass( 'nomobile' )
		                 :css( 'display', 'table-cell' )
		                 :css( 'vertical-align', 'middle' )
		                 :css( 'width', '140px' )
		                 :css( 'text-align', 'center' )
		                 :node( image_gauche )
		                 :done()
	end

	html:tag( 'div' ):css( 'display', 'table-cell' )
	                 :css( 'vertical-align', 'middle' )
	                 :wikitext( texte or 'Texte à compléter' )

	if image_droite then
		html:tag( 'div' ):addClass( 'nomobile' )
		                 :css( 'display', 'table-cell' )
		                 :css( 'vertical-align', 'middle' )
		                 :css( 'width', '140px' )
		                 :css( 'text-align', 'center' )
		                 :node( image_droite )
		                 :done()
	end

	return html
end

--
-- Fonction pour créer les images
--

function p.imageBandeau( canari, image )
	if canari ~= nil then
		error( 'la fonction « imageBandeau » n’est pas destinée à être utilisée depuis un modèle' )
	end

	if not image then return nil end
	local html = mw.html.create()
	return html:wikitext( '[[Fichier:' .. image .. '|100px|link=|alt=|class=noviewer]]' )
end

return p