Utilisateur:Dr Brains/RecentlyBlockedUsersInRC.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.
//<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>