Utilisateur:Dr Brains/RecentlyBlockedUsersInRC.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.//<source lang=javascrip>
//<pre><nowiki>
var RecentlyBlockedUsersInRC_BlockLimit = 4;
if(mw.config.get('wgCanonicalSpecialPageName')=="Recentchanges"){
addOnloadHook(RecentlyBlockedUsersInRC_AddLink);
}
function RecentlyBlockedUsersInRC_AddLink(){
var Options = document.getElementsByTagName('fieldset')[0];
var Lien = '<a id="RB_UsersLink" href="javascript:RecentlyBlockedUsersInRC_Hide();" >masquer</a> les utilisateurs non récemment bloqués.'
Options.innerHTML = Options.innerHTML.split("mes modifications.").join("mes modifications | "+Lien);
}
function RecentlyBlockedUsersInRC_Hide(){
var Content = document.getElementById("bodyContent");
if(!Content) Content = document.getElementById("mw_contentholder");
if(!Content) Content = document.getElementById("article");
if(!Content) return;
var AllLines = new Array();
var Uls = Content.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++){
AllLines.push(Lis[b]);
}
}
}
var BlockLimit = prompt('Filtrés les utilisateurs débloqués depuis moins de combien de jours', RecentlyBlockedUsersInRC_BlockLimit);
if(BlockLimit) RecentlyBlockedUsersInRC_BlockLimit = BlockLimit;
RecentlyBlockedUsersInRC_GetBlocks(0, AllLines);
}
function RecentlyBlockedUsersInRC_GetUser(Li){
var User = false;
var AllLinks = Li.getElementsByTagName('a');
for(var a=0;a<AllLinks.length;a++){
if((!User)&&($(AllLinks[a]).hasClass("mw-userlink"))){
User = AllLinks[a].innerHTML;
}
}
return User;
}
function RecentlyBlockedUsersInRC_GetBlocks(position, AllLines){
var Li = AllLines[position];
var User = RecentlyBlockedUsersInRC_GetUser(Li);
if(!User){
RecentlyBlockedUsersInRC_GetBlocks((position+1), AllLines);
return;
}
var NouvelleRequete = sajax_init_object();
var AdresseRequete = mw.config.get('wgServer')+ mw.config.get('wgScriptPath')+'/api.php?format=xml&action=query&list=logevents&letype=block&letitle=' +mw.config.get('wgFormattedNamespaces')[2]+':'+User;
NouvelleRequete.open("GET", AdresseRequete, true);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState == 4) {
var ObjetXML = NouvelleRequete.responseXML;
var BlockDate = false;
var Items = ObjetXML.getElementsByTagName('item');
if(!Items){
RecentlyBlockedUsersInRC_HideThisLine(Li);
RecentlyBlockedUsersInRC_GetBlocks((position+1), AllLines);
return;
}
for(var a=0;a<Items.length;a++){
if(!BlockDate){
var Type = Items[a].getAttribute('action');
if(Type=="unblock"){
BlockDate = Items[a].getAttribute('timestamp');
}else if(Type=="block"){
BlockDate = Items[a].getElementsByTagName('block')[0].getAttribute('expiry');
}
}
}
if(!BlockDate){
RecentlyBlockedUsersInRC_HideThisLine(Li);
RecentlyBlockedUsersInRC_GetBlocks((position+1), AllLines);
return;
}
BlockDate = BlockDate.replace(/T.*/g, "");
BlockDate = BlockDate.replace(/\-0/g, "\-");
var Annee = parseInt(BlockDate.split("-")[0]);
var Mois = parseInt(BlockDate.split("-")[1]);
var Jour = parseInt(BlockDate.split("-")[2]);
var DaysBlocked = ((Annee*365)+(Mois*30)+Jour);
var today = new Date();
var year = today.getYear();
if (year < 2000) year = year + 1900;
var month = (today.getMonth()+1);
var day = today.getDate();
var DaysNow = ((year*365)+(month*30)+day);
var DayFree = (DaysNow-DaysBlocked);
/*
alert(User + ':\n'
+ 'BlockDate :' + BlockDate+ '\n'
+ 'DaysBlocked :' + DaysBlocked+ '\n'
+ 'DaysNow: ' + DaysNow+ '\n'
+ 'DayFree: ' + DayFree+ '\n'
+ '\n');
*/
if(DayFree<RecentlyBlockedUsersInRC_BlockLimit){
RecentlyBlockedUsersInRC_ShowThisLine(Li, DayFree);
}else{
RecentlyBlockedUsersInRC_HideThisLine(Li);
}
RecentlyBlockedUsersInRC_GetBlocks((position+1), AllLines);
}
}
NouvelleRequete.send(null);
}
function RecentlyBlockedUsersInRC_ShowThisLine(Li, Duration){
Li.style.display = "block";
if(Duration){
var AllLinks = Li.getElementsByTagName('a');
for(var a=0;a<AllLinks.length;a++){
if($(AllLinks[a]).hasClass("mw-userlink")){
var Sup = document.createElement('sup');
Sup.innerHTML = Duration;
AllLinks[a].parentNode.insertBefore(Sup, AllLinks[a]);
}
}
}
}
function RecentlyBlockedUsersInRC_HideThisLine(Li){
Li.style.display = "none";
}
//</nowiki></pre></source>