//<pre><nowiki>
function makebutton(lbl, action)
{
var button = document.createElement('input');
button.type = 'button';
button.value = lbl;
button.setAttribute('onClick', action);
return button;
}
function descendent_ul(node, ancestor)
{
return (node.parentNode.tagName == 'LI'
&& (node.parentNode.parentNode == ancestor
|| (node.parentNode.parentNode.tagName == 'UL' && descendent_ul(node.parentNode.parentNode, ancestor))));
}
function fix_double_redirects()
{
var a, i, li, uls = document.getElementsByTagName('UL'), title = escape(document.getElementsByTagName('H1')[0].firstChild.data);
for (i = 1; i < uls.length; ++i)
if (descendent_ul(uls[i], uls[0]))
for (li = uls[i].firstChild; li; li = li.nextSibling)
if (li.tagName == 'LI'
&& (a = li.firstChild).tagName == 'A'
&& a.href.indexOf('&redirect=no') >= 0)
window.open(a.href + '&action=edit&fakeaction=fix_dbl_redir&faketarget=' + title, '_blank');
}
addOnloadHook(function ()
{
if (new String(document.location).indexOf('Special:Whatlinkshere') >= 0)
{
var h = document.getElementsByTagName('H1')[0];
h.parentNode.insertBefore(makebutton('Fix double redirects', 'javascript:fix_double_redirects()'), h.nextSibling);
}
else if (location.search)
{
var action, target, l = location.search.substring(1).split('&');
for (var i = 0; i < l.length; ++i)
{
var eq = l[i].indexOf('=');
var name = l[i].substring(0, eq);
if (name == 'fakeaction')
action = l[i].substring(eq + 1);
else if (name == 'faketarget')
target = unescape(l[i].substring(eq + 1)).replace(/_/g, ' ');
}
else if (action == 'fix_dbl_redir')
{
document.editform.wpTextbox1.value = document.editform.wpTextbox1.value.replace(/\[\[[^\]]+\]\]/, '[[' + target + ']]');
document.editform.wpSummary.value = 'dbl redir';
document.editform.wpMinoredit.checked = true;
document.editform.wpDiff.click(); // insurance
}
}
});
//</nowiki></pre>