Utilisateur:Sacamol/HistoryDeluxe.js
Apparence
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.// {{Catégorisation JS}}
/////////////////////////////////////// RECUPERACTION DE LA LISTE DES BOTS ET SYSOPS ///////////////////////////////////////
//
function GetUsersInGroup_UpdateUserList(Group, CookieName, UserList, UserContinue){
if((!Group)||(!CookieName)) return;
if(!UserList) UserList = new Array();
if(!UserContinue) UserContinue = '';
var APILimit = 499;
if((mw.config.get('wgUserName')=="sysop")||(mw.config.get('wgUserName')=="bot")) APILimit = 4999;
var url = mw.config.get('wgServer') + mw.config.get('wgScriptPath')
+ '/api.php?format=xml&action=query&list=allusers'
+ '&aulimit='+APILimit
+ '&augroup='+Group
+ UserContinue;
var NouvelleRequete = new XMLHttpRequest();
NouvelleRequete.open("GET", url, true);
NouvelleRequete.send(null);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
var ObjetXML = NouvelleRequete.responseXML;
var Users = ObjetXML.getElementsByTagName('u');
for(a=0;a<Users.length;a++){
var UserName = Users[a].getAttribute('name');
if(UserName) UserList.push(UserName);
}
var UserContinue = ObjetXML.getElementsByTagName('query-continue')[0];
if(UserContinue){
var AutreRequeteContinue = '&aufrom=' + UserContinue.getElementsByTagName('allusers')[0].getAttribute('aufrom');
GetUsersInGroup_UpdateUserList(Group, CookieName, UserList, AutreRequeteContinue);
}else{
var cookieValue = UserList.join(';');
var now = new Date();
var CookieDelay = new Date(now.getTime() + 1000 * 60 * 60 * 24 * 7 );
document.cookie = escape(CookieName) + '=' + escape(cookieValue) + '; EXPIRES=' + CookieDelay.toGMTString() + "; PATH=/" ;
window.location.reload();
}
}
}
}
function GetUsersInGroup_GetUserList(Group, cookieName){
var cookieValue = false;
var posName = document.cookie.indexOf(escape(cookieName) + '=' );
if (posName != -1) {
var posValue = posName + (escape(cookieName) + '=' ).length;
var endPos = document.cookie.indexOf(';', posValue) ;
if (endPos != -1) {
cookieValue = unescape(document.cookie.substring(posValue, endPos));
} else {
cookieValue = unescape(document.cookie.substring(posValue));
}
}
if(cookieValue){
return decodeURIComponent(cookieValue);
}else{
return false;
}
}
// Effacement du cookie du gadget
HistoryDeluxe_DeleteOldCookie("botsDeluxeHistory");
HistoryDeluxe_DeleteOldCookie("sysopsDeluxeHistory");
if(typeof(wgBotMembers)=="undefined"){
wgBotMembers = GetUsersInGroup_GetUserList('bot', 'User-Group-bot');
if(!wgBotMembers){
GetUsersInGroup_UpdateUserList('bot', 'User-Group-bot');
}else{
wgBotMembers = wgBotMembers.split(';');
}
}
if(typeof(wgSysopMembers)=="undefined"){
wgSysopMembers = GetUsersInGroup_GetUserList('sysop', 'User-Group-sysop');
if(!wgSysopMembers){
GetUsersInGroup_UpdateUserList('sysop', 'User-Group-sysop');
}else{
wgSysopMembers = wgSysopMembers.split(';');
}
}
// Effacement du cookie du gadget actuel (risque de saturation des cookies)
function HistoryDeluxe_DeleteOldCookie(CookieName){
var now = new Date();
var CookieDelay = new Date(now.getTime() + 100 );
document.cookie = escape(CookieName) + '=' + escape("no") + '; EXPIRES=' + CookieDelay.toGMTString() + "; PATH=/" ;
}
/////////////////////////////////////// LANCEMENTS ///////////////////////////////////////
if((wgBotMembers)&&(wgSysopMembers)){
importStylesheet('Utilisateur:Dr Brains/HistoryDeluxe.css');
if(mw.config.get('wgAction')=="history"){
addOnloadHook(HistoryDeluxe_History);
} else if((mw.config.get('wgCanonicalSpecialPageName')=="Watchlist")&&((document.URL.indexOf("edit")==-1)||(document.URL.indexOf("raw")==-1))){
addOnloadHook(HistoryDeluxe_Watchlist);
} else if(mw.config.get('wgCanonicalSpecialPageName')=="Recentchanges"){
addOnloadHook(HistoryDeluxe_Recentchanges);
} else if(mw.config.get('wgCanonicalSpecialPageName')=="Recentchangeslinked"){
addOnloadHook(HistoryDeluxe_Recentchangeslinked);
} else if(mw.config.get('wgCanonicalSpecialPageName')=="Newpages"){
addOnloadHook(HistoryDeluxe_Newpages);
} else if(mw.config.get('wgCanonicalSpecialPageName')=="Log"){
addOnloadHook(HistoryDeluxe_Log);
} else if(mw.config.get('wgCanonicalSpecialPageName')=="AbuseLog"){
addOnloadHook(HistoryDeluxe_AbuseLog);
} else{
addOnloadHook(HistoryDeluxe_OtherPages);
}
}
/////////////////////////////////////// FONCTIONS GENERALES ///////////////////////////////////////
function HistoryDeluxe_History(){
var HistoryPage = document.getElementById('pagehistory');
if(!HistoryPage) return;
var Lis = HistoryPage.getElementsByTagName('li');
for(var a=0;a<Lis.length;a++){
$(Lis[a]).addClass(HistoryDeluxe_UserGroupClassName(Lis[a]));
}
}
function HistoryDeluxe_Watchlist(){
// Liste de suivi normale
var Uls = document.getElementsByTagName('ul');
for(var a=0;a<Uls.length;a++){
if($(Uls[a]).hasClass("special")){
var Lis = Uls[a].getElementsByTagName('li');
for(var b=0;b<Lis.length;b++){
$(Lis[b]).addClass(HistoryDeluxe_UserGroupClassName(Lis[b]));
}
}
}
// Liste de suivi "améliorée"
var TDs = document.getElementsByTagName('td');
for(var a=0;a<TDs.length;a++){
var TD = TDs[a];
var User = HistoryDeluxe_GetUserName(TD);
if(User){
$(TD).addClass(HistoryDeluxe_UserGroupClassName(TD));
}
}
}
function HistoryDeluxe_Recentchanges(){
// RC normale
var Uls = document.getElementsByTagName('ul');
for(var a=0;a<Uls.length;a++){
if($(Uls[a]).hasClass("special")){
var Lis = Uls[a].getElementsByTagName('li');
for(var b=0;b<Lis.length;b++){
$(Lis[b]).addClass(HistoryDeluxe_UserGroupClassName(Lis[b]));
}
}
}
// RC "améliorées"
var TDs = document.getElementsByTagName('td');
for(var a=0;a<TDs.length;a++){
var TD = TDs[a];
var User = HistoryDeluxe_GetUserName(TD);
if(User){
$(TD).addClass(HistoryDeluxe_UserGroupClassName(TD));
}
}
}
function HistoryDeluxe_Recentchangeslinked(){
// RC liées normales
var Uls = document.getElementsByTagName('ul');
for(var a=0;a<Uls.length;a++){
if($(Uls[a]).hasClass("special")){
var Lis = Uls[a].getElementsByTagName('li');
for(var b=0;b<Lis.length;b++){
$(Lis[b]).addClass(HistoryDeluxe_UserGroupClassName(Lis[b]));
}
}
}
// RC liées "améliorées"
var TDs = document.getElementsByTagName('td');
for(var a=0;a<TDs.length;a++){
var TD = TDs[a];
var User = HistoryDeluxe_GetUserName(TD);
if(User){
$(TD).addClass(HistoryDeluxe_UserGroupClassName(TD));
}
}
}
function HistoryDeluxe_Newpages(){
var Content = document.getElementById('bodyContent');
if(!Content) Content=document.getElementById('mw_contentholder');
if(!Content) Content=document.getElementById('article');
var List = Content.getElementsByTagName('ul')[0];
if(!List) return;
var Lis = List.getElementsByTagName('li');
for(var b=0;b<Lis.length;b++){
if(HistoryDeluxe_UserGroupClassName(Lis[b]))
$(Lis[b]).addClass(HistoryDeluxe_UserGroupClassName(Lis[b]));
}
}
function HistoryDeluxe_Log(){
var Content = document.getElementById('bodyContent');
if(!Content) Content=document.getElementById('mw_contentholder');
if(!Content) Content=document.getElementById('article');
var List = Content.getElementsByTagName('ul')[0];
if(!List) return;
var Lis = List.getElementsByTagName('li');
for(var b=0;b<Lis.length;b++){
if(HistoryDeluxe_UserGroupClassName(Lis[b]))
$(Lis[b]).addClass(HistoryDeluxe_UserGroupClassName(Lis[b]));
}
}
function HistoryDeluxe_AbuseLog(){
var Content = document.getElementById('bodyContent');
if(!Content) Content=document.getElementById('mw_contentholder');
if(!Content) Content=document.getElementById('article');
var List = Content.getElementsByTagName('ul')[0];
if(!List) return;
var Lis = List.getElementsByTagName('li');
for(var b=0;b<Lis.length;b++){
if(HistoryDeluxe_UserGroupClassName(Lis[b]))
$(Lis[b]).addClass(HistoryDeluxe_UserGroupClassName(Lis[b]));
}
}
function HistoryDeluxe_OtherPages(){
var Uls = document.getElementsByTagName('ul');
for(var a=0;a<Uls.length;a++){
if($(Uls[a]).hasClass("special")){
var Lis = Uls[a].getElementsByTagName('li');
for(var b=0;b<Lis.length;b++){
$(Lis[b]).addClass(HistoryDeluxe_UserGroupClassName(Lis[b]));
}
}
}
}
/////////////////////////////////////// FONCTIONS SUBALTERNES ///////////////////////////////////////
function HistoryDeluxe_UserGroupClassName(Li){
var LiClass = "UserIs-User";
var UserName = HistoryDeluxe_GetUserName(Li);
if(wgBotMembers.indexOf(UserName)!=-1) LiClass = "UserIs-Bot";
if(wgSysopMembers.indexOf(UserName)!=-1) LiClass = "UserIs-Sysop";
if(HistoryDeluxe_IsIP(UserName)) LiClass = "UserIs-IP";
return LiClass;
}
function HistoryDeluxe_GetUserName(Li){
var AllLinks = HistoryDeluxe_getElementsByClassName("mw-userlink", "a", Li);
// var AllLinks = getElementsByClassName(Li, "a", "mw-userlink");
if(AllLinks.length==1){
return AllLinks[0].innerHTML;
}
return false;
}
function HistoryDeluxe_IsIP(UserName){
var ipv4 = /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/;
var ipv6 = /\w{1,4}\:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}/;
if (ipv4.exec(UserName) || ipv6.exec(UserName)) {
return true;
}
return false;
}
function HistoryDeluxe_getElementsByClassName(className, tag, elm){
var testClass = new RegExp("(^|s)" + className + "(s|$)");
var tag = tag || "*";
var elm = elm || document;
var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
var returnElements = [];
var current;
var length = elements.length;
for(var i=0; i<length; i++){
current = elements[i ];
if(testClass.test(current.className)){
returnElements.push(current);
}
}
return returnElements;
}