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]*( )?[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(" ",""));
}
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>