Module:Fix/Bac à sable
De Wikipedia, l'encyclopédie encyclopedia
local p = {}
function p.affichageBloc( args ) local background = args.background or if background == then background = 'white' end
local html = mw.html.create( ) :wikitext( '\n' ) :tag( 'div' ) :cssText( 'position:relative; margin-top:0.8em;') :tag( 'div' ) :addClass( 'need_ref' ) :cssText( 'cursor:help; overflow:hidden; padding-bottom:0;' ) :css{ background = background } :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 } :wikitext( args.message2 ) :allDone()
return tostring( html ) end
function p.affichageInline( args , ajouterinfobulle ) local html = mw.html.create( )
if args[1] and mw.text.trim(args[1]) ~= 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
function p.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
if args.message_lien and args.message_lien ~= then if args.message_lien=='non' then
messageloc= "[" .. args.message .. "]" if not args.message:find("%[%[") then args.titre2=args.titre end else 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= "[" .. '' .. args.message .. "" .. "]"--CHOIX messageloc= "" .. '[' .. args.message .. "]" .. "" infobulle_mise=true else --messageloc= "[" .. args.message .. "]"--CHOIX messageloc= "[" .. args.message .. "]" 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 end else if modeinfobulle==true then --messageloc= "[" .. '' .. args.message .. "" .. "]" .. tostring(table.concat(args))--CHOIX messageloc= "" .. '[' .. args.message .. "]" .. "" .. tostring(table.concat(args)) infobulle_mise=true else --messageloc= "[" .. args.message .. "]"--CHOIX messageloc= "[" .. args.message .. "]" infobulle_mise=true--Facultatif, idem plus haut 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= 'argument « message » manquant dans le modèle ' .. nommodele .. '.' 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 mw.text.trim(args[1]) ~= then args.message2, infobulle_mise =p.generateMessage(args, nommodele) if args[1]:match('\n[ \t]*\n') or args[1]:match('\n[*#:]') or args.bloc and args.bloc ~= then return p.affichageBloc( args ) end else args.message2, infobulle_mise =p.generateMessage(args, nommodele, true) end
return p.affichageInline( args, not infobulle_mise ) end
return p