MediaWiki:Common.js

From Wikibooks

Jump to: navigation, search

Note - After saving, you may have to bypass your browser's cache to see the changes. Mozilla / Firefox / Safari: hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (Command-R on a Macintosh); Konqueror: click Reload or press F5; Opera: clear the cache in Tools → Preferences; Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl-F5.

/* Any JavaScript here will be loaded for all users on every page load. */
import_script('MediaWiki:Common.js/RandomBook.js');
 
 // ============================================================
 // BEGIN Dynamic Navigation Bars (experimental)
 
 // set up the words in your language
 var NavigationBarHide = '▲';
 var NavigationBarShow = '▼';
 
 // set up max count of Navigation Bars on page,
 // if there are more, all will be hidden
 // NavigationBarShowDefault = 0; // all bars will be hidden
 // NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
 var NavigationBarShowDefault = 0;
 
 // shows and hides content and picture (if available) of navigation bars
 // Parameters:
 //     indexNavigationBar: the index of navigation bar to be toggled
 function toggleNavigationBar(indexNavigationBar)
 {
   var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
   var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 
   if (!NavFrame || !NavToggle) {
     return false;
   }
 
   // if shown now
   if (NavToggle.firstChild.data == NavigationBarHide) {
     for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
       if (hasClass(NavChild, 'NavPic')) {
         NavChild.style.display = 'none';
       }
       if (hasClass(NavChild, 'NavContent')) {
         NavChild.style.display = 'none';
       }
     }
     NavToggle.firstChild.data = NavigationBarShow;
   // if hidden now
   } else if (NavToggle.firstChild.data == NavigationBarShow) {
     for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
       if (hasClass(NavChild, 'NavPic')) {
         NavChild.style.display = 'block';
       }
       if (hasClass(NavChild, 'NavContent')) {
         NavChild.style.display = 'block';
       }
     }
     NavToggle.firstChild.data = NavigationBarHide;
   }
 }
 
 // adds show/hide-button to navigation bars
 function createNavigationBarToggleButton()
 {
    var indexNavigationBar = 0;
    var divs = document.getElementsByTagName("div");
 
    // iterate over all < div >-elements
    for (var i=0; NavFrame = divs[i]; i++) {
      // if found a navigation bar
      if (hasClass(NavFrame, 'NavFrame')) {
        indexNavigationBar++;
        var NavToggle = document.createElement("a");
        NavToggle.className = 'NavToggle';
        NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
        NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 
        var NavToggleText = document.createTextNode(NavigationBarHide);
        NavToggle.appendChild(NavToggleText);
        // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
        for (var j=0; j < NavFrame.childNodes.length; j++) {
          if (NavFrame.childNodes[j].className == "NavHead") {
            NavFrame.childNodes[j].appendChild(NavToggle);
          }
        }
        NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
      }
    }
    // if more Navigation Bars found than Default: hide all
    if (NavigationBarShowDefault < indexNavigationBar) {
      for (var i=1; i<=indexNavigationBar; i++) {
        toggleNavigationBar(i);
      }
    }
 }
 
 addLoadEvent(createNavigationBarToggleButton);
 
 if (wgNamespaceNumber >= 1 && (wgTitle == "Main Page" || wgTitle.indexOf("Main Page ") == 0))
 {
   document.write('<style type="text/css">/*<![CDATA[*/ #siteSub, #contentSub, h1.firstHeading { display: none !important; } /*]]>*/</style>');
 
   function mainPageRenameNamespaceTab()
   {
     try {
       var Node = document.getElementById('ca-nstab-main').firstChild;
       if (Node.textContent ) {      // Per DOM Level 3
         Node.textContent = 'Main Page';
       } else if (Node.innerText) { // IE doesn't handle .textContent
         Node.innerText = 'Main Page';
       } else if (Node.innerHTML) { // Fallbacks
         Node.innerHTML = 'Main Page';
       } else {
         Node.replaceChild(Node.firstChild, document.createTextNode('Main Page')); 
       }
     } catch(e) {
       // bailing out!
     }
   }
   // Main page tab no longer says article
   addOnloadHook(mainPageRenameNamespaceTab);
 }
 
 // adds buttons to the edit toolbar
 if (mwCustomEditButtons) {
   import_script("MediaWiki:EditToolbar.js");
 }