MediaWiki:Gadget-FairePageDeDiscussion.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) ;

Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/**
 * Transformer les pages du Bistro, du BA et les pages spécifiées en page de discussion
 */

/* globals mw, $ */

( function () {
	'use strict';
	const pageContentHooks = [];
	if ( mw.config.get( 'wgNamespaceNumber' ) >= 2 && mw.config.get( 'wgNamespaceNumber' ) % 2 === 0 ) {
		$( function ( $ ) { // eslint-disable-line no-unused-vars
			var alwaysTransform = ( function () {
				if ( ![ 4, 102 ].includes( mw.config.get( 'wgNamespaceNumber' ) ) ) {
					return false;
				}
				var pageName = mw.config.get( 'wgPageName' );
				var basePages = [
					'Wikipédia:Le_Bistro',
					'Wikipédia:Bulletin_des_administrateurs',
					'Wikipédia:Bulletin_des_bureaucrates',
					'Wikipédia:Bulletin_des_patrouilleurs',
					'Wikipédia:Demande_d\'intervention_sur_une_page_protégée',
					'Wikipédia:Demande_d\'intervention_sur_un_message_système',
					'Wikipédia:Demande_de_protection_de_page',
					'Wikipédia:Demande_de_fusion_d\'historiques',
					'Wikipédia:Demande_de_purge_d\'historique',
					'Wikipédia:Demande_de_renommage',
					'Wikipédia:Demande_de_suppression_immédiate',
					'Wikipédia:Demande_de_restauration_de_page',
					'Wikipédia:Bot/Requêtes',
					'Wikipédia:Forum_de_relecture',
					'Wikipédia:Le_salon_de_médiation',
					'Wikipédia:Legifer',
					'Wikipédia:Pages_à_fusionner',
					'Wikipédia:Pages_à_scinder',
					'Wikipédia:Questions_techniques',
					'Wikipédia:Requête_aux_administrateurs',
					'Wikipédia:Sondage',
					'Wikipédia:Vandalisme_en_cours',
					'Wikipédia:Bulletin_du_filtrage',
					'Wikipédia:AbuseFilter/Requêtes',
					'Wikipédia:AbuseFilter/Faux_positifs',
					'Wikipédia:Oracle',
					'Projet:Modèle/Demandes',
					'Projet:Infobox/Demandes',
				];
				return basePages.some( function ( basePage ) {
					return pageName === basePage || pageName.startsWith( basePage + '/' );
				} );
			} )();
			if ( alwaysTransform ) {
				document.body.classList.replace( 'ns-subject', 'ns-talk' );
			} else {
				pageContentHooks.push( function ( $pageContent ) { // eslint-disable-line no-unused-vars
					if ( document.getElementById( 'transformeEnPageDeDiscussion' ) ) {
						document.body.classList.replace( 'ns-subject', 'ns-talk' );
					} else {
						// on repose sur le fait que le code est exécuté uniquement dans les namespaces pairs (subject),
						// autrement la ligne suivante irait transformer à tort des pages "talk" en "subject"
						document.body.classList.replace( 'ns-talk', 'ns-subject' );
					}
				} );
			}
		} );
	}
	mw.hook( 'wikipage.content' ).add( function ( $content ) {
		/*
		 * Sélection plus précise de l'élément avec le contenu de page,
		 * pour éviter l'interface de diff, l'interface de modification, le print footer...
		 * ainsi que les pages qui n'ont pas de contenu (historiques, pages spéciales, etc.)
		 */
		let $pageContent;

		const $parserOutput = $content.find( '.mw-parser-output' );
		if ( $parserOutput.length ) { // élément avec le contenu de page
			$pageContent = $parserOutput;
		} else if ( $content.hasClass( 'mw-parser-output' ) ) { // [[phab:T349298]]
			$pageContent = $content;
		} else { // pas de contenu de page (historiques, pages spéciales, etc.)
			return;
		}

		for ( const hook of pageContentHooks ) {
			hook( $pageContent );
		}
	} );
} )();