User:Dl2000/Unwatcher.js

// ADD UNWATCH LINKS: // addOnloadHook(function { -- apparently deprecated --

$(function {

if (!wgCanonicalSpecialPageName) return;

if ((wgCanonicalSpecialPageName != "Watchlist") &&       (wgCanonicalSpecialPageName != "Recentchangeslinked")) {       return; }

if (!document.forms[0]) return;

// if (!document.forms[0].namespace) return; -- namespace no longer defined within a watchlist page

//var query_prefix = "title="+encodeURIComponent(mw.config.get('wgPageName'))+"&action=submit&remove=1&id[]="; var query_prefix = "action=unwatch&title="; // get list of all links in content: var links = document.getElementById('content').getElementsByTagName('a'); // make a static copy of the nodelist and lose the original for speed // while we're at it, prune the uninteresting links from the list var linksCopy = new Array ; for (var i = 0; i < links.length; i++) { if (/[?&]action=history([&#]|$)/.test(links[i].href)) linksCopy.push(links[i]); }   links = linksCopy; for (var i = 0; i < links.length; i++) { // create unwatch link and append it after history link var unwatch = document.createElement('a'); unwatch.href = wgScriptPath + "/index.php?" + query_prefix + encodeURIComponent(links[i].title); unwatch.title = "Unwatch "+links[i].title; unwatch.appendChild(document.createTextNode("unwatch")); links[i].parentNode.insertBefore(unwatch, links[i].nextSibling); // insert a delimiter between the two links var delim = links[i].previousSibling; delimText = (delim.nodeType == 3 ? delim.nodeValue : ""); // kluge to handle case where "diff" is unlinked delim = document.createTextNode(delimText.replace(/^.*diff/, "")); links[i].parentNode.insertBefore(delim, unwatch); } }); //