User:Ed smildE/monobook.js
From Homestar Runner Wiki
(Difference between revisions)
Line 1: | Line 1: | ||
- | / | + | // 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 your monobook "personal menu" list at the very top of the page. | ||
+ | // Created by [[User:Mathwiz2020]] | ||
+ | // | ||
+ | // 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 div = document.createElement( 'div' ); | ||
+ | div.id = 'pt-time'; | ||
+ | |||
+ | var mySpan = document.createElement( 'span' ); | ||
+ | mySpan.appendChild( document.createTextNode( '00:00 UTC' ) ); | ||
+ | |||
+ | div.appendChild( mySpan ); | ||
+ | |||
+ | if ( ! gsTimeInsertBefore ) { // append to end (right) of list | ||
+ | document.getElementById( 'globalWrapper' ).parentNode.appendChild( div ); | ||
} | } | ||
- | if ( window.addEventListener ) window.addEventListener( "load" , | + | else { |
- | + | var before = document.getElementById( gsTimeInsertBefore ); | |
+ | before.appendChild( li, before ); | ||
+ | } | ||
+ | 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); | ||
+ | } |
Revision as of 19:33, 23 April 2006
// 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 your monobook "personal menu" list at the very top of the page. // Created by [[User:Mathwiz2020]] // // 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 div = document.createElement( 'div' ); div.id = 'pt-time'; var mySpan = document.createElement( 'span' ); mySpan.appendChild( document.createTextNode( '00:00 UTC' ) ); div.appendChild( mySpan ); if ( ! gsTimeInsertBefore ) { // append to end (right) of list document.getElementById( 'globalWrapper' ).parentNode.appendChild( div ); } else { var before = document.getElementById( gsTimeInsertBefore ); before.appendChild( li, before ); } 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); }