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