Utilisateur:Dake/monobook.js/deluxehistory.js
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) ;
Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5./* <pre><nowiki> */
/*************************************************/
// Nom : DeluxeHistory
// Auteur : Dake
// Basé sur du code Ajax de GôTô
// Dernière mise à jour : 8 avril 2006
// Commentaires :
/*************************************************/
var sysopsDeluxeHistory = null;
var botsDeluxeHistory = null;
function extractUsers(res) {
pattern = /title\=\"Utilisateur:(.*?)\"/g;
s = "";
while((result = pattern.exec(res)) != null) {
s += result[1] + "||";
}
return s;
}
/*************************************************/
// Auteur : Dake
// Basé sur du code de GôTô
/*************************************************/
function getBots() {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {
// mange l'exception
}
if (!cookies.get("botsDeluxeHistory")) {
ajax.conn.onreadystatechange = function () {
if (ajax.conn.readyState == 4) {
botsDeluxeHistory = extractUsers(ajax.getResult())
// conservé pour une semaine
cookies.setWithDelay("botsDeluxeHistory", botsDeluxeHistory, 1000*3600*24*7)
getSysops();
}
}
ajax.sendRequest("http://fr.wikipedia.org/w/index.php?title=Special:Listusers&group=bot&limit=500&offset=0&action=raw", "GET", true)
} else {
botsDeluxeHistory = cookies.get("botsDeluxeHistory")
getSysops();
}
}
/*************************************************/
// Auteur : Dake
// Basé sur du code de GôTô
/*************************************************/
function getSysops() {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {
// mange l'exception
}
if (!cookies.get("sysopsDeluxeHistory")) {
ajax.conn.onreadystatechange = function () {
if (ajax.conn.readyState == 4) {
sysopsDeluxeHistory = extractUsers(ajax.getResult())
// conservé pour une semaine
cookies.setWithDelay("sysopsDeluxeHistory", sysopsDeluxeHistory, 1000*3600*24*7)
deluxeHistoryProcess();
}
}
ajax.sendRequest("http://fr.wikipedia.org/w/index.php?title=Special:Listusers&group=sysop&limit=500&offset=0&action=raw", "GET", true)
} else {
sysopsDeluxeHistory = cookies.get("sysopsDeluxeHistory")
deluxeHistoryProcess();
}
}
// code by Martin Honnen
function getOuterHTML (node) {
if (node.nodeType == 3)
return node.nodeValue;
else if (node.nodeType == 1) {
var html = '';
html += '<' + node.nodeName;
for (var a = 0; a < node.attributes.length; a++)
html += ' ' + node.attributes[a].nodeName + '="' +
node.attributes[a].nodeValue + '"';
if (node.childNodes.length == 0)
html += ' \/>';
else {
html += '>';
for (var c = 0; c < node.childNodes.length; c++)
html += getOuterHTML(node.childNodes[c]);
html += '<\/' + node.nodeName + '>';
}
return html;
}
}
function deluxeHistoryProcess() {
sysopsList = sysopsDeluxeHistory.split("||")
botsList = botsDeluxeHistory.split("||")
var lis = document.getElementById("pagehistory").getElementsByTagName("li");
for (i=0; i<lis.length; i++) {
spanNode = lis[i].getElementsByTagName("span");
username = spanNode[0].childNodes[0].childNodes[0].nodeValue;
// check le statut du contributeur
var className = "history-user-normal";
// bot ?
for (j=0;j<botsList.length;j++) {
if (botsList[j].indexOf(username)==0) {
className = "history-user-bot"
break;
}
}
// sysop ?
for (j=0;j<sysopsList.length;j++) {
if (sysopsList[j].indexOf(username)==0) {
className = "history-user-sysop"
break;
}
}
// ip ?
var ip = /\d{1,3}\.\d{1,3}.\d{1,3}.\d{1,3}/;
if (ip.exec(username)) {
className = "history-user-ip"
}
// ajout des icônes
specialOp = "";
var comment = "";
for (h=0;h<spanNode.length;h++) {
if (spanNode[h].getAttribute("class") == "comment") {
comment = getOuterHTML(spanNode[h])
break;
}
}
var regexExpEvents = new Array();
regexExpEvents[0] = /((r|R)(é|e)vocation|(r|R)v |(R|r)evert|(v|V)andal(isme|e))/;
regexExpEvents[1] = /(a restauré|a (e|é)ffacé|(s|S)uppression)/;
regexExpEvents[2] = /((R|r)enommage|a déplacé|a renommé)/;
regexExpEvents[3] = /((semi|Semi)-(p|P)rotection|(P|p)rotection|(A|a) protégé)/;
var iconsEvents = new Array();
iconsEvents[0] = "http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Crystal_Clear_action_reload.png/20px-Crystal_Clear_action_reload.png"
iconsEvents[1] = "http://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Crystal_Clear_action_exit.png/20px-Crystal_Clear_action_exit.png"
iconsEvents[2] = "http://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Crystal_Clear_action_2rightarrow.png/20px-Crystal_Clear_action_2rightarrow.png"
iconsEvents[3] = "http://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Crystal_Clear_action_lock.png/20px-Crystal_Clear_action_lock.png"
if (comment) {
for (k=0;k<regexExpEvents.length;k++) {
if (regexExpEvents[k].test(comment)) {
imgTag = "<img src=\"" + iconsEvents[k] + "\" />"
specialOp = "<div class=\"" + className +
"\" style=\"float: right; vertical-align:top;\">" +
imgTag + "</div>"
}
}
}
lis[i].innerHTML = "<div class=\"" + className + "\">" + specialOp + lis[i].innerHTML + "</div>"
inputNodes = lis[i].getElementsByTagName("input");
for (j=0;j<inputNodes.length;j++) {
inputNodes[j].style.visibility='visible';
}
for (j=0;j<spanNode.length;j++) {
if(spanNode[j].getAttribute("class")=="history-user") {
spanNode[j].setAttribute("class", className)
}
}
}
}
function deluxeHistoryLoader() {
if (document.URL.indexOf("&action=history")==-1) return;
getBots();
}
$(deluxeHistoryLoader);
/* </nowiki></pre> */