Jump to content

User:Jsimlo/shortcuts-dev.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
 //<pre><nowiki>

 /**********************************************************************
  *                                                                    *
  *             Changes to this file affect other users.               *
  *           Please discuss on the talk page before editing.          *
  *                                                                    *
  **********************************************************************/


 var shortcutsVersion      = "1.1.0";
 var shortcutsReleaseDate  = "2007-02-03";


 /***********************************************************
  * INTERFACE
  ***********************************************************/

 /**
  * Starts a new section of links. Function for external use.
  */
 function shortcutsStartSection (name)
 {
   shortcutsLinks[shortcutsLinks.length] = { 'name': name, 'links': new Array () };
 }

 /**
  * Adds new link into the current section of links. Function for external use.
  */
 function shortcutsAddLink (name, article)
 {
   var links = shortcutsLinks[shortcutsLinks.length - 1]['links'];

   links[links.length] = { 'name': name, 'article': article };
 }

 /***********************************************************
  * IMPLEMENTATION
  ***********************************************************/

 /**
  * Link maker.
  * Creates and returns an li element with the desired link.
  */
 function shortcutsMakeLink (name, url)
 {
   var ntxt = document.createTextNode (name);
   var na   = document.createElement ('a');
   var nli  = document.createElement ('li');

   na.setAttribute ('href', '/wiki/' + url); 
   nli.setAttribute ('class', 'n-shortcut');

   na.appendChild (ntxt);
   nli.appendChild (na);

   return nli;
 }

 /**
  * Portlet maker.
  * Creates and returns a portlet populated by list of links.
  */
 function shortcutsMakePortlet (name, links)
 {
   var nportlet = document.createElement ('div');
   var nh5 = document.createElement ('h5');
   var ntit = document.createTextNode (name);
   var nbody = document.createElement ('div');
   var nul = document.createElement ('ul');

   nportlet.setAttribute ('id', 'p-'+name);
   nportlet.setAttribute ('class', 'portlet');
   nbody.setAttribute ('class', 'pBody');
   nul.setAttribute ('id', 'p-'+name);

   for (var i = 0; i < links.length; i++)
     nul.appendChild (
       shortcutsMakeLink (links[i]['name'], links[i]['article'])
     );

   nh5.appendChild (ntit);
   nportlet.appendChild (nh5);
   nbody.appendChild (nul);
   nportlet.appendChild (nbody);

   return nportlet;
 }

 /**
  * Main function.
  * Enumerates all non-empty sections, and adds new portlets beneath the old ones.
  */
 function shortcutsMain ()
 {
   var sidecol = document.getElementById ('column-one');

   for (var i = 0; i < shortcutsLinks.length; i++)
     if (shortcutsLinks[i]['links'].length > 0)
       sidecol.appendChild (
         shortcutsMakePortlet (shortcutsLinks[i]['name'], shortcutsLinks[i]['links'])
       );
 }

 /**
  * Initializes the onload events.
  */
 function shortcutsInitialize ()
 {
   shortcutsInit ();
   shortcutsMain ();
 }

 /***********************************************************
  * INITIALIZATION
  ***********************************************************/

 var shortcutsLinks = new Array ();
 shortcutsStartSection (wgUserName ? wgUserName : 'shortcuts');

 addOnloadHook (shortcutsInitialize);

 //</nowiki></pre>