Aller au contenu

Utilisateur:Darkoneko/exemples/addStopInWatchlist.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.
/* 
Cette page est une version "prète à l'emploi" d'une version améliorée de addStopInWatchlist, qui
 * ajoute dans chaque ligne de la liste de suivi un lien "stop", à droite de (hist)
 * lors d'un clic sur (stop), la page est retirée de la liste de suivi, et la ligne est barrée sur la page (pour indiquer que l'action a bien été effectuée)
Darkoneko, 22avril2010
*/



//Ajoute un "stop" sur special:watchlist pour enlever facilement des pages de son suivi
function addStopInWatchlist() {
  var allDays = document.getElementsByTagName("ul")

  for (i=0; i<allDays.length; i++) {
   if (allDays[i].getAttribute("class") != "special") continue //pour ne pas choper les autres "<ul>" de la page. On veux juste ceux des jours de la watchlist

    var artList = allDays[i].getElementsByTagName("li")
    for (j=0; j<artList.length; j++) {
    	var aTag = artList[j].getElementsByTagName("a")
	var articleName = aTag[0].getAttribute("title")
        if( articleName.indexOf("Spécial:") != -1) continue //pas de (stop) sur les lignes de log de renommage/suppression/etc.

	if (aTag[0].childNodes[0].data == "diff") { // séparation des cas (nouvel article, ou déjà existant)
	  var lastLink = $(aTag[1]);
	} else {
	  var lastLink = $(aTag[0]);
	}
    var stopLink = $('<a href="#">stop</a>')
      .click({articleName: articleName}, function (e) {
        e.preventDefault();
        remove_page_from_watchlist(this, e.data.articleName);
      });
    lastLink.after(") (", stopLink);
    }
  }
}
//fonction appelée lorsque l'on clique sur le "stop"
function remove_page_from_watchlist(p_this, page_name) {
   var http_request = new XMLHttpRequest()
   var address = "/w/api.php?action=watch&title=" + encodeURIComponent( page_name ) + "&unwatch"
   http_request.open('POST', address , false)
   http_request.send(null)

   p_this.parentNode.style.setProperty("text-decoration", "line-through", '') //on barre la ligne qui n'est plus suivie
}

 
if( mw.config.get('wgCanonicalSpecialPageName') == "Watchlist") {
   addOnloadHook(addStopInWatchlist)
}