Bahaipedia
Bahaipediaدانشنامه بهائی
Menu
Modifications récentes
Articles de base
Aide
Catégories
Page au hasard
Communauté
Dans d’autres projets
Outils
Pages liées
Suivi des pages liées
Téléverser un fichier
Pages spéciales
Version imprimable
Lien permanent
Informations sur la page
Module
Discussion
Voir l’historique
Non connecté(e)
Discussion
Contributions
Créer un compte
Se connecter
Navigation
Navigation
Navegación
Navigation
ナビゲーション
Điều hướng
导航
Navegação
ناوبری
Навигация
Modifications récentes
Articles de base
Aide
Catégories
Page au hasard
Communauté
Dans d’autres projets
Learn more
Weitere Informationen
Aprender más
En savoir plus
詳しく読む
Tìm hiểu thêm
了解更多
Saiba mais
یاد بگیرید بیشتر
Узнать больше
Foi bahá’íe
Bahá’u’lláh
‘Abdu’l-Bahá
Enseignements
Tools
Werkzeuge
Herramientas
Outils
ツール
Công cụ
工具
Ferramentas
ابزارها
Инструменты
Pages liées
Suivi des pages liées
Téléverser un fichier
Pages spéciales
Version imprimable
Lien permanent
Informations sur la page
Translations
Übersetzungen
Traducciones
Traductions
各言語版
Bản dịch
翻译
Traduções
به زبان‌های دیگر
Переводы

Module:Fix

De Bahaipedia
Aller à :navigation, rechercher

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

local p = {}

local function necessiteCadre( contenu )
	if contenu:match( '\n[ \t]*\n' ) -- ligne vide (donc plusieurs paragraphes)
	or contenu:match( '\n[*#:]' )    -- liste à puces, liste numérotée, indentation
	then
		return true
	else
		return false
	end
end

-- utilisé par {{Citation}} et {{Citation étrangère}}
function p.necessiteCadre( frame )
	local contenu = frame.args[ 1 ]
	if necessiteCadre( contenu ) then
		return '1'
	else
		return ''
	end
end

local function affichageBloc( args )
	local background = args.background
	local color = args.color
	if background == nil or background == '' then
		background = 'var(--background-color-base, #fff)'
	end
	if color == nil or color == '' then
		color = 'var(--color-base, #202122)'
	end

	local html = mw.html.create( '' )
		:wikitext( '\n' )
		:tag( 'div' )
			:cssText( 'position:relative; display:table; margin-top:0.8em;' )
			:tag( 'div' )
				:addClass( 'need_ref' )
				:cssText( 'cursor:help; overflow:hidden; padding-bottom:0;' )
				:css{ background = background, color = color }
				:attr{ title = args.titre }
				:wikitext( args[ 1 ], '\n' )
				:done()
			:tag( 'div' )
				:addClass( 'need_ref_tag' )
				:cssText( 'position:absolute; top:-0.6em; left:1em; padding:0 0.5em; font-size:80%; line-height:1em;' )
				:css{ background = background, color = color }
				:wikitext( args.message2 )
		:allDone()

	return tostring( html )
end

local function affichageInline( args, ajouterinfobulle )
	local html = mw.html.create( '' )

	if args[ 1 ] and args[ 1 ]:match( '%S' ) then
		html:tag( 'span' )
				:addClass( 'need_ref' )
				:cssText( 'cursor:help;' )
				:attr{ title = args.titre }
				:wikitext( mw.text.trim( args[ 1 ] ) )
				:done()
		ajouterinfobulle = false -- Facultatif, on pourrait accepter l'infobulle sur l'exposant quel que soit le cas.
	end
	if ajouterinfobulle then
		html:tag( 'sup' )
			:addClass( 'need_ref_tag' )
			:cssText ( 'padding-left:2px;' )
			:attr{ title = args.titre2 }
			:wikitext( args.message2 )
		:allDone()
	else
		html:tag( 'sup' )
			:addClass( 'need_ref_tag' )
			:cssText ( 'padding-left:2px;' )
			:wikitext( args.message2 )
		:allDone()
	end

	return tostring( html )
