Aller au contenu

Utilisateur:Eric Larcher/monobook.js

Une page de Wikipédia, l'encyclopédie libre.
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.
<nowiki>
function setSummary(str)
 {
  document.editform.wpSummary.value = str;
 }
 
 function addToSummary(str)
 {
  var resum = document.editform.wpSummary.value
  if(resum != 0 && resum.indexOf("*/") < resum.length - 3)
  {
   document.editform.wpSummary.value += " - ";
  }
  document.editform.wpSummary.value += str;
  checksWithSummary(str, "Projet", 8);
  checksWithSummary(str, "revert", 8);
 }
 
 function checksWithSummary(str, text, num)
 {
  if(str.indexOf(text, num) > 0)
  {
   document.editform.wpWatchthis.checked = false;
   document.editform.wpMinoredit.checked = true;
  }
 }
 
 function TodayDate()
 {
  m = new Array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre");
  today = new Date();
  day = today.getDate();
  year = today.getYear();
  if(year < 2000)
  {
   year = year + 1900;
  }
  return(day + " " + m[today.getMonth()] + " " + year);
 }
 
 // Ajouter une boîte perso dans le menu de gauche.
 
 function nouvelleBoite()
 {
  var tDate = TodayDate();
  var l = document.getElementById("column-one");
  if(l)
  {
   l.innerHTML = l.innerHTML
   + '<div class="portlet" id="p-nbx">'
   + ' <h5>boîte perso</h5>'
   + ' <div class="pBody">'
   + '   <ul>'
   + '     <li><a href="http://fr.wikipedia.org/wiki/Wikipédia:Annonces" target="_blank">Annonces</a></li>'
   + '     <li><a href="http://fr.wikipedia.org/wiki/Wikipédia:Le_Bistro" target="_blank">Bistro</a> - <a href="http://fr.wikipedia.org/wiki/Wikipédia:Le_Bistro/' + tDate + '" target="_blank">aujourd\'hui</a></li>'
   + '     <li><a href="http://fr.wikipedia.org/wiki/Wikipédia:Comité d\'arbitrage/Arbitrage" target="_blank">Arbitrages</a></li>'
   + '     <li><a href="http://fr.wikipedia.org/wiki/Wikipédia:Bot" target="_blank">Bots</a> - <a href="http://fr.wikipedia.org/wiki/Wikipédia:Bot/Requêtes" target="_blank">requêtes</a></li>'
   + '     <li><a href="http://fr.wikipedia.org/wiki/Catégorie:Dragon Ball" target="_blank">Dragon Ball</a> - <a href="http://fr.wikipedia.org/wiki/Utilisateur:PieRRoMaN/Portail:Dragon Ball" target="_blank">portail</a></li>'
   + '     <li><a href="http://fr.wikipedia.org/wiki/Catégorie:Wikipédia:ébauche" target="_blank">Ébauches</a> - <a href="http://fr.wikipedia.org/wiki/Wikipédia:Catégories d\'ébauches" target="_blank">catégories</a></li>'
   + '     <li><a href="http://fr.wikipedia.org/wiki/Wikipédia:Pages_à_supprimer" target="_blank">Pages à supprimer</a></li>'
   + '     <li><a href="http://fr.wikipedia.org/wiki/Aide:Formules TeX" target="_blank">Formules TeX</a></li>'
   + '     <li><a href="http://fr.wikipedia.org/wiki/Wikipédia:Modèles" target="_blank">Modèles</a></li>'
   + '     <li><a href="http://fr.wikipedia.org/wiki/Wikipédia:Projet/Restauration lien rouge" target="_blank">Liens rouges</a></li>'
   + '     <li><a href="http://fr.wikipedia.org/wiki/Wikipédia:Projet/Liens vers les pages d\'homonymie" target="_blank">Pages d\'homonymie</a></li>'
   + '   </ul>'
   + ' </div>'
   + '</div> ';
  }
 }
 
 $(nouvelleBoite);
 
 // Ajouter des commentaires prédéfinis dans la barre de résumé.
 
 function DeluxeSummary()
 {
  var sumLbl = document.getElementById("wpSummaryLabel");
  if(sumLbl)
  {
   var sumInput = document.getElementById("wpSummary");
   sumInput.style.width = "95%";
   var titles = new Array()
   titles.push("ortho")
   titles.push("typo")
   titles.push("categ")
   titles.push("interw")
   titles.push("wikif")
   titles.push("blanch")
   titles.push("redir")
   titles.push("revert")
   titles.push("rouge")
   titles.push("homon")
   var inputs = new Array()
   inputs.push("orthographe")
   inputs.push("typographie")
   inputs.push("catégorisation")
   inputs.push("interwiki")
   inputs.push("wikification")
   inputs.push("blanchissement")
   inputs.push("redirect")
   inputs.push("revert")
   inputs.push("[[Wikipédia:Projet/Restauration lien rouge|restauration liens rouges]]")
   inputs.push("lien homonymie")
   var str = ""
   for(var cpt = 0; cpt < titles.length; cpt ++)
   {
    str += "<a href=\"javascript:addToSummary('" + inputs[cpt] + "')\""
           + " class=\"sumLink\" title=\"Ajouter '" + inputs[cpt] +"' dans la boîte de résumé\">"
           + titles[cpt]
           + "</a> "
   }
   sumLbl.innerHTML = str + "<br />" + sumLbl.innerHTML
  }
 }
 
 $(DeluxeSummary);
 
 // Merci (entre autres) à Dake, Yug, Pabix, et GôTô, pour les scripts...

