Utilisateur:Delhovlyn/verifHomon.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.loader.using('mediawiki.util', function () {

/* À faire :

  - utiliser classes CSS, pour permettre l'effaçage
  - permettre l'effaçage
  - 


*/

addOnloadHook(function()
  {
  mw.util.addPortletLink('p-tb', 'javascript:verifierHomonymies();', 'Vérif. homonymies', 't-homon', "Vérifier les liens de cette page menant vers des pages d'homonymie");
  });

function verifierHomonymies()
  {
  var Aj = new XMLHttpRequest();

  var allLinks = document.getElementById('bodyContent').getElementsByTagName('a');
  var goodLinks = [];

  var compteurHomon = 0;

  for (i=0; i<allLinks.length; i++)
    {
    if (!(!allLinks[i].href || $(allLinks[i].parentNode).hasClass('editsection') || $(allLinks[i].parentNode).hasClass('cachelinks') || $(allLinks[i]).hasClass('noprint') || $(allLinks[i]).hasClass('external') || allLinks[i].href.indexOf('javascript:') == 0 || allLinks[i].className == 'new' || allLinks[i].className == 'image' || allLinks[i].parentNode.parentNode.id == 'mw-normal-catlinks' || allLinks[i].parentNode.id == 'mw-normal-catlinks' || allLinks[i].href == mw.config.get('wgServer')+'/wiki/'+encodeURI(mw.config.get('wgPageName')) || allLinks[i].href.indexOf(mw.config.get('wgServer')+'/wiki/'+encodeURI(mw.config.get('wgPageName'))+'#') == 0 || allLinks[i].parentNode.className == 'subpages' || allLinks[i].parentNode.id == 'contentSub' ))
      {
      goodLinks.push(allLinks[i]);
      }
    }
  if (!confirm(goodLinks.length + " liens vont être analysés."))
    return;

  for (i=0; i<goodLinks.length; i++)
    {
    tempTitle = goodLinks[i].title;
    
    Aj.open('GET', mw.config.get('wgServer') + '/w/api.php?action=query&prop=templates&redirects&format=xml&titles=' + encodeURI(tempTitle), false);
    Aj.send(null);
    if (Aj.readyState == 4 && Aj.status == 200)
      {
      goodLinks[i].style.backgroundColor = '#C8FFC8';
      var templates = Aj.responseXML.documentElement.getElementsByTagName('tl');
      
      for (j=0; j<templates.length; j++)
        {
        if (templates[j].getAttribute('title') == "Modèle:Homonymie" || templates[j].getAttribute('title') == "Modèle:Bandeau standard pour page d'homonymie")
          {
          //alert("Trouvé un lien vers Homonymie : " + tempTitle);
          goodLinks[i].style.backgroundColor = '#FFCCCC';
          compteurHomon++;
          break;
          }
        }
      }
    }

  // Message de fin.
  var msg = "";
  if (compteurHomon == 0)
    msg = "Aucun lien vers une page d’homonymie n’a été trouvé.";
  else if (compteurHomon == 1)
    msg = "Un lien vers une page d’homonymie a été trouvé.";
  else
    msg = compteurHomon + " liens vers des pages d’homonymie ont été trouvés.";
  alert(msg);

  }

});