/* 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;
}