// Fusion display of Wikipedia user contributions history
// Copyright 2006, Marc Mongenet
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// See http://www.gnu.org/licenses/gpl.html

// TODO: Special:Log, marque collisions

var fus = new Object(); // fus is Used as namespace.
fus.main_contributor = undefined; // main contributor name
fus.contributors_list = new Object(); // XHTML list of contributors
fus.contribs_limit = 0; // 0 means default value
fus.count = 0; // number of fusionned contribs
fus.colors = [ "", "#FFB", "#FBF", "#BFF", "#DDF", "#DFD", "#FDD",
                   "#EEA", "#EAE", "#AEE", "#CCE", "#CEC", "#ECC",
                   "#DD9", "#D9D", "#9DD", "#BBD", "#BDB", "#DBB" ];

fus.contributors_list.init = function() {
	this.elm = document.createElement("ol");
}

fus.contributors_list.add = function(contributor) {
	// UI components
	var li = document.createElement("li");
	li.fus = new Object();
	li.fus.contributor = contributor;
	li.style.backgroundColor = fus.colors[fus.count];
	li.appendChild(document.createTextNode(contributor));
	var a = document.createElement("a");
	a.href = "http://tools.wikimedia.de/~interiot/cgi-bin/count_edits?dbname=frwiki_p&user=" + contributor;
	a.appendChild(document.createTextNode(" editcount"));
	li.appendChild(a);
	this.elm.appendChild(li);
}

fus.monthNameToNum = function(m) {
	if (m == "janvier") return 0;
	if (m == "février") return 1;
	if (m == "mars") return 2;
	if (m == "avril") return 3;
	if (m == "mai") return 4;
	if (m == "juin") return 5;
	if (m == "juillet") return 6;
	if (m == "août") return 7;
	if (m == "septembre") return 8;
	if (m == "octobre") return 9;
	if (m == "novembre") return 10;
	if (m == "décembre") return 11;
	return 12;
}

// Return Date of contribution listed in this li element.
fus.contribTimeRegex = /(\d+)\s+(\S+)\s+(\d{4})\D+(\d+)\D+(\d{2})/;
fus.parseContribTime = function(li) {
	var datetime = li.firstChild.nodeValue.match(fus.contribTimeRegex);
	datetime[2] = fus.monthNameToNum(datetime[2]);
	return new Date(parseInt(datetime[3]),
		            datetime[2],
	                parseInt(datetime[1]),
	                parseInt(datetime[4], 10),
	                parseInt(datetime[5], 10));
}

