MediaWiki:Gadget-AffMasLiens.js

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) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/* {{Projet:JavaScript/Script|AffMasLiens}} */

/**
 * Permet de masquer les liens d'un article pour en améliorer la lisibilité.
 *
 * Pour ce faire, ce script place un switch en haut de page,
 * permettant de masquer ou de réafficher les liens à chaque clic dessus.
 **/

/* globals mw, OO, $ */

if ( mw.config.get( 'wgNamespaceNumber' ) === 0 && mw.config.get( 'wgAction' ) === 'view' ) {

	mw.loader.using( [ 'mediawiki.storage', 'mediawiki.util', 'oojs-ui-widgets' ], function () {

		$( function ( $ ) {
			'use strict';

			// '1' : CSS activé, liens masqués
			// '0' ou null : CSS désactivé, liens affichés
			var enabledAtStart = ( mw.storage.get( 'AffMasLiens' ) === '1' );

			var sheet = mw.util.addCSS( '#mw-content-text .mw-parser-output a { color: inherit }' );
			if ( !enabledAtStart ) {
				sheet.disabled = true;
			}

			var toggleSwitch = new OO.ui.ToggleSwitchWidget( { value: enabledAtStart } ),
				label = new OO.ui.LabelWidget( { label: 'Masquer les liens' } ),
				layout = new OO.ui.HorizontalLayout( { 'items': [ toggleSwitch, label ] } );

			toggleSwitch.on( 'change', function () {
				if ( toggleSwitch.getValue() ) {
					sheet.disabled = false;
					mw.storage.set( 'AffMasLiens', '1' );
				} else {
					sheet.disabled = true;
					mw.storage.set( 'AffMasLiens', '0' );
				}
			} );

			layout.$element.css( 'margin-left', '8px' );

			if ( mw.config.get( 'skin' ) === 'vector-2022' ) {
				$( '#firstHeading' ).after( layout.$element.css( 'flex-shrink', 0 ) );
			} else {
				$( '#firstHeading' ).before( layout.$element.css( 'float', 'right' ) );
			}
		} );
	} );
}