Communauté  • Livre d'or
Chats noirs.jpg Actualités, astuces, interview... Venez lire la gazette de ce printemps de Vikidia ! DessinInterview.png

Utilisateur:Hermann/common.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.

/* Code source de Vivi-1 */
/**
 *
 * Affiche un nouveau Menu à gauche avec quelques liens pratiques
 * Toutes modifications devraient se faire sur la page du menu
 *
**/
 
function getHTTPObject() {
  var xmlhttp = false;
  /* on essaie de créer l'objet si ce n'est pas déjà fait */
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
      } catch (e) {
      xmlhttp = false;
      }
    }
  return xmlhttp;
}
 
function AddMenu() {
  var contenu = 'Erreur d\'affichage';
  var HTTPMenu = new getHTTPObject();
  if (HTTPMenu) {// requête au serveur
    //le ligne suivante entraine un bug, la recherche ne fait plus de propositions automatiques
    HTTPMenu.open('GET', '//fr.vikidia.org/wiki/MediaWiki:Gadget-MenuAdmin/Menu?action=render', false);
    HTTPMenu.onreadystatechange = function () {
      if (HTTPMenu.readyState == 4) {
        var reponse = HTTPMenu.responseText;
        var deb = '<div id="OuvreMenu"></div>';
        var ideb =  reponse.indexOf(deb)+deb.length;
        var fin = '<div id="FermeMenu"></div>';
        var ifin = reponse.indexOf(fin);
        contenu = reponse.substring(ideb,ifin);
        if (skin == "monobook"){
          var l = document.getElementById("column-one");
          if (l) {
            l.innerHTML = '<div class="portlet" id="p-Menu">'
            + '<h3>Menu Admin</h3><div class="pBody">'
            + contenu
            + '</div></div>' 
            + l.innerHTML;
          }
          var menu_class = "";
        } else if (skin == "vector"){
          var l= document.getElementById("mw-panel");
          if (l) {
            l.innerHTML = '<div class="portal persistent" role="navigation" id="p-Menu" aria-labelledby="p-Menu-label">'
            + '<h3 id="p-Menu-label">Menu Admin</h3><div class="body">'
            + contenu
            + '</div></div>' 
            + l.innerHTML;
          }
        }
      }
    }// fin gestion onreadystatechange
  HTTPMenu.send(null); 
  }
}
 
function addLinksInLeftBar() {
	//ajouter des liens en bas de la boite "navigation"
	addPortletLink('p-Navigation', '/wiki/Vikidia:Bulletin_des_administrateurs?action=purge', 'Bulletin des admins', 'n-buladm');
	addPortletLink('p-Navigation', '/wiki/Vikidia:Demandes aux administrateurs?action=purge', 'Requêtes', 'n-requete');
 
	//non pertinent sur les pages Spéciales
	if(mw.config.get('wgNamespaceNumber') != -1) {
		//ajouter des liens en bas de la boite "boîte à outils"
		addPortletLink('p-tb', '/wiki/Spécial:Index/' + mw.config.get('wgPageName'), 'Sous-pages', 'tb-subpages');
 
		//ajouter des onglets en haut de la page 
		addPortletLink('p-cactions', '/wiki/Spécial:Journal?page=' + mw.config.get('wgPageName'), 'Journal', 'p-log');
		addPortletLink('p-cactions', '/wiki/' + mw.config.get('wgPageName') +'?action=purge', 'Purge', 'p-purge');
	}
}
addOnloadHook(addLinksInLeftBar)
// common.js de Rififi
//Création de la todolist
    var elAP = document.createElement("div");
    elAP.setAttribute("class", "portal");
    elAP.setAttribute("id", "todolist");
    elAP.innerHTML = '<h3>Todo</h3><div class="body"><ul id="todolist"></ul></div>';
    document.getElementById("mw-panel").appendChild(elAP);
 
    //indication de la todo list
    var elAssomPage = document.createElement("li");
    elAssomPage.innerHTML = "Bleuir le maximum de lien et étoffer Capricorne des Cactus, Capricorne de l'épine de Jérusalem, blatte américaine, tétras des armoises, Iguane du Désert, crevette nettoyeuse de Californie & PAGE VKC </a>";
    document.getElementById("todolist").appendChild(elAssomPage);
/* 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:Kiminou/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/Vikidia:Articles à créer";
   Common_Link.accesskey = "s";
   Common_Link.title = "Articles à créer";
   Common_Link.innerHTML = "Articles à créer";
   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:Kiminou/Bac à Sable";
   Common_Link.accesskey = "s";
   Common_Link.title = "Mon labo";
   Common_Link.innerHTML = "Mon labo";
   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 = "http://kiwiirc.com/client/irc.freenode.net/#vikidia,#vikidia-fr";
   Common_Link.accesskey = "s";
   Common_Link.title = "Connection à IRC";
   Common_Link.innerHTML = "Se connecter à IRC";
   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=02", text:"Averto-1",   template:'{{subst:Averto-1}}~~~~'},
  {urlparam:"warn=06", text:"Spam0", template:'{{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:"MerciIP",      template:'{{MerciIP}}~~~~'},
  {urlparam:"warn=10", text:"Bac à sable",      template:'{{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 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 ( $.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();
importScript('Utilisateur:Linedwell/HotCatsMulti.js')
importScript('Utilisateur:Linedwell/quickeditcounter.js'); //affiche sur la PU des utilisateurs leur nombre d'éditions 
 
 
//============================================================
// 
// Divers
// 
//============================================================
 
/**
 
 
* Références vers les expressions mathématiques, avec {{ligne math}} et {{ref math}}
 */
 
