Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
// [[User:Quarl/directredirect.js]] - automatically fix double redirects// Annotates Special:Whatlinkshere pages with [fix] and [fix all] buttons// that asynchronously change the target to a direct redirect.// quarl 2006-01-31 initial version// requires: wikipage.js, wikiedit.js, util.js//<pre><nowiki>directredirect=newObject();directredirect.annotatePage=function(){varcontentDiv=document.getElementById('bodyContent');varlinks=contentDiv.getElementsByTagName('a');directredirect.wpTarget=null;varredirects=directredirect.redirects=[];for(variinlinks){varlink=links[i];if(!link.href)continue;if(!link.href.match(/redirect=no/))continue;varwp=newWikiPage(link.href);if(!directredirect.wpTarget){// first "redirect=no" link, this is the targetdirectredirect.wpTarget=wp;}else{// redirect page; is it a double (or worse) redirect?if(link.parentNode.parentNode.parentNode==contentDiv){// if the parent is contentDiv, then it's a first-level// redirect.}else{// double redirect; add buttonvarurl="javascript:directredirect.fix("+string_quote_escape(wp.page)+")";varbutton=document.createElement('span');button.innerHTML=' [<a href="'+url+'"><b>fix</b></a>]';add_after(link.nextSibling,button);varo={wp:wp,link:link,button:button};redirects[wp.page]=o;redirects.push(o);}}}if(redirects.length){varp=contentDiv.getElementsByTagName('p')[0];varbutton=document.createElement('blockquote');button.innerHTML='There are '+redirects.length+' indirect redirects. [<a href="javascript:directredirect.fixall()">fix all</a>]';add_before(p,button);}}directredirect.fix=function(pagename){directredirect.fix0(directredirect.redirects[pagename]);}directredirect.fixall=function(){for(variindirectredirect.redirects){directredirect.fix0(directredirect.redirects[i]);}}directredirect.fix0=function(redirect){if(!redirect){alert("## internal error 8e747379-406c-4bcf-b85f-770c855d9db1");return;}redirect.button.innerHTML=' [<b>fixing</b>: downloading...]';redirect.wp.getEditorAsync(directredirect.edit,redirect);}directredirect.edit=function(editor,redirect){redirect.button.innerHTML=' [<b>fixing</b>: submitting...]';varpagename=directredirect.wpTarget.page;if(!pagename){alert("## internal error 4cf6e5b6-5ed4-4d97-98d3-6288eb8e4f39");return;}varredir='#REDIRECT [['+pagename+']]';editor.wpTextbox1=redir;editor.wpSummary='Direct redirect '+redir;editor.wpMinoredit=true;editor.submitAsync(null,directredirect.editCompleted,redirect);}directredirect.editCompleted=function(req,redirect){if(req.status!=200){alert("Error submitting new redirect content!");return;}redirect.button.innerHTML=' [<b>fixed</b>]';}directredirect.load=function(){if(wikiPage.page!='Special:Whatlinkshere')return;directredirect.annotatePage();}$(directredirect.load);//</nowiki></pre>