User:Austin J. Che/monobook.js

From OpenWetWare
Jump to navigationJump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* <nowiki> */

/* Based on http://commons.wikimedia.org/w/index.php?title=User:Alphax/monobook.js&action=edit */

/**
 * Initialises function loading on page load
 */

if (window.addEventListener) window.addEventListener("load",myLoadFuncs,false);
else if (window.attachEvent) window.attachEvent("onload",myLoadFuncs);
else
{
    window.oldonload = window.onload;
    window.onload = function()
    {
        window.oldonload();
        myLoadFuncs();
    }
}

// To add a button to the edit toolbar, we rely on the fact that the function addInfobox is called
// as the last thing after all the buttons
// we override that function to add our own buttons
var oldAddInfobox = null;

/**
 * Loads functions
 */

function myLoadFuncs()
{
    addEditSection0();
    changeTopLinks();
    changeSidebar()

    oldAddInfobox = addInfobox; 
}

function addInfobox(infoText, text_alert)
{
    addButton('/skins/common/images/button_sig.png','Comment format',"*'''~~~~''': ",'','');
    addButton('/skins/common/images/button_headline.png','Test css',"<html><style type='text/css'>\n</style></html>",'','');
    if (oldAddInfobox) oldAddInfobox();
}

/**
 * Adds tabs
 */

function addlilink(tabs, url, name, id)
{
    var na = document.createElement('a');
    na.href = url;
    na.appendChild(document.createTextNode(name));
    var li = document.createElement('li');
    li.id = id;
    li.appendChild(na);
    tabs.appendChild(li);
    return li;
}


/**
 * Adds an "edit section 0" tab
 */

function addEditSection0()
{
    ta['ca-edit-0'] = ['', 'Edit the zeroth section of this page'];
    if(!document.getElementById) return;
    var x = document.getElementById('ca-edit');
    if(!x) return;
    var y = document.createElement('LI');
    y.id = 'ca-edit-0';
    if(x.className == 'selected'){
      if(/&action=edit&section=0$/.test(window.location.href)){
        x.className = 'istalk';
        y.className = 'selected';
      } else {
        x.className = 'selected istalk';
      }
    } else if(x.className == 'selected istalk'){
      if(/&action=edit&section=0$/.test(window.location.href)){
        x.className = 'istalk';
        y.className = 'selected istalk';
      } else {
        y.className = 'istalk';
      }
    } else {
      y.className = x.className;
      x.className = 'istalk';
    }
    var z = document.createElement('A');
    if(x.children){
        z.href = x.children[0].href + '&section=0';
        z.appendChild(document.createTextNode('0'));
        y.appendChild(z);
        document.getElementById('p-cactions').children[1].insertBefore(y,x.nextSibling);
    }else{
        z.href = x.childNodes[0].href + '&section=0';
        z.appendChild(document.createTextNode('0'));
        y.appendChild(z);
        document.getElementById('p-cactions').childNodes[3].insertBefore(y,x.nextSibling);
    }
}

/**
 * Changes the top links
 */

function changeTopLinks()
{
    if(!document.getElementById) return;
    // remove the "my" bits
    document.getElementById('pt-mytalk').firstChild.innerHTML = 'talk';
    document.getElementById('pt-watchlist').firstChild.innerHTML = 'watchlist';
    document.getElementById('pt-mycontris').firstChild.innerHTML = 'contributions';

    var toplinks = document.getElementById('p-personal').getElementsByTagName('ul')[0];

    addlilink(toplinks, '/index.php?title=User:Austin/monobook.js&action=edit', 'monobook.js', '');

    // add a clock
    addlilink(toplinks, '', '', 'utcdate');
    showtime();
}

/**
 * Makes the clock work
 */

function showtime()
{
    var timerID;
    var now = new Date();
    // var timeValue = now.toUTCString().replace(/GMT/, "UTC");
    var timeValue = now;
    document.getElementById('utcdate').firstChild.innerHTML = timeValue;
    timerID = setTimeout('showtime()', 100);
}

function changeSidebar()
{
    var tb = document.getElementById('p-navigation').getElementsByTagName('ul')[0];
/*
    var rc = document.getElementById('n-recentchanges');
    rc.firstChild.href='/wiki/Special:Recentchanges/Knight,Endy,Synthetic Biology,MIT,OpenWetWare,Austin,w=1,n=OpenWetWare,n=OpenWetWare Talk,n=MediaWiki,n=MediaWiki Talk,n=0^nc=:';

    addlilink(tb, '/wiki/Special:Recentchanges/u=Austin', 'My recent edits', '');
*/
    var tb = document.getElementById('p-resources').getElementsByTagName('ul')[0];
    addlilink(tb, '/index.php?title=MediaWiki:Monobook.css&action=edit', 'Monobook.css', '');
    addlilink(tb, '/wiki/Special:Userlogin', 'Create account', '');
    addlilink(tb, '/index.php?title=Sandbox&action=edit', 'Sandbox', '');
    addlilink(tb, '/wiki/Endy', 'Endy lab', '');
    addlilink(tb, '/wiki/Knight', 'Knight lab', '');
    addlilink(tb, '/wiki/Synthetic_Biology', 'Synthetic Biology', '');
    addlilink(tb, '/wiki/IGEM:MIT/2006', 'MIT iGEM', '');
}

/* </nowiki> */