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).
  •  Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
/*  * Résumé Deluxe  *  * Ajoute des commentaires de modification prédéfinis  *  * Auteur : Dake  * Contributions : Pabix, Tieno, Ltrlg  * Date de dernière révision : 5 novembre 2013  *   * Dépendances :  *  — les habituelles implicites 'mediawiki' & 'jquery' ;  *  — 'user' (chargement du common.js).  *   * {{Projet:JavaScript/Script|ResumeDeluxe}}  */   var   	/* 	 * Vérifier la présence d’un titre de section _ou_ de la chaîne 	 * 'Introduction : ' ; cette dernière est ajoutée par 	 * [[MediaWiki:Gadget-EditZeroth.js]] (avec quelques variations possibles 	 * pour ceux qui le retaperaient à la main). 	 * Cela permet de n’ajouter un séparateur ' ; ' entre deux résumés que si 	 * nécessaire. 	 * Note : on ne vérifie que le fait que le motif est en fin de chaîne, pas 	 * en début. 	 */   	sansPointVirgule = /(\*\/\s*|Introduction\s?:\s?)$/,   	/* 	 * La liste des liens qui seront affichés. 	 * Les éléments du tableau sont d’une des deux formes suivantes : 	 *   — [ 'lien' , 'resume' ] 	 *   — 'texte' 	 * où 'lien' représente l’intitulé du lien, 'resume' le résumé d’édition 	 * inséré par le lien et 'texte' les deux à la fois. 	 */   	listeLiens = [],   	/* 	 * Liens affichés par défaut, même format que listeLiens. 	 */   	liensParDefaut = [ 		'orthographe', 		'typographie', 		'wikification', 		'image', 		'bannière', 		'boîte info', 		'avancement', 		'dans', 		'mise en page', 		'redirection', 		'relecture', 		'style', 		'revert', 		'réorganisation', 		'réponse', 		'maintenance', 		'listing', 		['homonymie', 'création homonymie'], 		'retouche de la modification précédente' 	],   	/* 	 * Objet permettant de désactiver des liens (parmi la liste par défaut 	 * ci-avant), sous la forme { 'lien1': false, 'lien2': false, … } où 	 * 'lien1', 'lien2'… est l’intitulé du lien à ne pas afficher. 	 */   	liensAffiches = window.ResumeDeluxe_affiches || {},   	/* 	 * Objet jQuery contenant l’<input> ou le <textarea> constituant le résumé 	 */   	$resume,   	/* 	 * Objet jQuery contenant la liste de liens 	 */   	$liste;   /*  * Fonction renvoyant l’intitulé d’un lien à partir de sa représentation sous  * forme de tableau ou de chaîne.  */   function texteDuLien(definition) { 	if( $.type(definition) == 'array' ) { 		return definition[0]; 	} else { 		// Soyons sûr d’avoir une chaîne de caractères 		return definition.toString(); 	} }   /*  * Fonction renvoyant le texte ajouté par un lien à partir de sa représentation  * sous forme de tableau ou de chaîne.  */   function resumeAInserer(definition) { 	if( $.type(definition) == 'array' ) { 		return definition[1]; 	} else { 		// Soyons sûr d’avoir une chaîne de caractères. 		return definition.toString(); 	} }   /*  * Procédure transformant l’ancien format de configuration pour la  * compatibilité.  */   function transformerAncienneConfiguration() { 	var i; 	if( 		// Appliqué seulement si le nouveau format n’existe pas 		$.type(window.ResumeDeluxe_liens) != 'array' && 		// Les deux tableaux doivent exister 		$.type(window.resumedeluxeTitles) == 'array' && 		$.type(window.resumedeluxeInputs) == 'array' && 		// Les deux tableaux doivent avoir la même longueur 		window.resumedeluxeTitles.length == window.resumedeluxeInputs.length 	) { 		window.ResumeDeluxe_liens = []; 		for(i=0; i<window.resumedeluxeTitles.length; i++) { 			window.ResumeDeluxe_liens.push([ 				window.resumedeluxeTitles[i].replace(/^.\s+/, ''), 				window.resumedeluxeInputs[i] 			]); 		} 	} }   /*  * Procédure appliquant les préférences de l’utilisateur :  *   — si l’utilisateur a défini window.ResumeDeluxe_liens, celui-ci est utilisé  *     à la place de la liste par défaut liensParDefaut ;  *   — sinon si l’utilisateur a défini window.ResumeDeluxe_affiches, les règles  *     de désactivation sont appliquées ;  *   — sinon liensAffiches est un objet vide, donc la liste par défaut est  *     utilisée.  */   function appliquerConfiguration() { 	var i, cle;   	if( $.type(window.ResumeDeluxe_liens) == 'array' ) { 		listeLiens = window.ResumeDeluxe_liens 	} else { 		for(i=0; i<liensParDefaut.length; i++) { 			cle = texteDuLien(liensParDefaut[i]); 			if( liensAffiches[cle] !== false ) { 				listeLiens.push( liensParDefaut[i] ); 			} 		} 	} }   /*  * Procedure effectuant l’ajout d’une chaîne au résumé d’édition, avec un  * séparateur si besoin  */   function ajouterAuResume(chaine) { 	var resumeActuel = $resume.val(); 	if( resumeActuel == '' ) { 		$resume.val(chaine); 	} else if( sansPointVirgule.test(resumeActuel) ) { 		$resume.val(resumeActuel + chaine); 	} else { 		$resume.val(resumeActuel + ' ; ' + chaine); 	} }   /*   * Fonction renvoyant un lien à partir de sa définition  */   function $lien(definition) { 	return $('<a>') 		.text(texteDuLien(definition)) 		.attr('href', '#') 		.click(function(){ 			ajouterAuResume(resumeAInserer(definition)); 			return false; 		}) }   /*  * Procédure construisant la liste de liens  */   function contruireListe() { 	var i;   	$cont = $('<div>').attr('id', 'ResumeDeluxe') 		.text('Messages prédéfinis\xA0: ') 		.append($lien(listeLiens[0]));   	for(i=1; i<listeLiens.length; i++) { 		$cont 			.append(document.createTextNode('\xA0• ')) 			.append($lien(listeLiens[i])); 	} }   /*  * Procédure initialisant $resume et insérant la liste de liens dans le cas de  * l’éditeur de wikicode, quand les nœuds nécessaires sont en place.  */   function demarrer_wikicode() { 	$(document).ready(function(){ 		$('#wpSummaryLabel').before($cont); 		$resume = $('#wpSummary'); 	}); }   /*  * Procédure initialisant $resume et insérant la liste de liens dans le cas de  * l’ÉditeurVisuel, quand les nœuds nécessaires sont en place.  */   function demarrer_EditeurVisuel() { 	mw.hook('ve.saveDialog.stateChanged').add(function(){ 		/* 		 * Parcours des boîtes de dialogue (jQuery ne parcours pas les iframes 		 * seul, il faut lui donner les racines explicitement) 		 */ 		var $iframes = $([]); 		$(document.getElementsByClassName('ve-ui-frame')).each(function(){ 			$iframes = $iframes.add(this.contentDocument || this.document) 		})   		/* 		 * Traitement : si le dialogue a été recréé, on y remet ce qu’il faut. 		 * TODO Vérifier si cette vérification est encore nécessaire. 		 */ 		if( $iframes.find('#ResumeDeluxe').length < 1 ) { 			$iframes.find('#MediaWiki-summary').after($cont); 			$resume = $iframes.find('.ve-ui-mwSaveDialog-summary textarea'); 		} 	}); }   /*  * Procédure qui détermine quel éditeur peut être utilisé et démarre le gadget   * selon le résultat.  */   function demarrer() { 	switch( mw.config.get('wgAction') ) { 		case 'edit': 		case 'submit': 			// Désactivé pour la création de sections 			if( ! /(\?|&)section=new(&|$)/.test(document.location.search) ) { 				demarrer_wikicode(); 			} 			break; 		case 'view': 			demarrer_EditeurVisuel(); 			break; 	} }   /*  * Démarrage du tout  */   // Compatibilité avec l’ancien format de configuration transformerAncienneConfiguration(); // Lecture des préférences appliquerConfiguration(); // Construction de la liste des liens contruireListe(); // Insère la liste dans l’arbre des nœuds et cherche le nœud contenant le résumé demarrer();