MediaWiki:Gadget-Section links.js

Remarque: après avoir sauvegardé, vous devez vider le cache de votre navigateur pour que les changements prennent effet. Mozilla, cliquez sur Actualiser (ou ctrl-r). Internet Explorer / Opera: ctrl-f5. Safari: cmd-r. Konqueror ctrl-r.

/*******************************************************************************
 * === Relie les sections d'articles ===
 * Les sections du Wiktionnaire contiennent des liens plus précis que ceux
 * générés automatiquement par Mediawiki:
 * coin#en-nom plutôt que coin#Nom_commun_3
 * Cette fonction change les liens § donnés à gauche des titres de section pour
 * leur donner le lien précis de la section (s'il y en a un)
*******************************************************************************/
jQuery(function relink_sections() {
	// Sections de langue + sections de type de mot
	$( ".sectionlangue, .titredef" ).each( function() {
		var parlink = $(this).parent().parent().find( ".mw-headline-anchor" );	// Le lien §
		var href = "#" + $(this).attr("id");	// Le lien "précis" de la section
		parlink.attr("href", href);
	});
});

/*******************************************************************************
 * === Liens d'ébauches ===
 * Cette fonction remplace le lien des modèles d'ébauche (.stubedit) par le lien
 * de modification de la section supérieure la plus proche, pour éviter de
 * modifier toute la page.
 * Auteur : [[Utilisateur:Darkdadaah]].
*******************************************************************************/
jQuery(function stubeditLink() {
	$( '.stubedit a' ).attr( 'href', function() {
		var $ol = $( this );
		var lim = 0;
		// Remonte en haut de la hiérarchie
		while( $ol.parent().attr( 'id' ) !== 'mw-content-text' && lim < 50 ) {
			$ol = $ol.parent();
			lim++;
	  	}
		// On remonte et on récupère le premier titre venu
		var $hall = $ol.prevAll( 'h2, h3, h4' );
		if ( $hall.length > 0 ) {
			var href = '';
			$hall.each(function() {
				$modif = $( this ).find( '.mw-editsection a' );
				href = $modif.attr( 'href' );
				return false;	// break each loop
			});
			return href;	// Nouveau lien
		}
		return $( this ).attr( 'href' );	// Défaut : lien normal
	});
});