Utilisateur:Salsero35/editcount.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.
/*
<nowiki>
Basé sur [[:en:User:CharlotteWebb/editcount.js]]
*/
 
function round_2dec(n){
  var iP = parseInt(n);
  var fP = Math.round((n - iP) * 100);
  if (fP >= 100){
    iP++;
    fP = fP - 100;
  }
  var sfP = String (fP);
  if (fP < 10) sfP = "0" + sfP;
  return String(iP) + "," + sfP;
}
 
addOnloadHook(function (){
  a = '<a href="' + mw.config.get('wgScriptPath') + '/index.php?title=' + mw.config.get('wgPageName').split("/")[0] + '&amp;action=editcount">Compteur d’éditions</a>';
  if((mw.config.get('wgNamespaceNumber') == 2 || mw.config.get('wgNamespaceNumber') == 3)) {
    document.getElementById("p-cactions").getElementsByTagName("ul")[0].innerHTML +=
    '\n<li id="ca-editcount">' + a + '</li>';
    tc = document.getElementById("t-contributions");
    if(tc) tc.innerHTML += '</li>\n<li id="ca-editcount">' + a;
    }
  if(mw.config.get('wgCanonicalSpecialPageName') == "Contributions"){
    cs = document.getElementById("contentSub");
    cs.innerHTML = cs.innerHTML.replace(/(\))\s*$/, " | " + a + ")");
    }
  if(mw.config.get('wgAction') != "editcount")  return;
  document.getElementsByTagName("h1")[0].innerHTML = document.title =
    "Compteur d’éditions de Utilisateur:" + mw.config.get('wgTitle');
  (bc = document.getElementById("bodyContent")).innerHTML = "(chargement...)";
  var d = new Object, m = new Object, ns = new Object, id_ns = new Array(), id_art = new Array(), art = new Array(), art_ns = new Array(), nb_art_ns = new Array(), nb_new_ns = new Array(), nb_minor_ns = new Array(), nb_top_ns = new Array(), nb_comment_ns = new Array(), id_a, id_n, ts_first; var nb_art = 0; var nb_new = 0; var nb_minor = 0; var nb_top = 0; var nb_comment = 0; d.ec = 0; d.o = null;
  d.q = 'action=query&list=usercontribs&ucprop=ids|title|timestamp|comment|flags&uclimit=500&ucuser=' + mw.config.get('wgTitle');
  var scr = function(q, h){
    x = new XMLHttpRequest(); x.onreadystatechange = function() {
      if (x.readyState == 4) h(new DOMParser().parseFromString(x.responseText,"text/xml"));
      }
    x.open("GET", mw.config.get('wgServer') + mw.config.get('wgScriptPath') + "/api.php?" + q + "&format=xml", true); x.send("");
    }
  var nsh = function(nf){
    n = nf.getElementsByTagName("ns");
    for(i = 0; i < n.length; i++){
	  m[id = n[i].getAttribute("id")] = 0;
//      ns[id] = n[i].getAttribute("canonical");
      ns[id] = n[i].textContent;
	  id_ns[id] = "ns_" + id;
	  nb_art_ns[id] = 0;
	  art_ns[id_ns[id]] = new Array();
	  nb_new_ns[id] = 0;
	  nb_minor_ns[id] = 0;
	  nb_top_ns[id] = 0;
	  nb_comment_ns[id] = 0;
      }
    ns["0"] = "[main]";
    var ech = function(ef) {
      r = ef.getElementsByTagName("item");
      for(i = 0; i < r.length; i++){
	    id_n = r[i].getAttribute("ns");
		m[id_n]++;
		ts_first = r[i].getAttribute("timestamp");
		id_a = r[i].getAttribute("pageid");
		id_art[id_a] = "art_" + id_a;
		if (art[id_art[id_a]] == null){
		  art[id_art[id_a]] = 0;
		  nb_art++;
		}
		art[id_art[id_a]]++;
		if (art_ns[id_ns[id_n]][id_art[id_a]] == null){
		  art_ns[id_ns[id_n]][id_art[id_a]] = 0;
		  nb_art_ns[id_n]++;
		}
		art_ns[id_ns[id_n]][id_art[id_a]]++;
		if (r[i].getAttribute("new") != undefined){
		  nb_new++;
		  nb_new_ns[id_n]++;
		}
		if (r[i].getAttribute("minor") != undefined){
		  nb_minor++;
		  nb_minor_ns[id_n]++;
		}
		if (r[i].getAttribute("top") != undefined){
		  nb_top++;
		  nb_top_ns[id_n]++;
		}
		if (r[i].getAttribute("comment") != ""){
		  nb_comment++;
		  nb_comment_ns[id_n]++;
		}
	  }
      d.ob = 'Nombre total d’éditions : ' + (d.ec += r.length) + ' <span id="ecstatus">(et comptage en cours...)' +
        '</span><br />\n' +
        'Première édition : ' + ts_first.replace(/[TZ]/g, ' ') + ' (UTC)<br />\n' +
        'Nombre total de pages éditées : ' + nb_art + '<br />\n' +
        'Nombre d’éditions moyen par page : ' + round_2dec(d.ec / nb_art) + '<br />\n' +
        '<table class="wikitable sortable" style="width:100%;">\n' +
        '<tr><th>Espace de nom</th><th>Éditions</th><th>%</th><th>Pages<br />éditées</th><th>Nouvelles<br />pages</th><th>Éditions<br />mineures</th><th>Top</th><th>Éditions<br />commentées</th></tr>\n';
      for(n in m) if (m[n] > 0) d.ob += '<tr style="text-align:right;">' + 
        '<td style="text-align:left;">' + ns[n] + '</td><td>' + m[n] + '</td><td>' +
        round_2dec(100 * (m[n] / d.ec)) +
        '</td><td>' + nb_art_ns[n] + '</td><td>' + nb_new_ns[n] + '</td><td>' + nb_minor_ns[n] + '</td><td>' + nb_top_ns[n] + '</td><td>' + nb_comment_ns[n] + '</td></tr>\n';
      bc.innerHTML = (d.ob += '<tr style="text-align:right;"><td style="text-align:left;"><b>Total</b></td><td><b>' + d.ec + '</b></td><td><b>' + round_2dec(100) + '</b></td><td><b>' + nb_art + '</b></td><td><b>' + nb_new + '</b></td><td><b>' + nb_minor + '</b></td><td><b>' + nb_top + '</b></td><td><b>' + nb_comment + '</b></td></tr>\n</table>');
      np = ef.getElementsByTagName("query-continue");
      if(!np.length) document.getElementById("ecstatus").innerHTML = "<b>(Fait !)</b>";
      else {
        d.o = np[0].childNodes[0].getAttribute("ucstart");
        scr(d.q + (d.o?"&ucstart="+d.o:""), ech);
        }
      }
    scr(d.q + (d.o ? "&ucstart=" + d.o : ""), ech);
    }
  scr("action=query&meta=siteinfo&siprop=namespaces", nsh);
  });
/*
</nowiki>
[[en:User:Salsero35/editcount.js]]
*/