User:Sanbeg/vfd NavBar.js

From Wikisource
Jump to: navigation, search

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Konqueror: Click Reload or press F5
  • Opera: Clear the cache in Tools → Preferences
/**
==BEGIN Dynamic Navigation Bars (experimantal)==
Modified from the NavBars in [[Mediawiki:Monobook.js]] to work with vfd divs.  This will hide closed discussions in AFD/AFC pages, but 
allow you to toggle them, and will show them by default in the AFD subpages.
 
 **/
 
 // set up the words in your language
 var NavigationBarHide = '[ Hide ]';
 var NavigationBarShow = '[ Show ]';
 
 // 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 vfd_NavigationBarShowDefault = 1;
 
 /**
===toggle===
 **/
 
 // shows and hides content and picture (if available) of navigation bars
 // Parameters:
 //     indexNavigationBar: the index of navigation bar to be toggled
 function vfd_toggleNavigationBar(indexNavigationBar)
 {
    var NavToggle = document.getElementById("vfd_NavToggle" + indexNavigationBar);
    var NavFrame = document.getElementById("vfd_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 (NavChild.style && (NavChild.className != 'vfd_NavToggle')) {
           // } else {
               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 (NavChild.style) {
                NavChild.style.display = 'block';
            }
        }
    NavToggle.firstChild.data = NavigationBarHide;
    }
 }
 
 /**
 
===create===
 **/
 
 // adds show/hide-button to navigation bars
 function vfd_createNavigationBarToggleButton()
 {
    var indexNavigationBar = 0;
    // iterate over all < div >-elements
    for(
            var i=0; 
            NavFrame = document.getElementsByTagName("div")[i]; 
            i++
        ) {
        // if found a navigation bar
        if (NavFrame.className == "navbar") {
            indexNavigationBar++;
            var NavToggle = document.createElement("a");
            NavToggle.className = 'vfd_NavToggle';
            NavToggle.setAttribute('id', 'vfd_NavToggle' + indexNavigationBar);
            NavToggle.setAttribute('href', 'javascript:vfd_toggleNavigationBar(' + indexNavigationBar + ');');
 
            var NavToggleText = document.createTextNode(NavigationBarHide);
            NavToggle.appendChild(NavToggleText);
 
            // attach the toggle link
            NavFrame.appendChild(NavToggle);
            NavFrame.setAttribute('id', 'vfd_NavFrame' + indexNavigationBar);
        }
    }
    // if more Navigation Bars found than Default: hide all
    if (vfd_NavigationBarShowDefault < indexNavigationBar) {
        for(
                var i=1; 
                i<=indexNavigationBar; 
                i++
        ) {
            vfd_toggleNavigationBar(i);
        }
    }
 
 }
 
 addOnloadHook(vfd_createNavigationBarToggleButton);
 
 // END Dynamic Navigation Bars
 // ===============================================
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox
Print/export