User:JoeyDay/monobook.js
From Homestar Runner Wiki
Note: After saving, you may have to bypass your browser's cache to see the changes.
- Mozilla / Firefox: hold down Shift while clicking Reload, or press Ctrl-Shift-R (Cmd-Shift-R on Apple Mac)
- Safari: press Cmd-Option-E
- IE: hold Ctrl while clicking Refresh, or press Ctrl-F5
- Konqueror: simply click the Reload button, or press F5
- Opera users may need to completely clear their cache in Tools→Preferences.
// Create "my links" sidebar box
function myLinksBox () {
// Create div#p-mylinks
var myLinks = document.createElement('div');
myLinks.id = 'p-mylinks';
myLinks.className = 'portlet';
// Create h5 and append to div#p-mylinks
var h5 = document.createElement('h5');
h5.appendChild(document.createTextNode('My Links'));
myLinks.appendChild(h5);
// Create div.pBody and append to div#p-mylinks
var pBody = document.createElement('div');
pBody.className = 'pBody';
myLinks.appendChild(pBody);
// Create ul and append to div.pBody
var ul = document.createElement('ul');
pBody.appendChild(ul);
// Append div#p-mylinks to sidebar just before external links box
var sidebar = document.getElementById('column-one');
sidebar.insertBefore(myLinks, document.getElementById('p-ext'));
// Populate the actual links
addLink("p-mylinks", "/index.php/Special:BrokenRedirects", "Broken redirects", "n-brokenredirects", "The list of broken redirects.");
addLink("p-mylinks", "/index.php/Special:DoubleRedirects", "Double redirects", "n-doubleredirects", "The list of double redirects.");
addLink("p-mylinks", "/index.php?limit=5000&title=Special%3ARecentchanges&namespace=8", "Interface changes", "n-interfacechanges", "The list of recent interface changes.");
addLink("p-mylinks", "/index.php/Special:Log/move", "Moved pages", "n-movedpages", "The list of recently moved pages.");
addLink("p-mylinks", "/index.php/Special:Log/newusers", "New users", "n-newusers", "The list of new users.");
addLink("p-mylinks", "/index.php/Special:Renameuser", "Rename user", "n-renameuser", "Rename a user.");
addLink("p-mylinks", "/index.php/Special:Userrights", "User rights", "n-userrights", "Modify a user's rights.");
}
// Modify my talk link and add additional user page and talk links for GrapeNuts
function modPersonalMenu() {
var mytalk = document.getElementById('pt-mytalk');
mytalk.firstChild.firstChild.data = 'Talk';
mytalk.insertBefore(document.createTextNode("("), mytalk.firstChild);
mytalk.appendChild(document.createTextNode("·"));
var mycontribs = document.createElement('a');
mycontribs.href = '/index.php/Special:Contributions/JoeyDay';
mycontribs.appendChild(document.createTextNode('Edits'));
mytalk.appendChild(mycontribs);
mytalk.appendChild(document.createTextNode(")"));
addLink("p-personal", "/index.php/User talk:GrapeNuts", "Talk", "pt-gntalk", "GrapeNuts' talk page.", "", "pt-preferences");
var gntalk = document.getElementById('pt-gntalk');
gntalk.insertBefore(document.createTextNode("("), gntalk.firstChild);
gntalk.appendChild(document.createTextNode("·"));
var gncontribs = document.createElement('a');
gncontribs.href = '/index.php/Special:Contributions/GrapeNuts';
gncontribs.appendChild(document.createTextNode('Edits'));
gntalk.appendChild(gncontribs);
gntalk.appendChild(document.createTextNode(")"));
addLink("p-personal", "/index.php/User:GrapeNuts", "GrapeNuts", "pt-grapenuts", "GrapeNuts' user page.", "", "pt-gntalk");
var mycontris = document.getElementById('pt-mycontris');
mycontris.parentNode.removeChild(mycontris);
var myprefs = document.getElementById('pt-preferences');
myprefs.parentNode.removeChild(myprefs);
addLink("p-personal", "/index.php/Special:Preferences", "Preferences", "pt-preferences", "My preferences", "", "pt-logout");
}
// Add time to the "personal menu" at the top of the page.
// Created by [[Wikipedia:User:Mathwiz2020]], modified by [[User:JoeyDay]]
//
// Indicate where you would like the time to appear:
// pt-userpage, pt-mytalk, pt-preferences,
// pt-watchlist, pt-mycontris, pt-logout
//
gsTimeInsertBefore = ''; // leave blank to append after "logout"
//
function getTime() {
var time = new Date();
var hours = time.getUTCHours();
if (hours < 10) { hours = "0" + hours; }
var minutes = time.getUTCMinutes();
if (minutes < 10) { minutes = "0" + minutes; }
var currentTime = hours + ":" + minutes
document.getElementById('pt-time').childNodes[0].childNodes[0].replaceData(0, 5, currentTime);
doTime = window.setTimeout("getTime()", 1000);
}
function makeTime() {
var li = document.createElement('li');
li.id = 'pt-time';
var mySpan = document.createElement('span');
mySpan.appendChild( document.createTextNode( '00:00 UTC' ) );
li.appendChild(mySpan);
if (gsTimeInsertBefore) {
var before = document.getElementById(gsTimeInsertBefore);
before.appendChild( li, before );
}
else {
document.getElementById('pt-logout').parentNode.appendChild(li);
}
doTime = window.setTimeout("getTime()", 1000);
}
// Add purge tab to action tabs
function addPurge () {
var x = document.getElementById('ca-history');
if(!x) return;
if(x.children) x = x.children[0].href;
else x = x.childNodes[0].href;
if (document.getElementById('ca-delete')) {
addLink("p-cactions", x.replace(/=history/, "=purge"), 'purge', 'ca-purge', 'Purge the internal cache for this page', '', 'ca-delete');
}
else if (document.getElementById('ca-move')) {
addLink("p-cactions", x.replace(/=history/, "=purge"), 'purge', 'ca-purge', 'Purge the internal cache for this page', '', 'ca-move');
}
else if (document.getElementById('ca-watch')) {
addLink("p-cactions", x.replace(/=history/, "=purge"), 'purge', 'ca-purge', 'Purge the internal cache for this page', '', 'ca-watch');
}
else {
addLink("p-cactions", x.replace(/=history/, "=purge"), 'purge', 'ca-purge', 'Purge the internal cache for this page', '', 'ca-unwatch');
}
}
// Adds bottom tabs
function morelinks() {
var tabs = document.getElementById('p-cactions').cloneNode(true);
tabs.id = 'mytabs';
var listitems = tabs.getElementsByTagName('LI');
for (i=0;i<listitems.length;i++) {
if(listitems[i].id) listitems[i].id = 'mytabs-' + listitems[i].id;
}
document.getElementById('column-content').appendChild(tabs);
}
// Enables adding links to the interface just about anywhere.
//
// * where is the id of the toolbar where the button should be added;
// i.e. one of "p-cactions", "p-personal", "p-navigation", or "p-tb".
//
// * url is the URL which will be called when the button is clicked.
// javascript: urls can be used to do more complex things.
//
// * name is what will appear as the name of the button.
//
// * id is the id of the button; it's best to define one.
// Use a prefix to make sure its unique. Optional.
//
// * title is the tooltip title that gives a longer description
// of the button; if you define a accesskey, mention it here. Optional.
//
// * key is the char you want for the accesskey. Optional.
//
// * after is the id of the button you want to follow this one. Optional.
//
function addLink (where, url, name, id, title, key, after) {
var na = document.createElement('a');
na.href = url;
na.appendChild(document.createTextNode(name));
var li = document.createElement('li');
if (id) {
li.id = id;
}
li.appendChild(na);
var tabs = document.getElementById(where).getElementsByTagName('ul')[0];
if (after) {
tabs.insertBefore(li,document.getElementById(after));
}
else {
tabs.appendChild(li);
}
if (id) {
if (key && title) {
ta[id] = [key, title];
}
else if (key) {
ta[id] = [key, ''];
}
else if (title) {
ta[id] = ['', title];
}
}
// re-render the title and accesskeys from existing code in wikibits.js
akeytt();
return li;
}
//--- Execute all functions ---//
function doEverything () {
myLinksBox();
modPersonalMenu();
makeTime();
addPurge();
morelinks();
}
if (window.addEventListener) {
window.addEventListener("load", doEverything, false);
}
else if (window.attachEvent) {
window.attachEvent("onload", doEverything);
}
