User:Dbenbenn/monobook.js

function other_wiki_tab(tabs, title)

{

tabs.appendChild(addlilink('http://commons.wikimedia.org/wiki/' + title, 'commons'));

}

// Returns

  • name
  • 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, 'blocklog'));

    }

    // Gets the URL version of the page title.

    function get_tidy_title()

    {

    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'));

    return editlk;

    }

    // Adds "block" and "blocklog" tabs to User: and User talk: pages.

    function add_user_tabs(tabs, title)

    {

    username = title.substring(title.indexOf(':') + 1);

    var slloc = username.indexOf('/');

    if (slloc > 0)

    username = username.substring(0, slloc);

    other_wiki_tab(tabs, title);

    tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&user=' + username, 'log'));

    tabs.appendChild(addlilink('/w/index.php?title=Special%3ABlockip&wpBlockAddress=' + username, 'block'));

    tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&type=block&page=User%3A' + username, 'blocklog'));

    }

    function add_default_tabs(tabs, title)

    {

    other_wiki_tab(tabs, title);

    tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&page=' + title, 'log'));

    }

    function add_image_tabs(tabs, imagetitle)

    {

    other_wiki_tab(tabs, imagetitle);

    tabs.appendChild(addlilink('http://tools.wikimedia.de/~daniel/WikiSense/CheckUsage.php?w=_100000&i=' + imagetitle, 'check-usage'));

    tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&page=' + imagetitle, 'log'));

    imagetitle = imagetitle.substring(6);

    var i = 0;

    while (i < imagetitle.length && imagetitle.substring(i, i+1) >= '0' && imagetitle.substring(i, i+1) <= '9')

    i++;

    imagetitle = imagetitle.substring(i);

    if (i > 0 && imagetitle.substring(0, 3) == 'px-') {

    imagetitle = imagetitle.substring(3);

    tabs.appendChild(addlilink('/wiki/Image:' + imagetitle, 'unthumb'));

    }

    }

    function do_onload()

    {

    var title = get_tidy_title();

    var tabs = document.getElementById('column-one').getElementsByTagName('div')[0].getElementsByTagName('ul')[0];

    if (title.indexOf('Image:') == 0)

    add_image_tabs(tabs, title);

    else if (title.indexOf('User:') == 0

    || title.indexOf('User_talk:') == 0)

    add_user_tabs(tabs, title);

    else if (title.indexOf('Block_user') == 0) // could stand to be more robust

    do_blockip_stuff();

    else

    add_default_tabs(tabs, title);

    }

    if (window.addEventListener)

    window.addEventListener("load", do_onload, false);

    else if (window.attachEvent)

    window.attachEvent("onload", do_onload);