User:Arwel Parry/monobook.js

/* turn off shortcut keys */

ta = false;

/* add edit tabs at bottom of the screen as well as the top */

function morelinks() {

var tabs = document.getElementById('p-cactions').cloneNode(true);

// don't use the same ids twice- replace the p-cactions id and prepend 'mytabs-' to the li's

tabs.id = 'mytabs';

// needs this to be set from js, it ignores the css width for some reason

tabs.style.width = '100%';

var listitems = tabs.getElementsByTagName('LI');

for (i=0;i

if(listitems[i].id) listitems[i].id = 'mytabs-' + listitems[i].id;

}

// drop them at the bottom of the content area

document.getElementById('column-content').appendChild(tabs);

}

if (window.addEventListener) window.addEventListener("load",morelinks,false);

else if (window.attachEvent) window.attachEvent("onload",morelinks);

// 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()

    {

    // focus on Reason field

    document.getElementsByName('wpBlockReason')[0].focus();

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

    }

    // Opens the block log in the current window, and Special:Blockip in a popup.

    // Width, height, top, and left are chosen for a 1600x1200 display.

    //function blockpage_and_log(target)

    //{

    // window.open('Special_Blockip.html?foo=blarg&faketarget=' + target, 'Block', 'width=1600,height=600,top=600,left=0');

    // document.location.href = 'http://en.wikipedia.org/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + target;

    //}

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

    // To open the block page and block log simultaneously, replace the above line with:

    // tabs.appendChild(addlilink('javascript:blockpage_and_log("' + editlk + '")', 'Block'));

    // and uncomment the blockpage_and_log() function above.

    // add "blocklog" tab

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

    }

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

    }

    if (window.addEventListener)

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

    else if (window.attachEvent)

    window.attachEvent("onload", do_onload);