User:Splarka/fetchredirects.js

/* Fetch redirects to a page, version [0.0.3] Originally from: http://en.wikipedia.org/wiki/User:Splarka/fetchredirects.js

var frBaseURL = wgScriptPath + '/api.php?format=json&maxage=3600&smaxage=3600&rawcontinue=&callback=fetchRedirectsCB&action=query&list=backlinks&blfilterredir=redirects&bllimit=500'; if(wgNamespaceNumber > -1) addOnloadHook(function { mw.util.addPortletLink('p-tb','javascript:fetchRedirects;','Get redirects','t-getredirects','Get a list of pages redirecting to this one'); })

function fetchRedirects { var bar = document.getElementById('contentSub') || document.getElementById('topbar'); if(!bar) return; var div = document.createElement('div'); div.setAttribute('id','fr-out'); bar.appendChild(div); injectSpinner(div,'fr'); var url = frBaseURL + '&bltitle=' + encodeURIComponent(wgTitle); mw.loader.load(url); appendCSS('#t-getredirects {display:none;} #fr-out {border:1px solid #777777;padding:.5em;}'); }

function fetchRedirectsCB(obj) { var fr = document.getElementById('fr-out'); if(!obj['query'] || !obj['query']['backlinks']) { fr.appendChild(document.createTextNode('Api error')); if(obj['error']) fr.appendChild(document.createTextNode(' - ' + obj['error']['code'] + ' - ' + obj['error']['info'])); removeSpinner('fr'); return; } var bl = obj['query']['backlinks']; if(bl.length == 0) { fr.appendChild(document.createTextNode('There are no redirects to this page.')); removeSpinner('fr'); return; } fr.appendChild(document.createTextNode('Found redirects:')); fr.appendChild(document.createElement('br')); for(var i=0;i<bl.length;i++) { var title = encodeURIComponent(bl[i]['title']); fr.appendChild(document.createTextNode('('));   addLinkChild(fr,wgScript + '?title=' + title + '&action=history','hist');    fr.appendChild(document.createTextNode(' | '));    addLinkChild(fr,wgScript + '?title=' + title + '&action=edit','edit');    fr.appendChild(document.createTextNode(') ')); addLinkChild(fr,wgScript + '?title=' + title + '&redirect=no',bl[i]['title'],false,'fr-result','Redirect to ' + wgTitle); fr.appendChild(document.createElement('br')); } if(obj['query-continue']) { var url = frBaseURL + '&bltitle=' + encodeURIComponent(wgTitle) + '&blcontinue=' + obj['query-continue']['backlinks']['blcontinue']; mw.loader.load(url); } else { removeSpinner('fr'); } }

function addLinkChild(obj,href,text,id,classes,title) { if(!obj || !href || !text) return false; var a = document.createElement('a'); a.setAttribute('href',href); a.appendChild(document.createTextNode(text)); if(id) a.setAttribute('id',id); if(classes) a.setAttribute('class',classes); if(title) a.setAttribute('title',title); obj.appendChild(a); return a; }