User:Ed smildE/monobook.js

From Homestar Runner Wiki

(Difference between revisions)
Jump to: navigation, search
m (rv)
Line 1: Line 1:
-
// Create "my links" sidebar box
+
/* bottom tabs */
-
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
+
function morelinks() {
-
  var h5 = document.createElement('h5');
+
  var tabs = document.getElementById('p-cactions').cloneNode(true);
-
  h5.appendChild(document.createTextNode('My Links'));
+
  tabs.id = 'mytabs';
-
  myLinks.appendChild(h5);
+
  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);
 +
}
 +
if (window.addEventListener) window.addEventListener("load",morelinks,false);
 +
else if (window.attachEvent) window.attachEvent("onload",morelinks);
-
  // Create div.pBody and append to div#p-mylinks
+
/* purge tab */
-
  var pBody = document.createElement('div');
+
function addPurgeButton()
-
   pBody.className = 'pBody';
+
   {
-
  myLinks.appendChild(pBody);
+
      var href = document.location.href;
-
 
+
      {    
-
  // Create ul and append to div.pBody
+
          var historyHref = document.getElementById( "ca-history" ).firstChild.href;
-
  var ul = document.createElement('ul');
+
          var div = document.getElementById( "p-cactions" );
-
  pBody.appendChild(ul);
+
          var ul = div.getElementsByTagName( "ul" )[0];
-
 
+
          var newLi = document.createElement( "li" );
-
   // Append div#p-mylinks to sidebar just before external links box
+
          var newA = document.createElement( "a" );
-
  var sidebar = document.getElementById('column-one');
+
          newA.setAttribute( "href" , historyHref.replace( "=history" , "=purge" ) );
-
  sidebar.insertBefore(myLinks, document.getElementById('p-ext'));
+
          var text = document.createTextNode( "purge" );
-
 
+
          newA.appendChild( text );
-
  // Populate the actual links
+
          newLi.appendChild( newA );
-
  addLink("p-mylinks", "/index.php/Special:BrokenRedirects", "Broken redirects", "n-brokenredirects", "The list of broken redirects.");
+
          ul.appendChild( newLi );
-
  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 {
+
   if ( window.addEventListener ) window.addEventListener( "load" , addPurgeButton , false );
-
    var before = document.getElementById( gsTimeInsertBefore );
+
  else if ( window.attachEvent ) window.attachEvent( "onload", addPurgeButton );
-
    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:34, 23 April 2006

/* 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);
}
if (window.addEventListener) window.addEventListener("load",morelinks,false);
else if (window.attachEvent) window.attachEvent("onload",morelinks);

/* purge tab */
function addPurgeButton()
   {
       var href = document.location.href;
       {    
           var historyHref = document.getElementById( "ca-history" ).firstChild.href;
           var div = document.getElementById( "p-cactions" );
           var ul = div.getElementsByTagName( "ul" )[0];
           var newLi = document.createElement( "li" );
           var newA = document.createElement( "a" );
           newA.setAttribute( "href" , historyHref.replace( "=history" , "=purge" ) );
           var text = document.createTextNode( "purge" );
           newA.appendChild( text );
           newLi.appendChild( newA );
           ul.appendChild( newLi );
       }
   }
  if ( window.addEventListener ) window.addEventListener( "load" , addPurgeButton , false );
  else if ( window.attachEvent ) window.attachEvent( "onload", addPurgeButton );