MediaWiki:Gadget-tooltipRef.js
Apparence
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5./**
* Accès immédiat au contenu des références et notes en bas de page
* dans une fenêtre contextuelle.
* auteur : http://fr.wikipedia.org/wiki/Utilisateur:Lgd
* licence : MIT
*
* Utilise : http://fr.wikipedia.org/wiki/MediaWiki:Gadget-tooltipRef.css
*
* Paramétrage: ajouter var tooltipRefHover = true dans le common.js personnel
* pour utiliser au survol plutôt qu'au clic
*
* {{Catégorisation JS|TooltipRef}}
*/
var tooltipRef = function ($) {
var backClass = '.renvois_vers_le_texte';
var msg_err1 = 'Erreur : note ou référence non trouvée.';
var msg_err2 = 'Erreur: entrée non trouvée dans la bibliographie.';
var msg_err3 = '<br>Cette fonctionnalité peut ne pas être disponible en mode édition si vous prévisualisez une section de page.';
var msg_close = 'Fermer';
var msg_go1 = 'Aller';
var msg_go1title = 'Aller à cette référence en fin de page';
var msg_go2 ='Aller à la bibliographie';
var tooltipRefTimer = false;
function fixId(myid) { // replaces special characters in id name
myid = myid.replace(/\[/g, "\\[").replace(/\]/g, "\\]");
return myid.replace(/(:|\.)/g,'\\$1');
}
function closeNote() {
$('.hasnote').removeClass('hasnote');
$('li.tooltipRef').remove();
}
function closeNoteAfterDelay() {
tooltipRefTimer = setTimeout(closeNote, 400);
}
function cancelDelayedNoteClosure() {
clearTimeout(tooltipRefTimer);
}
function openNote(ref) {
closeNote();
var id = ref.attr('href');
var note;
var fallback;
var idfix = fixId(id);
if ($(idfix).length != 0) {
note = $(idfix).clone().removeAttr('id').addClass('tooltipRef');
note.find(backClass).remove();
note.find('[href^="#"]').click(function() {
if ($(this).is('.open')) {
$('.subnote').remove();
$(this).removeClass('open');
return false;
}
$('.subnote').remove();
$('.tooltipRef .open').removeClass('open');
var id2 = $(this).attr('href');
var more = $('<a href="'+id2+'">'+msg_go2+'</a>');
more.click(closeNote);
var note2;
id2 = fixId(id2);
if ($(id2).length != 0) {
note2 = $(id2).clone().addClass('subnote').removeAttr('id');
var morep = $('<p class="more"></p>');
morep.append(more);
note2.append(morep);
} else {
note2 = $('<span class="subnote">'+msg_err2+'</span>');
}
note.append(note2);
$(this).addClass('open');
return false;
});
fallback = $('<a href="'+id+'" class="go" title="'+msg_go1title+'">'+msg_go1+'</a> ');
fallback.click(closeNote);
} else {
note = $('<li class="tooltipRef">'+msg_err1+'</li>');
}
var offset = ref.offset().left;
var link = $('<a href="#" class="close" title="'+msg_close+'">X</a>');
link.click(function() {
closeNote();
return false;
});
var span = $('<span class="actions"> </span>');
span.prepend(fallback).append(link);
note.prepend(span);
if (typeof tooltipRefHover !== 'undefined' && tooltipRefHover) {
note.mouseover(cancelDelayedNoteClosure);
note.mouseout(closeNoteAfterDelay);
}
$('body').append(note);
note.position({my: offset > 500 ? "right top" : "left top", at: "left bottom", collision: "none", of: ref.parent()});
ref.addClass('hasnote');
return false;
}
if (typeof tooltipRefHover !== 'undefined' && tooltipRefHover) {
$('sup.reference > a').mouseenter(function() {
openNote($(this));
});
$('sup.reference').mouseover(cancelDelayedNoteClosure);
$('sup.reference').mouseout(closeNoteAfterDelay);
$('sup.reference > a').click(function() {
return false;
});
} else {
$('sup.reference > a').click(function() {
if ($(this).is('.hasnote')) {
closeNote();
return false;
}
openNote($(this))
return false;
});
}
}
mw.loader.using(["jquery.ui.position"], function() {
$(document).ready(tooltipRef);
});