Utilisateur:Hulk/vector-2022.js

Aller à la navigation Aller à la recherche

Note : après avoir enregistré tes préférences, tu devras forcer le rechargement complet du cache de ton navigateur pour voir les changements. Mozilla Firefox / Safari : maintiens la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou presse Maj-Ctrl-R (Maj-Cmd-R sur Apple Mac) ; Internet Explorer / Opera : maintiens la touche Ctrl en cliquant sur le bouton Actualiser ou presse Ctrl-F5.

mw.util.addPortletLink('p-Cactions', '/wiki/Utilisatrice:Loulla07', 'Demander conseil' ) mw.util.addPortletLink('p-Navigation', '/wiki/Utilisateur:Pro des Maths/Texte/1eraverto', 'Averto gentil');  mw.util.addPortletLink('p-Navigation', '/wiki/Special:NouvellesPages', 'Nouvelles pages', 'n-npgs');  /* * This script adds a tab which allows a mass patrolling on the current page. Because it was pointless to mark as patrolled 10 intermediate versions when we can read the difference between the first and the last */  var totalRevisions; var treatedRevisions = 0;  if (mw.config.get('wgNamespaceNumber') >= 0) {   mw.loader.using( [ 'mediawiki.util', 'mediawiki.api', 'oojs-ui' ], function() {     mw.util.addPortletLink( 'p-cactions', 'javascript:markAllAsPatrolled()', 'Smart patrol', 'ca-smartpatrol' );     //mw.util.addPortletLink( 'p-views', 'javascript:markAllAsPatrolled()', 'Smart patrol', 'ca-smartpatrol2', 'Tout marquer comme relue', '', 'ca-history' );   } ); }  function markAllAsPatrolled() {   new OO.ui.confirm('Êtes-vous sur de vouloir marquer comme relue toutes les modifications ?').then( function( response ) {     if ( response === true ) {         getRevisionsList();     }   } ); }  function getRevisionsList() {   var api = new mw.Api();   api.get( { 	'action': 'query', 	'format': 'json', 	'prop': 'revisions', 	'titles': mw.config.get( 'wgPageName' ), 	'formatversion': '2', 	'rvprop': 'ids|user', 	'rvlimit': 'max'   } ).then( function ( data ) {     var revisions = data.query.pages[ 0 ].revisions;     //var user = revisions[ 0 ].user;     totalRevisions = revisions.length;     revisions.forEach( function ( revision ) {       treatedRevisions++;       //if ( user === revision.user ) {         markRevAsPatrolled( revision.revid );       //}     } );    } ).fail( function ( error ) {       mw.notification.notify( 'Something went wrong: ' + error, { title: 'Smart Patrol', type: 'error' } );   } ); }  function markRevAsPatrolled( revid ) {   var api = new mw.Api();   api.postWithToken( 'patrol', { 	'action': 'patrol', 	'revid': revid    } ).then( function ( info ) {     console.log( 'Success for ' + revid, { title: 'Smart Patrol', type: 'info' } );     if ( totalRevisions == treatedRevisions ) { window.location.reload(); }    } ).fail( function ( error ) {     console.log( 'Something went wrong: ' + error, { title: 'Smart Patrol', type: 'error' } );   } ); } if ( mw.config.get( 'wgArticleId' ) > 0 && (mw.config.get( 'wgAction' ) === 'view' || mw.config.get( 'wgAction' ) === 'edit') ) {     $.when( mw.loader.using( [ 'mediawiki.api', 'mediawiki.util', 'user' ] ), $.ready ).done( function () {          // Les temps sont en secondes,         // et personnalisables via le JavaScript utilisateur, e.g. : window.lastContribNiveau1 = 120;         var alertLevels = {             1: typeof lastContribNiveau1 !== 'undefined' ? lastContribNiveau1 : 30 * 60,    // Niveau d'alerte fort         };          function lastContribCallback( timestampLastRevision ) {             var last = new Date( timestampLastRevision );             var now = new Date();             var diff = Math.round( ( now - last ) / 1000 );              if ( diff < -600 ) {                 mw.notify( "Erreur probable dans la concordance des horloges serveur-client. Vérifiez l'exactitude de l'heure de votre ordinateur et le fuseau horaire utilisé dans vos préférences globales wiki.", {                     autoHide: true,                     title: 'Gadget LastContrib',                     type: 'error'                 } );                 return;             }             if ( diff < 0 ) {                 diff = 0;             }              if ( diff <= alertLevels[ 3 ] ) {                 var $contentSub = $( '#contentSub' );                 if ( !$contentSub.length ) { return; }                  var diffHeures = Math.floor( diff / 3600 );                 var diffMinutes = Math.floor( ( diff - diffHeures * 3600 ) / 60 );                 var diffSecondes = diff - diffHeures * 3600 - diffMinutes * 60;                  var icon;                 if ( diff <= alertLevels[ 1 ] ) {                     icon = '{{vikibreak|pas là|texte à déterminer}}';                 }                 var ellapsed = ( diffHeures > 0 ? diffHeures + ' h ' : '' ) + ( diffMinutes > 0 ? diffMinutes + ' min ' : '' ) + diffSecondes + ' sec';                 var $link = $( '<a href="' + mw.util.getUrl( null, {                     action: 'history'                 } ) + '" style="font-size:8pt; color:#545454;">' + last.toLocaleTimeString() + ' (Dernière modification il y a ' + ellapsed + '.) </a> ' );                  $contentSub.prepend( icon, $link );             }         }          new mw.Api()             .get( {                 'action': 'query',                 'prop': 'revisions',                 'titles': mw.config.get( 'wgPageName' ),                 'rvprop': 'timestamp',                 'formatversion': 2             } )             .then( function ( data ) {                 var page = data.query.pages[ 0 ];                 lastContribCallback( page.revisions[ 0 ].timestamp );             } )             .fail( function ( error, details ) {                 // L'objet Promise échoue quand l'utilisateur quitte la page avant que la requête soit achevée.                 if ( details && details.xhr && details.xhr.readyState < 4 ) {                     return;                 }                 mw.notify( "Erreur rencontrée lors de la requête à l'API.", {                     autoHide: true,                     title: 'Gadget LastContrib',                     type: 'error'                 } );                 console.log( error, details );             } );      } ); }    // Basé sur [[wp:en:User:Fran Rogers/dimorphism.js]] et [[wp:en:User:Splarka/sysopdectector.js]] ; // Modifié et retravaillé par Bulest85 et Matteo1234321 ; // Traduction en --> fr par Matteo1234321.  // Fonction qui met au pluriel au besoin. function UserinfoJsFormatQty(qty, singular, plural) {     return String(qty).replace(/\d{1,3}(?=(\d{3})+(?!\d))/g, "$& ") + "\u00a0" + (qty == 1 ? singular : plural); } // Afficher les infos utilisateur seulement sur la page utilisteur et de discussion dudit utilisateur... if((mw.config.get("wgNamespaceNumber") == 2 || mw.config.get("wgNamespaceNumber") == 3) && !(/\//.test(mw.config.get("wgTitle")))) {     // Ajouter un crochet...     mw.loader.using( ['mediawiki.util'], function() { $(function(){         // Demander les informations de l'utilisateur via l'API.         // Noter que ceci est autorisé jusqu'à l'âge de 5 minutes [traduction douteuse].         var et = encodeURIComponent(mw.config.get("wgTitle"));          $.getJSON(mw.config.get("wgScriptPath") + "/api.php?format=json&action=query&list=users|usercontribs&usprop=blockinfo|editcount|gender|registration|groups&uclimit=1&ucprop=timestamp&ususers=" + et + "&ucuser=" + et + "&meta=allmessages&amprefix=grouppage-&amincludelocal=1")         .done(function(query) {             // Quand l'information arrive, extrayons-en celes dont on a besoin.             if(!query.query) { return; } // Suggéré [[wp:en:User:Gary]] pour éviter les erreurs JavaScript. --PS 25.08.2010             query = query.query;             var user, invalid, missing, groups, groupPages={}, editcount, registration, blocked, gender, lastEdited;             try {                 user = query.users[0];                 invalid = typeof user.invalid != "undefined";                 missing = typeof user.missing != "undefined";                 groups = (typeof user.groups == "object") ? user.groups : [];                 editcount = (typeof user.editcount == "number") ? user.editcount : null;                 registration = (typeof user.registration == "string") ?                     new Date(user.registration) : null;                 blocked = typeof user.blockedby != "undefined";                 gender = (typeof user.gender == "string") ? user.gender : null;                 lastEdited = (typeof query.usercontribs[0] == "object") &&                     (typeof query.usercontribs[0].timestamp == "string") ?                     new Date(query.usercontribs[0].timestamp) : null;                 for (var am=0; am<query.allmessages.length; am++) {                 	groupPages[query.allmessages[am]['name'].replace("grouppage-","")] = query.allmessages[am]["*"].replace("{{ns:project}}:","Project:");                 }             } catch(e) {                 return; // Pas beaucoup à faira quand le serveur renvoie une erreur (par exemple le nom de l'utilisateur est mal formé)...             }              // Dernière modification --PS 27.06.2010             // Ajout d'un lien à la page de contributions --PS 3.07.2010             if(lastEdited) {                 statusText += " Dernière modification il y a <a href=\"" + mw.config.get("wgArticlePath").replace("$1", "Spécial:Contributions/" + encodeURIComponent(user.name)) + "\">" + UserinfoJsFormatDateRel(lastEdited) + "</a>";             }             genderSpan.appendChild(document.createTextNode(genderSymbol));             fh.appendChild(genderSpan);              // Maintenant, ajouter les autres informations. Pas standardes (?), mais au moins, elles font le taf ^^.             // Ajouter un point après le texte en faisant ainsi. --PS 3.07.2010              var ss = document.getElementById("siteSub");             if(!ss) {                 ss = document.createElement("div");                 ss.id = "siteSub";                 ss.innerHTML = "";                 var bc = document.getElementById("bodyContent");                 bc.insertBefore(ss, bc.firstChild);             }             ss.innerHTML = '<span id="ps-userinfo">' + statusText + '</span>' + ss.innerHTML + '.';             ss.style.display = "block";             });     }); mw.loader.load('/w/index.php?title=Utilisateur:Vivi-1/js//AdminMenu.js&action=raw&ctype=text/javascript'); mw.loader.load('/w/index.php?title=Utilisateur:Vivi-1/js/AdminMenu.css&action=raw&ctype=text/css', 'text/css' ); var totalRevisions; var treatedRevisions = 0;  if (mw.config.get('wgNamespaceNumber') >= 0) {   mw.loader.using( [ 'mediawiki.util', 'mediawiki.api', 'mediawiki.notify', 'oojs-ui' ], function() {     mw.util.addPortletLink( 'p-cactions', 'javascript:markAllAsPatrolled()', 'Smart patrol', 'ca-smartpatrol' );     //mw.util.addPortletLink( 'p-views', 'javascript:markAllAsPatrolled()', 'Smart patrol', 'ca-smartpatrol2', 'Tout marquer comme relue', '', 'ca-history' );   } ); }  function markAllAsPatrolled() {   new OO.ui.confirm('Êtes-vous sur de vouloir marquer comme relue toutes les modifications ?').then( function( response ) {     if ( response === true ) {         getRevisionsList();     }   } ); }  function getRevisionsList() {   var api = new mw.Api();   api.get( { 	'action': 'query', 	'format': 'json', 	'prop': 'revisions', 	'titles': mw.config.get( 'wgPageName' ), 	'formatversion': '2', 	'rvprop': 'ids|user', 	'rvlimit': 'max'   } ).then( function ( data ) {     var revisions = data.query.pages[ 0 ].revisions;     //var user = revisions[ 0 ].user;     totalRevisions = revisions.length;     revisions.forEach( function ( revision ) {       treatedRevisions++;       //if ( user === revision.user ) {         markRevAsPatrolled( revision.revid );       //}     } );    } ).fail( function ( error ) {       mw.notification.notify( 'Something went wrong: ' + error, { title: 'Smart Patrol', type: 'error' } );   } ); }  function markRevAsPatrolled( revid ) {   var api = new mw.Api();   api.postWithToken( 'patrol', { 	'action': 'patrol', 	'revid': revid    } ).then( function ( info ) {     console.log( 'Success for ' + revid, { title: 'Smart Patrol', type: 'info' } );     if ( totalRevisions == treatedRevisions ) { window.location.reload(); }    } ).fail( function ( error ) {     console.log( 'Something went wrong: ' + error, { title: 'Smart Patrol', type: 'error' } );   } ); } mw.util.addPortletLink( 'p-personal', '/wiki/Spécial:MyPage/Bac_à_sable', 'Mon bac à sable', null, null, null, '#pt-preferences' ) mw.loader.load('https://fr.vikidia.org/w/index.php?title=Utilisateur:Bulest85/lienWP.js&action=raw&ctype=text/javascript'); $('.mw-tag-marker-mobile_edit a').removeAttr('href').css('color', '#222'); $('.mw-tag-marker-visualeditor a').removeAttr('href').css('color', '#222'); $('.mw-tag-marker-visualeditor-switched a').removeAttr('href').css('color', '#222'); mw.util.addPortletLink('p-personal', '/wiki/Vikidia:Boîte_à_idées', 'Boîte à idées') // [[MediaWiki:Gadget-UserinfoVikidia.js]] window.UserinfoVikidia = window.UserinfoVikidia || {}; window.UserinfoVikidia.hasTouchScreen = true; window.UserinfoVikidia.maxScreenWidth = 900;  // LASTCONTRIB window.lastContribNiveau1 = 180; window.lastContribNiveau2 = 600; window.lastContribNiveau3 = 10800;  /** MassRollback   **/ mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Writ_Keeper/Scripts/massRollback.js&action=raw&ctype=text/javascript'); mw.util.addPortletLink('p-Navigation', '/wiki/Vikidia:Coin des relecteurs', 'Coin des relecteurs') ; mw.loader.load('https://fr.vikidia.org/w/index.php?title=Utilisateur:Vivi-1/js/SmartPatrol.js&action=raw&ctype=text/javascript');  importScript('Utilisateur:Linedwell/quickeditcounter.js'); //affiche sur la PU des utilisateurs leur nombre d'éditions  importScript('Utilisateur:Vivi-1/common.js');  /* common.js de Eliastik - possibilité de reprendre le code (http://www.pokepedia.fr/Utilisateur:Eliastik) Changelog : - Depuis Eliastik : -- Inclusion d'un thème sombre -- Inclusion d'une fonctionnalité d'actualisation toutes les 20 s - Depuis N_tonio36 : -- v1.2.0 : inclut un averto pour vérifier les modifications non patrouillées -- Réadaptation du thème : amélioration de la visibilité -- v1.3.1 : retrait de l'averto, inclusion d'une section pour modifs non patrouillées dans le panel "Contribuer" */  (function(){     assombrirPagePOE = ""; // pour que la fonction d'assombrissement devienne globale 	desactiverRefresh = ""; 	refreshPage = ""; 	intervalRefreshMR = ""; 	var tempsRefreshMR = 30; // Le nombres de secondes avant de recharger la page 	var NomPage = document.location.href.substring(document.location.href.lastIndexOf( "/" )+1 );     // Crée une liste d'outils personnels     var elAP = document.createElement("div");     elAP.setAttribute("class", "portal");     elAP.setAttribute("id", "panel-outils-personnels");     elAP.innerHTML = '<h3>Outils personnels</h3><div class="body"><ul id="outilsPersoList"></ul></div>';     document.getElementById("mw-panel").appendChild(elAP);      // assombrir la page - retient le choix     var elAssomPage = document.createElement("li");     elAssomPage.setAttribute("id", "panel-OP-assombrirPage");     elAssomPage.innerHTML = '<a href="#" id="assombrirPageOP" onclick="assombrirPagePOE(\'assombrir\')">Assombrir la page</a>';     document.getElementById("outilsPersoList").appendChild(elAssomPage);      // fonction de cookies pour faire fonctionner l'option "Assombrir la page"       function createCookie(name,value,days) { 	  if (days) { 		var date = new Date(); 		date.setTime(date.getTime()+(days*24*60*60*1000)); 		var expires = "; expires="+date.toGMTString(); 	  } 	  else var expires = ""; 	  document.cookie = name+"="+value+expires+"; path=/";         }          function readCookie(name) { 	  var nameEQ = name + "="; 	  var ca = document.cookie.split(';'); 	  for(var i=0;i < ca.length;i++) { 		var c = ca[i]; 		while (c.charAt(0)==' ') c = c.substring(1,c.length); 		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 	  } 	  return null;        }         function eraseCookie(name) { 	  createCookie(name,"",-1);        }  	// Rafraîchissement des Modifications récentes 	elIndicRefresh = document.createElement("span"); 	elIndicRefresh.style.fontWeight = 'bold'; 	elIndicRefresh.setAttribute("id", "labelModRecR"); 	document.getElementById("contentSub").appendChild(elIndicRefresh);  	refreshPage = function() { 		if(NomPage.indexOf("Sp%C3%A9cial:Modifications_r%C3%A9centes") != -1) { 			elIndicRefresh.innerHTML = 'Les modifications sont rechargées.<a href="#" onclick="desactiverRefresh()">Désactiver</a>.'; 			intervalRefreshMR = setInterval(function(){ location.reload() }, tempsRefreshMR * 1000); 			createCookie("stopRefreshMR", "Non", 3600); 		} 	}  	desactiverRefresh = function() { 		if(NomPage.indexOf("Sp%C3%A9cial:Modifications_r%C3%A9centes") != -1) { 			createCookie("stopRefreshMR", "Oui", 3600); 			elIndicRefresh.innerHTML = 'Les modifications ne sont pas rechargées.<a href="#" onclick="refreshPage()">Réactiver</a>.'; 			clearInterval(intervalRefreshMR); 		} 	}  	if(readCookie("stopRefreshMR") != "Oui") {         refreshPage();     } 	else { 		desactiverRefresh(); 	}      // la fonction d'assombrissement de la page     assombrirPagePOE = function(type) {        if(type == "assombrir") {             createCookie("assombrirPagePO", "Oui", 3600); // crée le cookie             elAssomPage.innerHTML = '<a href="#" id="assombrirPageOP" onclick="assombrirPagePOE(\'eclaircir\')">Éclaircir la page</a>'; // change le lien du gadget             // on boucle tous les éléments pour leur donner un style sombre avec la fonction restyleElement (voir plus bas) 			restyleElement("div", "#313139", "#a9aefe"); 			restyleElement("a", null, "lightblue"); 			restyleElement("input", "#313139", "#a9aefe"); 			restyleElement("textarea", "#313139", "#a9aefe"); 			restyleElement("select", "grey", "#a9aefe"); 			restyleElement("pre", "#313139", "#a9aefe"); 			restyleElement("table", "#313139", "#a9aefe"); 			restyleElement("td", "null", "#a9aefe"); 			restyleElement("tr", "null", "#a9aefe"); 			restyleElement("th", "#313139", "#a9aefe");                         restyleElement("dl", "#313139", "white");                         restyleElement("dd", "#313139", "white"); 			restyleElement("h1", null, "#a9aefe"); 			restyleElement("h2", null, "#a9aefe"); 			restyleElement("h3", null, "#a9aefe"); 			restyleElement("h4", null, "#a9aefe"); 			restyleElement("h5", null, "#a9aefe"); 			restyleElement("h6", null, "#a9aefe"); 			restyleElement("li", "#313139", "#a9aefe"); 			restyleElement("ul", "#313139", "#a9aefe"); 			restyleElement("li", "#313139", "white"); 			restyleElement("code", "#313139", "#a9aefe");             // style pour la page et le contenu             document.body.style.cssText = "background-color: #313139; color: #a9aefe;";             document.getElementById("content").style.cssText = "background-color: #313139; color: #a9aefe;";             jQuery( function() { $( 'div.vectorTabs span, #p-cactions, div.menu a' ).css( 'background', '#313139' ); } ); jQuery( function() { $( 'div.vectorTabs li.selected span, div.menu li.selected a' ).css( 'background', 'grey' ); } ) 			var aNewPageNb = document.getElementsByClassName("new"); 			if(aNewPageNb !== null) { 				for (i=0;i<aNewPageNb.length;i++) 				{ 					aNewPageNb[i].style.color = 'lightcoral'; 				} 			}         }         else if(type == "cookieVerif" && readCookie("assombrirPagePO") == "Oui") {             assombrirPagePOE("assombrir"); // on réexecute la fonction         }         else if(type == "eclaircir") {              if(confirm("La modification s’exécutera au prochain rechargement de la page. Continuer ?")) {                  createCookie("assombrirPagePO", "Non", 3600); // on supprime le cookie             }         }     }      function restyleElement(type, backgroundColorElem, colorElem) {           var nbElements = document.getElementsByTagName(type); 		  if(nbElements !== null) {             for (i=0;i<nbElements.length;i++)             { 				if(backgroundColorElem !== null) {                     nbElements[i].style.backgroundColor = backgroundColorElem; 				}  				if(colorElem !== null) {                     nbElements[i].style.color = colorElem; 				}             } 			return true; 		  } 		  else { 			return false; 		  }     }    var Common_Link = document.createElement("a");    Common_Link.href = "https://fr.vikidia.org/wiki/Utilisateur:Rififi/common.js";    Common_Link.accesskey = "s";    Common_Link.title = "Votre script";    Common_Link.innerHTML = "Common.js";    var LI = document.createElement("LI");    LI.class = "active";    LI.id = "pt-userscript";    LI.appendChild(Common_Link);    $("div#p-personal ul").append(LI);    $("span[dir='auto']").prop("id","PageName");     var Common_Link = document.createElement("a");    Common_Link.href = "https://fr.vikidia.org/wiki/Utilisateur:Rififi/Bac à sable";    Common_Link.accesskey = "s";    Common_Link.title = "Mon bac à sable";    Common_Link.innerHTML = "Bac à Sable";    var LI = document.createElement("LI");    LI.class = "active";    LI.id = "pt-userscript";    LI.appendChild(Common_Link);    $("div#p-personal ul").append(LI);    $("span[dir='auto']").prop("id","PageName");     var Common_Link = document.createElement("a");    Common_Link.href = "https://fr.vikidia.org/wiki/Utilisateur:Rififi/Bac à sable 2";    Common_Link.accesskey = "s";    Common_Link.title = "Mon bac à sable de modèle";    Common_Link.innerHTML = "Bac à Sable 2";    var LI = document.createElement("LI");    LI.class = "active";    LI.id = "pt-userscript";    LI.appendChild(Common_Link);    $("div#p-personal ul").append(LI);    $("span[dir='auto']").prop("id","PageName");     var Unseen = document.createElement("a");    Unseen.href =  "http://fr.vikidia.org/wiki/Projet:Maintenance";    Unseen.innerHTML = "Maintenance générale";     var UnseenLI = document.createElement("LI");    UnseenLI.appendChild(Unseen);    $("#p-Contribuer .body ul").append(UnseenLI);    $("#wpSummary").prop("autocomplete","off");  }()); assombrirPagePOE("cookieVerif"); // vérification du cookie  /**  * Outils pour réverter  *  * fournit des liens dans les pages de diff pour révoquer facilement une modification et avertir son auteur  *  * Auteurs : Lorian (en), Chphe (fr)  * Dernière révision : 27 décembre 2013 — séparation des annulations et révocations  * {{Projet:JavaScript/Script|RevertDiff}}  */ //<nowiki> var RevertDiffParams = new Object();  RevertDiffParams.Text = new Object(); RevertDiffParams.Text.Annul = "Restaurer"; RevertDiffParams.Text.AnnulResume = 'Restauration'; RevertDiffParams.Text.Message = "Message"; RevertDiffParams.Text.MessageAlert = 'Raison:'; RevertDiffParams.Text.Revert = "Révoquer"; RevertDiffParams.Text.RevertResume = 'Révocation des modifications de [[Special:Contributions/$2|$2]], retour à la version de [[Special:Contributions/$1|$1]]'; RevertDiffParams.Text.Warn = "Avertir";   RevertDiffParams.Warn = [   {urlparam:"warn=01", text:"Averto-0",   template:'{{subst:Averto-0}}~~~~'},   {urlparam:"warn=10", text:"nouveau",      template:'{{Bienvenue}}~~~~ {{SUBST:Averto-0}}~~~~'},   {urlparam:"warn=02", text:"Averto-1",   template:'{{subst:Aveto-1}}~~~~'},   {urlparam:"warn=06", text:"Spam0", template:'{{subst:Averto-spam-0}}~~~~'},   {urlparam:"warn=10", text:"nouveau",      template:'{{Bienvenue}}~~~~ {{SUBST:Averto-spam-0}}~~~~'},   {urlparam:"warn=07", text:"Spam1", template:'{{subst:Averto-spam-1}}~~~~'},   {urlparam:"warn=08", text:"Bienvenue",    template:'{{Bienvenue}}~~~~'},   {urlparam:"warn=09", text:"BienvenueIP",  template:'{{Bienvenue IP}}~~~~'},   {urlparam:"warn=10", text:"Bac à sable",      template:'{{SUBST:Utilisateur:Rififi2}}~~~~'},   {urlparam:"warn=10", text:"nouveau",      template:'{{Bienvenue}}~~~~ {{SUBST:Utilisateur:Rififi2}}~~~~'} ];   function getURLParameters(x) {   var questionMark = x.indexOf('?');   if (questionMark == -1) return {}   var fieldsArray = x.substr(questionMark + 1).split('&');   var fields = {}   for (var i = 0; i < fieldsArray.length; i++) {     var field = fieldsArray[i];     var equal = field.indexOf('=');     if (equal == -1) {       fields[decodeURIComponent(field)] = '';     } else {       fields[decodeURIComponent(field.substr(0, equal))] =           decodeURIComponent(field.substr(equal + 1));     }   }   return fields; }  _GET = getURLParameters(location.href);  function getMessage (chemin, where, user1, user2) {   var message = prompt (RevertDiffParams.Text.MessageAlert, '');   if (message) {     window.location = chemin + '&'+where+'=2&user1='+user1+'&user2='+user2+'&message='+message;   } }  $(document).ready(function (){   if (location.href.match(/diff=/)) {     // Get username of submitter     var user1TD = $('td.diff-otitle')[0];     var user2TD = $('td.diff-ntitle')[0];     if(!user1TD || !user2TD) return;      // Récupération du chemin vers la version à rétablir     var chemin = encodeURI(user1TD.getElementsByTagName('a')[1].href);      var user1 = $(user1TD).find('a.mw-userlink')[0].innerHTML;     var user2 = $(user2TD).find('a.mw-userlink')[0].innerHTML;      var Annul = '('                + '<a href="'+chemin+'&annul=1&user1='+user1+'&user2='+user2+'">'+RevertDiffParams.Text.Annul+'</a>'                + ' / '                + '<a href="javascript:getMessage(\''+chemin+'\',\'annul\',\''+user1+'\',\''+user2+'\');">'+RevertDiffParams.Text.Message+'</a>'                + ')';      var Revert = '('                + '<a href="'+chemin+'&revert=1&user1='+user1+'&user2='+user2+'">'+RevertDiffParams.Text.Revert+'</a>'                + ' / '                + '<a href="javascript:getMessage(\''+chemin+'\',\'revert\',\''+user1+'\',\''+user2+'\');">'+RevertDiffParams.Text.Message+'</a>'                + ')';      var Warn = '('+RevertDiffParams.Text.Warn+' : ';     var SiteURL = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=';     for(var a=0,l=RevertDiffParams.Warn.length;a<l;a++){         if(a!=0) Warn += ' / ';         Warn += '<a href="'+SiteURL+'User_talk:'+user2+'&action=edit&section=new'               + '&'+RevertDiffParams.Warn[a].urlparam+'" '               + 'title="'+RevertDiffParams.Warn[a].template+'" '               + '>'+RevertDiffParams.Warn[a].text+'</a>';     }     Warn += ')';     document.getElementById('contentSub').innerHTML = Annul + " " + Revert + " " + Warn;    }else if (location.href.match(/annul=1/)) {     document.getElementById('wpSummary').value = RevertDiffParams.Text.AnnulResume.split("$1").join(_GET['user1']).split("$2").join(_GET['user2']);     document.getElementById('editform').submit();   }else if (location.href.match(/annul=2/)) {     document.getElementById('wpSummary').value = RevertDiffParams.Text.AnnulResume.split("$1").join(_GET['user1']).split("$2").join(_GET['user2']) + ' : '+_GET['message'];     document.getElementById('editform').submit();   }else if (location.href.match(/revert=1/)) {     document.getElementById('wpSummary').value = RevertDiffParams.Text.RevertResume.split("$1").join(_GET['user1']).split("$2").join(_GET['user2']);     document.getElementById('editform').submit();   }else if (location.href.match(/revert=2/)) {     document.getElementById('wpSummary').value = RevertDiffParams.Text.RevertResume.split("$1").join(_GET['user1']).split("$2").join(_GET['user2']) + ' : '+_GET['message'];     document.getElementById('editform').submit();   }else{     for(var a=0,l=RevertDiffParams.Warn.length;a<l;a++){       var Warn = RevertDiffParams.Warn[a];       if (location.href.match(new RegExp(Warn.urlparam))) {         var Template = Warn.template;         Template = Template.split('$page').join(''); // mw.config.get('wgPageName').replace(/_/g, " "));         Template = Template.split('$user').join(mw.config.get('wgUserName'));         document.getElementById('wpTextbox1').value = Template;         document.getElementById('editform').submit();       }     }   } }); //</nowiki>  /*  * Résumé Deluxe  *  * Ajoute des commentaires de modification prédéfinis  *  * Auteur : Dake  * Contributions : Pabix, Tieno, Ltrlg  * Date de dernière révision : 3 janvier 2014  *   * 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', 		'catégorisation', 		'wikification', 		'image', 		'mise en forme',                 'avancement', 		'mise en page', 		'redirection', 		'relecture', 		'style', 		'revert', 		'réorganisation', 		'réponse',                 'nouveau message', 		'maintenance', 		['homonymie', 'création homonymie'], 		['bandeau', 'ajout de bandeau'], 		'infobox', 		'références', 		'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 ( $.isArray( definition ) ) { 		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 ( $.isArray( definition ) ) { 		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 		! $.isArray( window.ResumeDeluxe_liens ) && 		// Les deux tableaux doivent exister 		$.isArray( window.resumedeluxeTitles ) && 		$.isArray( window.resumedeluxeInputs ) && 		// 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 lutilisateur a défini window.ResumeDeluxe_liens, celui-ci est utilisé
 *     à la place de la liste par défaut liensParDefaut ;
 *    sinon si lutilisateur 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 ( $.isArray( window.ResumeDeluxe_liens ) ) {
		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 );
	}
 
	// L’ÉditeurVisuel ne se base plus sur le contenu mais sur l’évènement
	$resume.change();
}

/* 
 * Fonction renvoyant un lien à partir de sa définition
 */
function $lien( definition ) {
	var resume = resumeAInserer( definition );
	return $( '<a>' )
		.text( texteDuLien( definition ) )
		.attr( {
			href: '#',
			title: 'Ajouter «\xA0' + resume + '\xA0» au résumé de modification'
		} )
		.click( function () {
			ajouterAuResume( resume );
			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 () {
		/*
		 * 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 ( $( '#ResumeDeluxe' ).size() < 1 ) {
			$( '#MediaWiki-summary' ).after( $cont );
			$resume = $( '.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();