Utilisateur:Karima Rafes/Gadget-EvalContributions.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) ;

Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/*  (version 1.0 du 4 août 2012) par Karima Rafes et inspiré par MediaWiki:Gadget-Evaluation.js
* {{Projet:JavaScript}}
* 
*/
//<source lang=javascript>//<pre><nowiki>
if(mw.config.get('wgNamespaceNumber')==-1) addOnloadHook(contribution_addEvalTab)

function contribution_addEvalTab()
{
   try {if(alwaysEvalContributions){contribution_launchEval()}}
   catch(e){ }
}
  
function contribution_launchEval()
{
   var div = document.getElementById('bodyContent') // Monobook et affiliés, Vector
   if(!div) div = document.getElementById('mw_contentholder'); // Moderne
   if(!div) div = document.getElementById('article'); // Bleu de Cologne, Standard, Nostalgia
   if(!div) return;
   var dummy = new Date().getTime()
 
   if (document.URL.match(/&printable/))
   {
       /* version imprimable */
       return;
   } 

   _ContributionsDiv = document.getElementById('EvalRecompenseDiv');

   if(!_ContributionsDiv )
   {
      _ContributionsDiv= document.createElement('div');
      _ContributionsDiv.id = "EvalRecompenseDiv";
      _ContributionsDiv.align="center";
      div.parentNode.insertBefore(_ContributionsDiv, div);
   }

 _ContributionsList = document.getElementById('mw-content-text');
 if(!_ContributionsList )
   return ;

textHtml = _ContributionsList.outerHTML;
   nb = contribution_Somme(textHtml) / 1000;
   _ContributionsDiv.innerHTML = "Somme des contributions " +  
         nb.toString().replace('.', ',') + " k" +
          " Durée : " + contribution_Durate(textHtml) + " h"+
          " Nb de jours : " + contribution_nbDay(textHtml) +
          " Nb des contributions : article: " + contribution_nb(textHtml) +
          " annexe: " + contribution_nbExtra(textHtml) + 
"(dont fichier : " +contribution_nbFichier(textHtml) + " )" ;
 
}

function contribution_Somme(text){
     var re = />\([+-]([0-9]*(&nbsp;)?[0-9]+)\).*href="((\/index.php\?title=|\/wiki\/)(|Mod%C3%A8le:|Cat%C3%A9gorie:|Fichier:)[^":]+)".*<\/li>/g;
     var nb=0;
     while (match = re.exec(text)) {
        nb+= parseInt(match[1].replace("&nbsp;",""));
     }
     return nb;
}

function contribution_Durate(text){
//var textLog = "";
var re = /<li.*([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2}).*<\/li>/g;
var nb=0;
var lastDate = null;
var currentDate = null;
var milliseconds = 0;
var interval = 0;
  while (match = re.exec(text)) {
   
     currentDate = new Date(match[1],parseInt(match[2])-1,match[3],match[4],match[5],match[6],0);
     
     if(lastDate != null)
        interval =  lastDate - currentDate;
     else
        interval = 0;
               
      if(interval >  (15*60*1000) || interval <= 0 ){
          milliseconds += 5*60*1000;
     }else{
          milliseconds += interval;     
     }
           
     //textLog+= "("+match[1]+"/"+match[2]+"/"+match[3]+" "+match[4]+":"+match[5]+":"+match[6]+"  ["+ (interval/1000/60) +"] ["+ (milliseconds/1000/60/60) +"])";
                        
     lastDate = currentDate;  
  }
 //console.log(textLog);
 return Math.round(milliseconds/1000/60/60);
}

function contribution_nb(text){
  var re = /<li.*href="((\/index.php\?title=|\/wiki\/)[^":]+)".*<\/li>/g;//"(\/index.php\?title=|\/wiki\/)[^:]+"
  var nbContribution=0;
  while (match = re.exec(text)) {
     //tab[nb][1] = match[1];
    nbContribution++; 
  }
  return nbContribution;
}

function contribution_nbExtra(text){
    var re = /<li.*href="((\/index.php\?title=|\/wiki\/)(Mod%C3%A8le:|Cat%C3%A9gorie:|Fichier:)[^":]+)".*<\/li>/g;
  var nbContribution=0;
  while (match = re.exec(text)) {
     //tab[nb][1] = match[1];
    nbContribution++; 
  }
  return nbContribution;
}



function contribution_nbFichier(text){
    var re = /<li.*href="((\/index.php\?title=|\/wiki\/)(Fichier:)[^":]+)".*<\/li>/g;
  var nbContribution=0;
  while (match = re.exec(text)) {
     //tab[nb][1] = match[1];
    nbContribution++; 
  }
  return nbContribution;
}

function contribution_nbDay(text){
  var nbDay=0;
  var lastDay=null;
  var re = /<li.*>([0-9]{4})-([0-9]{2})-([0-9]{2})T[0-9]{2}:[0-9]{2}:[0-9]{2}<.*.*<\/li>/g;
  var nb=0;
    while (match = re.exec(text)) {
   
       currentDate = new Date(match[1],parseInt(match[2])-1,match[3]);
     
       if(lastDay == null || (lastDay - currentDate) != 0)
         nbDay++;
           
       lastDay = currentDate;  
    }
 
   return nbDay;
}

//</nowiki></pre></source>