function reinit_ref_math(ligne){
  // Annule l’effet de mise en évidence de {{ligne_math||n}}
  ligne.style.borderRadius="0";
  ligne.style.backgroundColor="transparent";
  ligne.style.opacity="1";
  ligne.style.boxShadow="none";
  ligne.setAttribute("onclick","");
}
function retour_ref_math(n){
  // Met en évidence l’expression mathématique {{ligne math}} correspondant au nombre n
  var ligne = document.getElementById('ligneMath-'+n);
  ligne.style.borderRadius="12px";
  ligne.style.backgroundColor="white";
  ligne.style.opacity="0.75";
  ligne.style.boxShadow="1px 1px 12px #555";
    // Prévoir la disparition de l’effet de mise en valeur :
  ligne.setAttribute("onclick","reinit_ref_math(this)");
}
function gestion_ref_math(){
  var spans = document.getElementsByTagName("span");
  var rgx = /#ligneMath-(\d+)$/;
  for(var i=0;i<spans.length;i++){
    if(spans[i].className=="lienRefMath"){
      spans[i].setAttribute("onclick",'retour_ref_math("'+(rgx.exec(spans[i].firstElementChild.href)[1])+'");');
    }
  }
}
addLoadEvent(gestion_ref_math);
 
 
 
//============================================================
// Modèles de vote
//============================================================
 
addCustomButton('http://download.vikidia.org/vikidia/fr/images/9/95/No_trash_icon.png','Conserver',"# {{Conserver}} Motivation + Signature");
addCustomButton('http://download.vikidia.org/vikidia/fr/images/8/8f/Nuvola_gnome-fs-trash-full.png','Supprimer',"# {{Supprimer}} Motivation + Signature");
addCustomButton('http://download.vikidia.org/vikidia/fr/images/a/ab/Symbole_vote_pour.png','Pour',"# {{Pour}} Motivation + Signature");
addCustomButton('http://download.vikidia.org/vikidia/fr/images/f/fa/Symbole_vote_plut%C3%B4t_pour.svg','Plutôt pour',"# {{Plutôt pour}} Motivation + Signature");
addCustomButton('http://download.vikidia.org/vikidia/fr/images/3/31/Symbole_vote_plut%C3%B4t_contre.png','Plutôt contre',"# {{Plutôt contre}} Motivation + Signature");
addCustomButton('http://download.vikidia.org/vikidia/fr/images/b/be/Symbole_vote_contre.png','Contre',"# {{Contre}} Motivation + Signature");
addCustomButton('http://download.vikidia.org/vikidia/fr/images/b/b2/Symbole_vote_neutre.png','Neutre',"# {{Neutre}} Motivation + Signature");
 
 
 
//============================================================
//
// Caractères spéciaux
//
//============================================================
 
/**
 * Ajoutez le menu pour choisir des sous-ensembles de caractères spéciaux
 * @note	L'ordre de cette liste doit correspondre a celui de MediaWiki:Edittools !
 */
function addCharSubsetMenu() {
  var specialchars = document.getElementById('specialchars');
 
  if (specialchars) {
    var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
    menu += "<option>Wiki</option>";
 
    menu += "</select>";
    specialchars.innerHTML = menu + specialchars.innerHTML;
 
    /* default subset - try to use a cookie some day */
    chooseCharSubset(0);
  }
}
 
/* select subsection of special characters */
function chooseCharSubset(s) {
  var l = document.getElementById('specialchars').getElementsByTagName('p');
  for (var i = 0; i < l.length ; i++) {
    l[i].style.display = i == s ? 'inline' : 'none';
    l[i].style.visibility = i == s ? 'visible' : 'hidden';
  }
}
 
addOnloadHook(addCharSubsetMenu);

//mw.loader.load('Utilisateur:Linedwell/quickeditcounter.js'); //affiche sur la PU des utilisateurs leur nombre d'éditions
$(document).ready(function addLinksInLeftBar() {
	//ajouter des liens en bas de la boite "navigation"
	mw.util.addPortletLink('p-Navigation', '/wiki/Vikidia:Bulletin_des_administrateurs', 'Bulletin des admins', 'n-buladm');
	mw.util.addPortletLink('p-Navigation', '/wiki/Vikidia:Demandes aux administrateurs', 'Requêtes aux administrateurs', 'n-dadm');
	mw.util.addPortletLink('p-Navigation', '/wiki/Vikidia:Demandes aux bureaucrates', 'Requêtes aux bureaucrates', 'n-dbubu');
	mw.util.addPortletLink('p-Navigation', '/wiki/Vikidia:Demandes aux développeurs', 'Requêtes aux développeurs', 'n-ddev');
 
	//non pertinent sur les pages Spéciales
	if(mw.config.get('wgNamespaceNumber') != -1) {
		//ajouter des liens en bas de la boite "boîte à outils"
		mw.util.addPortletLink('p-tb', '/wiki/Spécial:Index/' + mw.config.get('wgPageName'), 'Sous-pages', 'tb-subpages');
 
		//ajouter des onglets en haut de la page 
		mw.util.addPortletLink('p-cactions', '/wiki/Spécial:Journal?page=' + mw.config.get('wgPageName'), 'Journal', 'p-log');
		mw.util.addPortletLink('p-cactions', '/wiki/' + mw.config.get('wgPageName') +'?action=purge', 'Purge', 'p-purge');
	}
});