Utilisateur:Darkoneko/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) ;
Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.//Ajoute un "stop" sur special:watchlist pour enlever facilement des pages de son suivi
function add_stop_in_watchlist() {
var allDays = document.getElementsByTagName("ul");
for (var a=0, len = allDays.length; a < len; a++) {
//pour ne pas choper les autres "<ul>" de la page. On veux juste ceux des jours de la watchlist
if (allDays[a].getAttribute("class") != "special") continue;
var artList = allDays[a].getElementsByTagName("li");
for (var b=0, len2 = artList.length ; b < len2; b++) {
var aTag = artList[b].getElementsByTagName("a");
var articleName = aTag[0].getAttribute("title");
if( articleName === null ) {
continue; // ligne wikidata. Reste à trouver une méthode alternative pour récup le titre
} else {
if( articleName.indexOf("Spécial:") != -1) continue; //pas sur les liens 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);
}
}
}
function remove_page_from_watchlist(p_this, page_name) {
var req = {
action: 'watch',
format: 'json',
title: page_name,
unwatch: '',
token: mw.user.tokens.get('watchToken')
};
$.ajax({
type:'POST', dataType: 'json',
url: mw.util.wikiScript( 'api' ),
data: req,
timeout: 5000,
success: function(resp){
if( resp.error ) alert(resp.error.info);
else if( !resp.watch ) alert('empty response');
else if( typeof resp.watch.unwatched == 'string') p_this.parentNode.style.setProperty("text-decoration", "line-through", ''); //on barre la ligne qui n'est plus suivie (plus pratique si misclick)
else alert('unrecognized response');
}
} );
}
if( mw.config.get('wgNamespaceNumber') == -1 && mw.config.get('wgCanonicalSpecialPageName') == "Watchlist" ) {
mw.loader.using( 'mediawiki.util', function() {
$( add_stop_in_watchlist );
} );
}