fus.fuse = function(ul1, ul2, contributor, color) {
	contributor = " -- " + contributor;
	var li1 = ul1.firstChild;
	for (var li22 = ul2.firstChild; li22; li22 = li22.nextSibling) {
		if (li22.nodeType == 1) {
			var li2 = li22.cloneNode(true);
			li2.appendChild(document.createTextNode(contributor));
			li2.style.backgroundColor = color;
			var time2 = fus.parseContribTime(li2).getTime();

			while (li1) {
				if (li1.nodeType == 1) {
					var time1 = fus.parseContribTime(li1).getTime();
					if (time1 <= time2) {
						if (time1 == time2) {
							li1.style.borderLeftWidth = li2.style.borderLeftWidth = "0.25em";
							li1.style.borderLeftStyle = li2.style.borderLeftStyle = "solid";
							li1.style.borderLeftColor = li2.style.borderLeftColor = "red";
						}
						break;
					}
				}
				li1 = li1.nextSibling;
			}
			ul1.insertBefore(li2, li1);
		}
	}
}

fus.getElementById = function(elm, id) {
	var res = null;
	if (elm.id == id) res = elm;
	for (var child = elm.firstChild; !res && child; child = child.nextSibling)
		if (child.nodeType == 1)
			res = fus.getElementById(child, id);
	return res;
}

fus.onFusionWith = function(contributor) {
	++fus.count;
	fus.contributors_list.add(contributor);

	// Load fusionned page with synchronous XMLHttpRequest
	var http_request;
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType)
			http_request.overrideMimeType('text/xml');
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	http_request.open('GET', "/w/index.php?title=Special:Contributions&target="+contributor+"&offset=0&limit="+fus.contribs_limit, false);
	http_request.send(null);

	// Get both contributions histories
	var ul1 = document.getElementById("bodyContent");
	ul1 = ul1.getElementsByTagName("ul")[0];

	var ul2 = http_request.responseXML;
	if (!ul2.getElementById) { // MSIE
		ul2 = document.createElement("div");
		ul2.innerHTML = http_request.responseText;
		ul2 = fus.getElementById(ul2, "bodyContent");
	} else {
		ul2 = ul2.getElementById("bodyContent");
	}
	ul2 = ul2.getElementsByTagName("ul")[0];

	// Fusion
	fus.fuse(ul1, ul2, contributor, fus.colors[fus.count]);
}

fus.parseContribUrlTarget = function(url) {
	var target = url.match(/&target=([^&]+)/);
	if (!target)
		target = url.match(/Special:Contributions\/(\S+)/);
	return target[1];
}

fus.parseContribUrlLimit = function(url) {
	var limit = url.match(/&limit=(\d+)/);
	if (limit)
		return parseInt(limit[1]);
	return 0;
}

fus.onContribPage = function(url) {
	fus.main_contributor = fus.parseContribUrlTarget(url);
	fus.contribs_limit = fus.parseContribUrlLimit(url);

	// UI components
	fus.contributors_list.init();
	fus.contributors_list.add(fus.main_contributor);

	var input = document.createElement("input");
	input.type = "text";

	var submit = document.createElement("input");
	submit.type = "submit";

	var form = document.createElement("form");
	form.onsubmit = function() {
		fus.onFusionWith(input.value);
		return false;
	}

	// UI components layout
	submit.value = "Fusionner";
	var fusion = document.createTextNode("Fusionner avec les contributions de ");
	form.appendChild(fusion);
	form.appendChild(input);
	form.appendChild(submit);
	var bodyContent = document.getElementById("bodyContent");
	bodyContent.insertBefore(form, bodyContent.firstChild);
	bodyContent.insertBefore(fus.contributors_list.elm, bodyContent.firstChild);
}

fus.testForContribPage = function () {
	var url = window.location.href;
	if (url.match(/\/Special:Contributions\/|title=Special:Contributions/)) {
		try {
			fus.onContribPage(url);
		} catch (e) {
			/* Something went wrong. */
		}
	}
}

if (window.addEventListener) {
	window.addEventListener("load", fus.testForContribPage, false);
}
else if (window.attachEvent) {
	window.attachEvent("onload", fus.testForContribPage);
}
</nowiki>