Module:Bandeau : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
Ligne 20 : Ligne 20 :
  
 
function p.bandeau(frame)
 
function p.bandeau(frame)
    args = frame:getParent().args
+
args = frame:getParent().args
   
+
 
    --Code HTML brut
+
--Code HTML brut
    if args.raw then
+
if args.raw then
        res = frame:preprocess('<nowiki>' .. p._bandeau() .. '</nowiki>') .. '\n:Éxecution : ' .. os.clock() .. 's'
+
res = frame:preprocess('<nowiki>' .. p._bandeau() .. '</nowiki>') .. '\n:Éxecution : ' .. os.clock() .. 's'
        return res
+
return res
 
else
 
else
 
return p._bandeau()
 
return p._bandeau()
Ligne 32 : Ligne 32 :
  
 
function p._bandeau()
 
function p._bandeau()
    --Construction HTML du bandeau
+
--Construction HTML du bandeau
    local res = mw.html.create('div')
+
local res = mw.html.create('div')
  
    res
+
res
        :addClass(argument('class') or p.classStructureBoite)
+
--:addClass(argument('class') or p.classStructureBoite)
        --:cssText(args.style)--argument('style')
+
:cssText(args.style)--argument('style')
    if argument('image') then
+
if argument('image') then
        res
+
res
 
:tag('div')
 
:tag('div')
                :addClass('test-bandeau-image')
+
:addClass('test-bandeau-image')
                :wikitext(args.image)
+
:wikitext(args.image)
    end
+
end
    res
+
res
        :tag('p')
+
:tag('p')
        :addClass('test-bandeau-texte')
+
:addClass('test-bandeau-texte')
        :wikitext(argument('texte') or erreur(p.erreurArgumentTitre))
+
:wikitext(argument('texte') or erreur(p.erreurArgumentTitre))
  
 
return tostring(res)
 
return tostring(res)

Version du 20 février 2014 à 13:25

La documentation pour ce module peut être créée à Module:Bandeau/doc

--Ce module implémente le modèle {{Bandeau}}.

--Standardisation des bandeaux ([[Catégorie:Modèle de bandeau]]).
--Créer une fonction exportable pour le modèle {{Bandeau}} (ns:all).
--Créer une fonction exportable pour les bandeaux d'article (ns:0).
--Créer une fonction exportable pour les bandeaux de section (ns:0).
--Créer une fonction exportable pour les bandeaux d'ébauche (ns:0).
--Créer une fonction exportable pour les bandeaux de discussion (ns:1).
--Créer une fonction exportable pour les bandeaux système (ns:8).
 
local p = {}

local TableBuilder = require('Module:TableBuilder')

p.classStructureBoite = 'bandeau-simple plainlinks'
p.styleStructureBoite = 'background:#f9f9f9;'
p.styleStructureImage = 'display:table-cell; vertical-align:middle; width:50px;'
p.styleStructureTexte = 'display:table-cell; vertical-align:middle;'
p.erreurArgumentTitre = 'Paramètre « texte » manquant'

function p.bandeau(frame)
	args = frame:getParent().args

	--Code HTML brut
	if args.raw then
		res = frame:preprocess('<nowiki>' .. p._bandeau() .. '</nowiki>') .. '\n:Éxecution : ' .. os.clock() .. 's'
		return res
	else
		return p._bandeau()
	end
end

function p._bandeau()
	--Construction HTML du bandeau
	local res = mw.html.create('div')

	res
		--:addClass(argument('class') or p.classStructureBoite)
		:cssText(args.style)--argument('style')
	if argument('image') then
		res
			:tag('div')
				:addClass('test-bandeau-image')
				:wikitext(args.image)
	end
	res
		:tag('p')
		:addClass('test-bandeau-texte')
		:wikitext(argument('texte') or erreur(p.erreurArgumentTitre))

	return tostring(res)
end

function p.ebauche(frame)
	args = frame:getParent().args
	tab = TableBuilder.new()

	--Construction HTML du bandeau
	structureHtml('div', 'test-bandeau-article test-bandeau-niveau-information plainlinks')
	if argument('image') then
		structureHtml('div', 'test-bandeau-image', nil, args.image)
		structureHtmlFin('div')
	end
	structureHtml('p', 'test-bandeau-texte', nil, argument('texte') or erreur(p.erreurArgumentTitre))
	structureHtmlFin('p')
	structureHtmlFin('div')

	return tab.concat()
end


function argument(parametre)
	--Test de paramètre vide interprété par Lua
	if args[parametre] == '' then return nil end
	return args[parametre]
end
 
function erreur(texte)
	return '<span class="error">Erreur : ' .. texte .. '</span>'
end

function structureHtml(balise, class, style, contenu)
	tab.insert('<')
	   .insert(balise)

	if class then
		tab.insert(' class="')
		   .insert(class)
		   .insert('"')
	end

	if style then
		tab.insert(' style="')
		   .insert(style)
		   .insert('"')
	end

	tab.insert('>')
	   .insert(contenu)
end

function structureHtmlFin(balise)
	tab.minsert('</', balise, '>')
end

return p