Aller au contenu

Utilisateur:Dr Brains/SuiviRC.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) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/*

mw.config.get('wgServer') + '/w/api.php?action=query&list=recentchanges&rcnamespace=0&rclimit=499&rctype=edit&rcshow=!patrolled&rcprop=user|comment|timestamp|title|ids'

*/

document.write('<style type="text/css">');
document.write('#SuiviRC_Div {font-size:80%;height:80px;overflow-y:auto;margin-right:-1em;}');
document.write('</style>');


$(SuiviRC);


if(mw.config.get('wgUserGroups').indexOf('sysop')!=-1){ 
        var SuiviRC_APILimit = 4999;
}else{
        var SuiviRC_APILimit = 499;
}

function SuiviRC(){
        var TB = document.getElementById('p-tb');
        var PortletSuivi = document.createElement('div');
        PortletSuivi.className="portlet";

        var H5Suivi = document.createElement('h5');
        H5Suivi.innerHTML = '<a href="javascript:SuiviRC_getRC();" title="Mettre à jour" >RC</a>';
        PortletSuivi.appendChild(H5Suivi);

        var pBodySuivi = document.createElement('div');
        pBodySuivi.className="pBody";

        PortletSuivi.appendChild(pBodySuivi);

        var CadreSuivi = document.createElement('div');
        CadreSuivi.id="SuiviRC_Div";
        pBodySuivi.appendChild(CadreSuivi);
         
        TB.parentNode.insertBefore(PortletSuivi, TB);
        SuiviRC_getRC();
}

var SuiviRC_pages = new Array();
var SuiviRC_pagesCount = 0;

var SuiviRC_Timestamp = '';

var SuiviRC_MinimumChanges = 4;

function SuiviRC_getRC(){
      var NouvelleRequete = new XMLHttpRequest()
      var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&list=recentchanges&rcnamespace=0&rclimit='+SuiviRC_APILimit+'&rctype=edit&rcshow=!patrolled&rcprop=user|comment|timestamp|title|ids';     
      NouvelleRequete.open("GET", AdresseRequete, true);
      NouvelleRequete.send(null);
      NouvelleRequete.onreadystatechange = function() {
            if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
                  var ElementTraitement = document.createElement('div');
                  ElementTraitement.innerHTML = NouvelleRequete.responseText; 
                  //document.body.insertBefore(ElementTraitement,document.body.firstChild);
                  var Informations = ElementTraitement.getElementsByTagName('span');
                  for(a=0;a<Informations.length;a++){
                        var ContenuInformation = Informations[a].innerHTML;
                        if(ContenuInformation.indexOf('title=')!=-1){
                              var TitrePage = ContenuInformation.split('title="')[1].split('"')[0];
                              while(TitrePage.indexOf('&amp;#039;')!=-1){
                                    TitrePage = TitrePage.split('&amp;#039;').join("'");
                                    if(TitrePage.indexOf('&amp;#039;')==-1) break;
                              }
                              SuiviRC_pages[SuiviRC_pagesCount] = TitrePage;
                              SuiviRC_pagesCount++
                        }
                        if(ContenuInformation.indexOf('rcstart=')!=-1){
                              SuiviRC_Timestamp = ContenuInformation.split('rcstart="')[1].split('"')[0];
                        }
                  }
                  SuiviRC_printRC();
            }
      }
}


function SuiviRC_printRC(){
      SuiviRC_pagesCount = 0;
      var SuiviRC_RencentChanges = new Array();
      var SuiviRC_RencentChangesCount = 0;

      var RecentChanges = SuiviRC_pages.sort();
      var MemePage = 1;
      for(a=0;a<RecentChanges.length;a++){
            if(RecentChanges[a]==RecentChanges[(a+1)]){
                  MemePage++
                  RecentChanges[a] = false;
            }else{
                  if(MemePage<SuiviRC_MinimumChanges){
                        RecentChanges[a] = false;
                  }else{
                        var zeroPage = ""
                        if(MemePage<1000)zeroPage += "0";
                        if(MemePage<100)zeroPage += "0";
                        if(MemePage<10)zeroPage += "0";
                        SuiviRC_RencentChanges[SuiviRC_RencentChangesCount] = '(' + zeroPage + MemePage + ') <a href="' + mw.config.get('wgServer') + '/wiki/' + RecentChanges[a] + '">' + RecentChanges[a] + '</a> (<a href="' + mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + RecentChanges[a] + '&action=history">hist</a>)';
                        SuiviRC_RencentChangesCount++
                  }
                  MemePage = 1;
            }
      }
      var List = document.getElementById('SuiviRC_Div');
      while (List.firstChild){  List.removeChild(List.firstChild); }
      List.innerHTML += '<ul>';
      SuiviRC_RencentChanges = SuiviRC_RencentChanges.sort();
      var MaxLength = (SuiviRC_RencentChanges.length-1);
      for(a=MaxLength;a>0;a--){
            if(SuiviRC_RencentChanges[a]!=false){
                  List.innerHTML += '<li>' + SuiviRC_RencentChanges[a] + '</li>';
            }
      }
      List.innerHTML += '</ul>';
      setTimeout("SuiviRC_getRC()",100*1000);
}