MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus ASB-KAB
Zur Navigation springenZur Suche springen
K (1 Version)
(test)
 
Zeile 22: Zeile 22:
 
  // ============================================================
 
  // ============================================================
  
//================================================================================
+
//================================================================================
//*** Dynamic Navigation Bars
+
//*** Dynamic Navigation Bars
+
 
// set up the words in your language
+
// set up max count of Navigation Bars on page,
var NavigationBarHide = 'Einklappen';
+
// if there are more, all will be hidden
var NavigationBarShow = 'Ausklappen';
+
// mw.user.options.set( 'NavigationBarShowDefault', 0 ); // all bars will be hidden
+
// mw.user.options.set( 'NavigationBarShowDefault', 1 ); // on pages with more than 1 bar all bars will be hidden
// set up max count of Navigation Bars on page,
+
 
// if there are more, all will be hidden
+
// adds show/hide-button to navigation bars
// NavigationBarShowDefault = 0; // all bars will be hidden
+
// using 'jquery.makeCollapsible': for messages
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
+
// using 'user', 'mediawiki.user', 'user.options': wait for overrides in user.js
if (typeof NavigationBarShowDefault == 'undefined' ) {
+
mw.loader.using( [ 'jquery.makeCollapsible', 'user', 'mediawiki.user', 'user.options' ], function() { mw.hook( 'wikipage.content' ).add( function( $content ) {
    var NavigationBarShowDefault = 1;
+
// allow setting NavigationBarShowDefault
}
+
var showDefaultCount = mw.user.options.get( 'NavigationBarShowDefault',
+
typeof NavigationBarShowDefault !== 'undefined' ? NavigationBarShowDefault : 1 );
// shows and hides content and picture (if available) of navigation bars
+
// allow user overrides for b/c
// Parameters:
+
var textHide = typeof NavigationBarHide === 'string' ? NavigationBarHide : mw.msg( 'collapsible-collapse' );
//    indexNavigationBar: the index of navigation bar to be toggled
+
var textShow = typeof NavigationBarShow === 'string' ? NavigationBarShow : mw.msg( 'collapsible-expand' );
function toggleNavigationBar(indexNavigationBar)
+
 
{
+
// shows and hides content and picture (if available) of navigation bars
    var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
+
// Parameters:
    var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
+
//    indexNavigationBar: the index of navigation bar to be toggled
+
function toggleNavigationBar(NavToggle, NavFrame)
    if (!NavFrame || !NavToggle) {
+
{
        return false;
+
if (!NavFrame || !NavToggle) {
    }
+
return false;
+
}
    // if shown now
+
 
    if (NavToggle.firstChild.data == NavigationBarHide) {
+
// if shown now
        for (
+
if (NavToggle.firstChild.data === textHide) {
                var NavChild = NavFrame.firstChild;
+
for (
                NavChild != null;
+
var NavChild = NavFrame.firstChild;
                NavChild = NavChild.nextSibling
+
NavChild !== null;
            ) {
+
NavChild = NavChild.nextSibling
            if (NavChild.className == 'NavPic') {
+
) {
                NavChild.style.display = 'none';
+
if (NavChild.className === 'NavPic' || NavChild.className === 'NavContent') {
            }
+
NavChild.style.display = 'none';
            if (NavChild.className == 'NavContent') {
+
}
                NavChild.style.display = 'none';
+
}
            }
+
NavToggle.firstChild.data = textShow;
            if (NavChild.className == 'NavToggle') {
+
 
                NavChild.firstChild.data = NavigationBarShow;
+
// if hidden now
            }
+
} else if (NavToggle.firstChild.data === textShow) {
        }
+
for (
+
var NavChild = NavFrame.firstChild;
    // if hidden now
+
NavChild !== null;
    } else if (NavToggle.firstChild.data == NavigationBarShow) {
+
NavChild = NavChild.nextSibling
        for (
+
) {
                var NavChild = NavFrame.firstChild;
+
if (NavChild.className === 'NavPic' || NavChild.className === 'NavContent') {
                NavChild != null;
+
NavChild.style.display = 'block';
                NavChild = NavChild.nextSibling
+
}
            ) {
+
}
            if (NavChild.className == 'NavPic') {
+
NavToggle.firstChild.data = textHide;
                NavChild.style.display = 'block';
+
}
            }
+
}
            if (NavChild.className == 'NavContent') {
+
 
                NavChild.style.display = 'block';
+
function toggleNavigationBarFunction(NavToggle, NavFrame) {
            }
+
return function() {
            if (NavChild.className == 'NavToggle') {
+
toggleNavigationBar(NavToggle, NavFrame);
                NavChild.firstChild.data = NavigationBarHide;
+
return false;
            }
+
};
        }
+
}
    }
+
// iterate over all NavFrames
}
+
var NavFrames = $content.find( 'div.NavFrame' );
+
 
// adds show/hide-button to navigation bars
+
// if more Navigation Bars found and not template namespace than Default: hide all
function createNavigationBarToggleButton()
+
var initiallyToggle = showDefaultCount < NavFrames.length && mw.config.get( 'wgNamespaceNumber' ) !== 10;
{
+
for (var i=0; i<NavFrames.length; i++) {
    var indexNavigationBar = 0;
+
var NavFrame = NavFrames[i];
    // iterate over all < div >-elements
+
var NavToggle = document.createElement("a");
    var divs = document.getElementsByTagName("div");
+
NavToggle.className = 'NavToggle';
    for (var i=0; i<divs.length; i++) {
+
NavToggle.setAttribute('href', '#');
        var NavFrame = divs[i];
+
 
        // if found a navigation bar
+
var NavToggleText = document.createTextNode(textHide);
        if (NavFrame.className == "NavFrame") {
+
NavToggle.appendChild(NavToggleText);
+
 
            indexNavigationBar++;
+
// add NavToggle-Button as first div-element
            var NavToggle = document.createElement("a");
+
// in < div class="NavFrame" >
            NavToggle.className = 'NavToggle';
+
NavFrame.insertBefore(NavToggle, NavFrame.firstChild);
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
+
 
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
+
NavToggle.onclick = toggleNavigationBarFunction(NavToggle, NavFrame);
+
if (initiallyToggle) {
            var NavToggleText = document.createTextNode(NavigationBarHide);
+
toggleNavigationBar(NavToggle, NavFrame);
            NavToggle.appendChild(NavToggleText);
+
} else { // make sure that 'display' is always set for every NavFrame
+
for (
            // add NavToggle-Button as first div-element  
+
var NavChild = NavFrame.firstChild;
            // in < div class="NavFrame" >
+
NavChild !== null;
            NavFrame.insertBefore(
+
NavChild = NavChild.nextSibling
                NavToggle,
+
) {
                NavFrame.firstChild
+
if (NavChild.className === 'NavPic' || NavChild.className === 'NavContent') {
            );
+
NavChild.style.display = 'block';
            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);
 
        }
 
    }
 
 
}
 
 
addOnloadHook(createNavigationBarToggleButton);
 

Aktuelle Version vom 13. Januar 2020, 09:38 Uhr

/* Jedes JavaScript hier wird für alle Benutzer für jede Seite geladen. */

 // ============================================================
 // BEGIN Enable multiple onload functions
 
 // setup onload functions this way:
 // aOnloadFunctions[aOnloadFunctions.length] = function_name; // without brackets!
 
 if (!window.aOnloadFunctions) {
   var aOnloadFunctions = new Array();
 }
 
 window.onload = function() {
   if (window.aOnloadFunctions) {
     for (var _i=0; _i<aOnloadFunctions.length; _i++) {
       aOnloadFunctions[_i]();
     }
   }
 }
 
 // END Enable multiple onload functions
 // ============================================================

//================================================================================
//*** Dynamic Navigation Bars

// set up max count of Navigation Bars on page,
// if there are more, all will be hidden
// mw.user.options.set( 'NavigationBarShowDefault', 0 ); // all bars will be hidden
// mw.user.options.set( 'NavigationBarShowDefault', 1 ); // on pages with more than 1 bar all bars will be hidden

// adds show/hide-button to navigation bars
// using 'jquery.makeCollapsible': for messages
// using 'user', 'mediawiki.user', 'user.options': wait for overrides in user.js
mw.loader.using( [ 'jquery.makeCollapsible', 'user', 'mediawiki.user', 'user.options' ], function() { mw.hook( 'wikipage.content' ).add( function( $content ) {
	// allow setting NavigationBarShowDefault
	var showDefaultCount = mw.user.options.get( 'NavigationBarShowDefault',
		typeof NavigationBarShowDefault !== 'undefined' ? NavigationBarShowDefault : 1 );
	// allow user overrides for b/c
	var textHide = typeof NavigationBarHide === 'string' ? NavigationBarHide : mw.msg( 'collapsible-collapse' );
	var textShow = typeof NavigationBarShow === 'string' ? NavigationBarShow : mw.msg( 'collapsible-expand' );

	// shows and hides content and picture (if available) of navigation bars
	// Parameters:
	//     indexNavigationBar: the index of navigation bar to be toggled
	function toggleNavigationBar(NavToggle, NavFrame)
	{
		if (!NavFrame || !NavToggle) {
			return false;
		}

		// if shown now
		if (NavToggle.firstChild.data === textHide) {
			for (
					var NavChild = NavFrame.firstChild;
					NavChild !== null;
					NavChild = NavChild.nextSibling
				) {
				if (NavChild.className === 'NavPic' || NavChild.className === 'NavContent') {
					NavChild.style.display = 'none';
				}
			}
			NavToggle.firstChild.data = textShow;

		// if hidden now
		} else if (NavToggle.firstChild.data === textShow) {
			for (
					var NavChild = NavFrame.firstChild;
					NavChild !== null;
					NavChild = NavChild.nextSibling
				) {
				if (NavChild.className === 'NavPic' || NavChild.className === 'NavContent') {
					NavChild.style.display = 'block';
				}
			}
			NavToggle.firstChild.data = textHide;
		}
	}

	function toggleNavigationBarFunction(NavToggle, NavFrame) {
		return function() {
			toggleNavigationBar(NavToggle, NavFrame);
			return false;
		};
	}
	// iterate over all NavFrames
	var NavFrames = $content.find( 'div.NavFrame' );

	// if more Navigation Bars found and not template namespace than Default: hide all
	var initiallyToggle	= showDefaultCount < NavFrames.length && mw.config.get( 'wgNamespaceNumber' ) !== 10;
	for (var i=0; i<NavFrames.length; i++) {
		var NavFrame = NavFrames[i];
		var NavToggle = document.createElement("a");
		NavToggle.className = 'NavToggle';
		NavToggle.setAttribute('href', '#');

		var NavToggleText = document.createTextNode(textHide);
		NavToggle.appendChild(NavToggleText);

		// add NavToggle-Button as first div-element
		// in < div class="NavFrame" >
		NavFrame.insertBefore(NavToggle, NavFrame.firstChild);

		NavToggle.onclick = toggleNavigationBarFunction(NavToggle, NavFrame);
		if (initiallyToggle) {
			toggleNavigationBar(NavToggle, NavFrame);
		} else { // make sure that 'display' is always set for every NavFrame
			for (
					var NavChild = NavFrame.firstChild;
					NavChild !== null;
					NavChild = NavChild.nextSibling
				) {
				if (NavChild.className === 'NavPic' || NavChild.className === 'NavContent') {
					NavChild.style.display = 'block';
				}
			}
		}
	}
})});