function addlink(name, url) {
var na = document.createElement('a');
na.setAttribute('href', '/wiki/' + url);
var txt = document.createTextNode(name);
na.appendChild(txt);
var nli = document.createElement('li');
nli.setAttribute('class', 'p-newlinks');
nli.appendChild(na);
return nli;
}
// Returns <li><a href="url">name</a></li>
function addlilink(url, name)
{
var na = document.createElement('a');
na.setAttribute('href', url);
var txt = document.createTextNode(name);
na.appendChild(txt);
var li = document.createElement('li');
li.appendChild(na);
return li;
}
// Adds a "blocklog" tab and fills in the username field on Special:Blockip, if a "&faketarget=username" is present.
function do_blockip_stuff()
{
// Look for a &faketarget= for the username/ip
var l = location.search.substring(1).split('&');
var target = '';
for (var i = 0; i < l.length; ++i)
{
var n = l[i].indexOf('=');
if (l[i].substring(0, n) == 'faketarget')
{
target = l[i].substring(n + 1);
break;
}
}
if (target == '')
return;
// put account name in "IP Address/username" field
var addr = document.getElementsByName('wpBlockAddress')[0];
addr.value = unescape(target);
// add "blocklog" tab
var c1 = document.getElementById('column-one');
var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];
tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + target, 'Block log'));
}
// Adds "block" and "blocklog" tabs to User: and User talk: pages.
function add_block_tab()
{
var c1 = document.getElementById('column-one');
var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];
// use the "edit this page" tab to get already-tidied url
var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
// cut everything up to "title=" from the start and everything past "&action=edit" from the end
editlk = editlk.substring(editlk.indexOf('title=') + 6, editlk.lastIndexOf('&action=edit'));
editlk = editlk.substring(editlk.indexOf(':') + 1);
var slloc = editlk.indexOf('/');
if (slloc > 0)
editlk = editlk.substring(0, slloc);
// add "block" tab
tabs.appendChild(addlilink('/w/index.php?title=Special%3ABlockip&faketarget=' + editlk, 'Block this user'));
// add "blocklog" tab
tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + editlk, 'Block log'));
}
function morelinks() {
var ndivportlet = document.createElement('div');
var ndivpbody = document.createElement('div');
var colone = document.getElementById('column-one');
ndivportlet.setAttribute('class', 'portlet');
ndivportlet.setAttribute('id', 'p-newlinks');
ndivpbody.setAttribute('class', 'pBody');
var nul = document.createElement('ul');
nul.setAttribute('id', 'p-newlinks');
nul.appendChild(addlink('VIP', 'WP:VIP'));
nul.appendChild(addlink('RFC', 'WP:RFC'));
nul.appendChild(addlink('RFM', 'WP:RFM'));
nul.appendChild(addlink('RFAr', 'WP:RFAr'));
nul.appendChild(addlink('MoS', 'WP:MOS'));
nul.appendChild(addlink('RFA', 'WP:RFA'));
var title=document.createElement('h5');
title.appendChild(document.createTextNode('Shortcuts'));
ndivportlet.appendChild(title);
ndivpbody.appendChild(nul);
ndivportlet.appendChild(ndivpbody);
colone.appendChild(ndivportlet);
}
function do_onload() {
if (document.title.indexOf('User:') == 0
|| document.title.indexOf('User talk:') == 0)
add_block_tab();
else if (document.title.indexOf('Block user') == 0) // could stand to be more robust
do_blockip_stuff();
morelinks();
document.getElementById('toolbar').innerHTML = '';
}
if (window.addEventListener)
window.addEventListener("load", do_onload, false);
else if (window.attachEvent)
window.attachEvent("onload", do_onload);