Jump to content

User:Veganfood/relatedarticles.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
function JSONP(url)
{
    this.url = url; 
    this.headTag = document.getElementsByTagName("head").item(0);
    this.scriptId = 'JscriptId' + JSONP.scriptCounter++;
}
 
JSONP.scriptCounter = 1;
 
JSONP.prototype.buildScriptTag = function ()
{
    this.script = document.createElement("script");
    this.script.setAttribute("type", "text/javascript");
    this.script.setAttribute("charset", "utf-8");
    this.script.setAttribute("src", this.url);
    this.script.setAttribute("id", this.scriptId);
}
 
JSONP.prototype.removeScriptTag = function ()
{
    this.headTag.removeChild(this.script);  
}
 
JSONP.prototype.addScriptTag = function ()
{
    this.headTag.appendChild(this.script);
}
 
var RelatedArticles =
{
    titles: null
}
 
RelatedArticles.fetch = function()
{
    if(wgPageName.indexOf(":") >= 0 || wgPageName == "Main_Page")
    {
        return;
    }
 
    var url = "http://pedia.directededge.com/api.fcgi" +
   	      "?format=json&jsonp=RelatedArticles.callback&topic=" + escape(wgPageName);
 
    var request = new JSONP(url);
 
    request.buildScriptTag();
    request.addScriptTag();
}
 
RelatedArticles.callback = function(titles)
{
    RelatedArticles.titles = titles;
 
    if(window.addEventListener)
    {
	window.addEventListener("load", RelatedArticles.insert, false);
    }
    else if(window.attachEvent)
    {
	window.attachEvent("onload", RelatedArticles.insert);
    }
    else
    {
	throw "No event to attach to.";
    }
}
 
RelatedArticles.insert = function()
{
    var column = document.getElementById("column-one");
    var search = document.getElementById("p-search");
 
    if(!column || !search)
    {
	throw "Could not find column and search elements.";
    }
 
    var related = document.createElement("div");
    related.setAttribute("class", "portlet");
    column.insertBefore(related, search);
 
    var label = document.createElement("h5");
    label.appendChild(document.createTextNode("related articles"));
    related.appendChild(label);
 
    var pBody = document.createElement("div");
    pBody.setAttribute("class", "pBody");
    related.appendChild(pBody);
 
    var list = document.createElement("ul");
    pBody.appendChild(list);
 
    var prefix = "http://en.wikipedia.org/wiki/";
 
    for(var i = 0; i < RelatedArticles.titles.length; i++)
    {
	var li = document.createElement("li");
	list.appendChild(li);
 
	var link = document.createElement("a");
	li.appendChild(link);
 
	link.setAttribute("href", prefix + escape(RelatedArticles.titles[i]));
	link.appendChild(document.createTextNode(RelatedArticles.titles[i]));
    }
}
 
RelatedArticles.fetch();