Utilisateur:Darkoneko/exemples/addStopInWatchlist.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./*
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)
}