Utilisateur:Arkanosis/larticles.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.
/*
***************************************************************************
** larticles - Liste les créations d'article d'un utilisateur
** Compatibilité : frwiki uniquement
** Support : Discussion_utilisateur:Arkanosis
** Licence : domaine public
**
** Installation : ajouter
**  importScript('Utilisateur:Arkanosis/larticles.js');
** dans le monobook.js
**
** Utilisation : visiter la page
**  Utilisateur:Arkanosis/larticles
*/

function larticles()
{
  if (mw.config.get('wgPageName') != 'Utilisateur:Arkanosis/larticles')
    return;

  var username = mw.config.get('wgUserName');

  var match = RegExp('[&?]username=([^&]*)').exec(document.location.href);
  if (match)
    username = decodeURIComponent(match[1]);

  document.getElementById('nom_utilisateur').innerHTML = username;

  var ucstart = '';

  var articles = document.getElementById('creations_articles');
  var modeles = document.getElementById('creations_modeles');
  var categories = document.getElementById('creations_categories');
  var redirections = document.getElementById('creations_redirections');

  var nbArticles = document.getElementById('nombre_articles');
  var nbModeles = document.getElementById('nombre_modeles');
  var nbCategories = document.getElementById('nombre_categories');
  var nbRedirections = document.getElementById('nombre_redirections');

  var request = new XMLHttpRequest();

  for (var loop = 0; loop < 10000; ++loop) // Avoid infinite loops, some browsers are very vulnerable to this (300000 contribs should be enough for most users)
  {
    request.open('GET', mw.config.get('wgServer') + '/w/api.php?action=query&list=usercontribs&ucuser=' + username + '&uclimit=300&ucdir=older&format=json&ucnamespace=0&ucprop=title|flags|size' + ucstart, false);
    request.send('');
    if (request.status != 200)
    {
      document.getElementById('message').innerHTML += 'Impossible d\'obtenir la liste des créations de l\'utilisateur ' + username;
      break;
    }

    var results = JSON.parse(request.responseText);

    for (contribution in results.query.usercontribs)
      if (typeof(results.query.usercontribs[contribution].new) != 'undefined')
      {
        if (results.query.usercontribs[contribution].size > 140) // heuristic: if it's smaller than a twitt, then this must be a redirect ;-)
          articles.innerHTML += '<li>' + results.query.usercontribs[contribution].title + '</li>';
        else
          redirections.innerHTML += '<li>' + results.query.usercontribs[contribution].title + '</li>';
      }

    if (!results['query-continue'])
      break;
    ucstart = results['query-continue'].usercontribs.ucstart;
  }
}

$(larticles);