end

local function generateMessage( args, nommodele, modeinfobulle ) -- Le dernier paramètre sert de booléen pour forcer une infobulle dans le lien interne.
	local modeinfobulle = modeinfobulle or false
	local messageloc = ''
	local infobulle_mise = false
	if args.message and args.message ~= '' then
		local cible
    	if args.message_lien and args.message_lien ~= '' then
    		if args.message_lien == 'non' then
				cible = false
			else
				cible = args.message_lien
			end
		else
			cible = args.message
		end

		if cible then
			if cible:sub( 1, 1 ) == ':' then
				cible = cible:sub( 2 )
			end
			if modeinfobulle == true then -- On force l'infobulle à l'intérieur. Il y aurait peut-être plus smple, avec un seul message et l'ajout d'une classe désactivant les infobulles sur les liens internes
				messageloc = '[[:' .. cible .. '|' .. '<span title="' .. args.titre2 ..'">&#91;' .. args.message .. '&#93;</span>' .. ']]'
				infobulle_mise = true
			else
				messageloc = '[[:' .. cible .. '|&#91;' .. args.message .. '&#93;]]'
				infobulle_mise = true -- Facultatif mais on peut bien considérer inutile d'ajouter une autre infobulle autour de ce contenu. Cela est encore plus vrai si lien interne créé à la ligne précédente est sur l'intégralité du message.
			end
		else
			messageloc = '&#91;' .. args.message .. '&#93;'
			if not args.message:find( '%[%[' ) then
				args.titre2 = args.titre
			end
		end

		-- trois lignes qui suivent : test temporaire à activer lors de la transition d'affichage pour les appels qui introduisent déjà un lien via le paramètre message
		if ( args.message:find( '%[' ) or args.message:find( '%]' ) ) and ( args.message_lien or '' ) ~= 'non' then
			messageloc = args.message
		end
	else
		messageloc = '<span class="error">argument « message » manquant dans le modèle ' .. nommodele .. '.</span>'
		args.titre2 = "Erreur dans l'appel du modèle Fix"
	end

	return messageloc, infobulle_mise
end

function p.affichageFix( frame )
	local args = frame.getParent and frame:getParent().args or frame
	local nommodele = frame.getParent and frame:getParent():getTitle() or frame:getTitle()
	local messageDate = ''
	local messageAide = ' ; v'
	local ponctuation = '.'
	if args.date and args.date ~= '' then
		messageDate = ' (demandé le ' .. args.date .. ')'
	else
		local infobulle_texte = mw.text.trim( ( args.infobulle or '' ):gsub( '%b<>', '' ) )
		if infobulle_texte ~= '' then
			if infobulle_texte:match( '[!?…]$' ) then
				messageAide = ' V'
				ponctuation = ''
			end
		else
			messageAide = 'V'
			ponctuation = ''
		end
	end
	messageAide = messageAide .. 'oir l\'aide.'
	args.titre = mw.text.trim( ( args.infobulle or '' ):gsub( '[,.;:]$', '' ) ) .. messageDate .. ponctuation
	args.titre2 = mw.text.trim( ( args.infobulle or '' ):gsub( '[,.;:]$', '' ) ) .. messageDate .. messageAide

	if args[ 1 ] and args[ 1 ]:match( '%S' ) then
		args.message2, infobulle_mise = generateMessage( args, nommodele )
		if necessiteCadre( args[ 1 ] ) or args.bloc and args.bloc ~= '' then -- attention, on ne trimme pas args[ 1 ]
			return affichageBloc( args )
		end
	else
		args.message2, infobulle_mise = generateMessage( args, nommodele, true )
	end

	return affichageInline( args, not infobulle_mise )
end

return p
Récupérée de "https://fr.bahaipedia.org/index.php?title=Module:Fix&oldid=5214"
La dernière modification de cette page a été faite le 14 juin 2025 à 02:19.
Le contenu est disponible sous licence Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License sauf mention contraire.
Politique de confidentialité
À propos de Bahaipedia
Avertissements
Powered by MediaWiki