MediaWiki:Gadget-tooltipRef.js
De Anekdotos
Note : après avoir publié vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
- Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou appuyez sur Ctrl + F5 ou Ctrl + R (⌘ + R sur un Mac).
- Google Chrome : appuyez sur Ctrl + Maj + R (⌘ + Shift + R sur un Mac).
- Internet Explorer / Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
- Opera : appuyez sur Ctrl + F5.
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 return myid.replace( /[\[\]:.]/g, "\\$&" ); } 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(); // copy computed styles to clone as inline styles var links1 = $( idfix ).find( 'a.external' ); var links2 = note.find( 'a.external' ); links1.each( function ( i, elm ) { var computed = $( elm ).css( [ 'color', 'background-image', 'background-position', 'background-repeat', 'padding-right' ] ); links2.eq( i ).css( computed ); } ); note.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 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 ); var offset = ref.offset(); note.offset( { top : offset.top + ref.height(), left: offset.left > 500 ? offset.left - note.outerWidth() : offset.left } ); 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( [ 'user', 'user.options' ], function () { if ( !mw.user.options.get( 'gadget-tooltipRef' ) ) { importStylesheet( 'MediaWiki:Gadget-tooltipRef.css' ); } $( document ).ready( tooltipRef ); });