Änderungen

Zur Navigation springen Zur Suche springen
764 Bytes hinzugefügt ,  21:38, 26. Mär. 2014
Test
Zeile 1: Zeile 1:  
/* Das folgende JavaScript wird für alle Benutzer geladen. */
 
/* Das folgende JavaScript wird für alle Benutzer geladen. */
 +
 +
mw.loader.using( ['mediawiki.util', 'mediawiki.notify', 'jquery.client'], function () {
    
// ============================================================
 
// ============================================================
Zeile 22: Zeile 24:  
  // ============================================================
 
  // ============================================================
 
   
 
   
// ============================================================
  −
// BEGIN Dynamic Navigation Bars
  −
// NEEDS Enable multiple onload functions
  −
  −
// set up the words in your language
  −
var NavigationBarHide = 'Ausblenden';
  −
var NavigationBarShow = 'Einblenden';
  −
  −
// 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
  −
if (typeof NavigationBarShowDefault == 'undefined' ) {
  −
    var NavigationBarShowDefault = 3;
  −
}
  −
  −
// 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 (NavChild.className == 'NavPic') {
  −
                NavChild.style.display = 'none';
  −
            }
  −
            if (NavChild.className == 'NavContent') {
  −
                NavChild.style.display = 'none';
  −
            }
  −
            if (NavChild.className == 'NavToggle') {
  −
                NavChild.firstChild.data = NavigationBarShow;
  −
            }
  −
        }
  −
  −
    // if hidden now
  −
    } else if (NavToggle.firstChild.data == NavigationBarShow) {
  −
        for (
  −
                var NavChild = NavFrame.firstChild;
  −
                NavChild != null;
  −
                NavChild = NavChild.nextSibling
  −
            ) {
  −
            if (NavChild.className == 'NavPic') {
  −
                NavChild.style.display = 'block';
  −
            }
  −
            if (NavChild.className == 'NavContent') {
  −
                NavChild.style.display = 'block';
  −
            }
  −
            if (NavChild.className == 'NavToggle') {
  −
                NavChild.firstChild.data = NavigationBarHide;
  −
            }
  −
        }
  −
    }
  −
}
  −
  −
// adds show/hide-button to navigation bars
  −
function 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 == "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);
  −
  −
            // add NavToggle-Button as first div-element
  −
            // in < div class="NavFrame" >
  −
            NavFrame.insertBefore(
  −
                NavToggle,
  −
                NavFrame.firstChild
  −
            );
  −
            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);
  −
        }
  −
    }
  −
  −
}
  −
  −
aOnloadFunctions[aOnloadFunctions.length] = createNavigationBarToggleButton;
  −
  −
// END Dynamic Navigation Bars
  −
// ============================================================
  −
      
  // ============================================================
 
  // ============================================================
Zeile 236: Zeile 123:  
  // END Collapsible Tables
 
  // END Collapsible Tables
 
  // ============================================================
 
  // ============================================================
 +
 +
/**
 +
* Dynamic Navigation Bars (experimental)
 +
*
 +
* Description: See [[Wikipedia:NavFrame]].
 +
* Maintainers: UNMAINTAINED
 +
*/
 +
 +
/* set up the words in your language */
 +
var NavigationBarHide = '[' + collapseCaption + ']';
 +
var NavigationBarShow = '[' + expandCaption + ']';
 +
 +
/**
 +
* Shows and hides content and picture (if available) of navigation bars
 +
* Parameters:
 +
*    indexNavigationBar: the index of navigation bar to be toggled
 +
**/
 +
window.toggleNavigationBar = function ( indexNavigationBar, event ) {
 +
    var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar );
 +
    var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar );
 +
    var NavChild;
 +
 +
    if ( !NavFrame || !NavToggle ) {
 +
        return false;
 +
    }
 +
 +
    /* if shown now */
 +
    if ( NavToggle.firstChild.data === NavigationBarHide ) {
 +
        for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
 +
            if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
 +
                NavChild.style.display = 'none';
 +
            }
 +
        }
 +
    NavToggle.firstChild.data = NavigationBarShow;
 +
 +
    /* if hidden now */
 +
    } else if ( NavToggle.firstChild.data === NavigationBarShow ) {
 +
        for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
 +
            if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
 +
                NavChild.style.display = 'block';
 +
            }
 +
        }
 +
        NavToggle.firstChild.data = NavigationBarHide;
 +
    }
 +
 +
    event.preventDefault();
 +
};
 +
 +
/* adds show/hide-button to navigation bars */
 +
function createNavigationBarToggleButton() {
 +
    var indexNavigationBar = 0;
 +
    var NavFrame;
 +
    var NavChild;
 +
    /* iterate over all < div >-elements */
 +
    var divs = document.getElementsByTagName( 'div' );
 +
    for ( var i = 0; (NavFrame = divs[i]); i++ ) {
 +
        /* if found a navigation bar */
 +
        if ( $( NavFrame ).hasClass( 'NavFrame' ) ) {
 +
 +
            indexNavigationBar++;
 +
            var NavToggle = document.createElement( 'a' );
 +
            NavToggle.className = 'NavToggle';
 +
            NavToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar );
 +
            NavToggle.setAttribute( 'href', '#' );
 +
            $( NavToggle ).on( 'click', $.proxy( window.toggleNavigationBar, window, indexNavigationBar ) );
 +
 +
            var isCollapsed = $( NavFrame ).hasClass( 'collapsed' );
 +
            /**
 +
            * Check if any children are already hidden.  This loop is here for backwards compatibility:
 +
            * the old way of making NavFrames start out collapsed was to manually add style="display:none"
 +
            * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
 +
            * the content visible without JavaScript support), the new recommended way is to add the class
 +
            * "collapsed" to the NavFrame itself, just like with collapsible tables.
 +
            */
 +
            for ( NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling ) {
 +
                if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
 +
                    if ( NavChild.style.display === 'none' ) {
 +
                        isCollapsed = true;
 +
                    }
 +
                }
 +
            }
 +
            if ( isCollapsed ) {
 +
                for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
 +
                    if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
 +
                        NavChild.style.display = 'none';
 +
                    }
 +
                }
 +
            }
 +
            var NavToggleText = document.createTextNode( isCollapsed ? NavigationBarShow : 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] ).hasClass( 'NavHead' ) ) {
 +
                    NavToggle.style.color = NavFrame.childNodes[j].style.color;
 +
                    NavFrame.childNodes[j].appendChild( NavToggle );
 +
                }
 +
            }
 +
            NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar );
 +
        }
 +
    }
 +
}
 +
 +
mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );
286

Bearbeitungen

Navigationsmenü