MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus HuskyWiki
Keine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Markierung: Manuelle Zurücksetzung
 
(98 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
/* Jedes JavaScript hier wird für alle Benutzer für jede Seite geladen. */
//================================================================================
//*** Dynamic Navigation Bars


// ============================================================
// set up max count of Navigation Bars on page,
// BEGIN Enable multiple onload functions
// if there are more, all will be hidden
// mw.user.options.set( 'NavigationBarShowDefault', 0 ); // all bars will be hidden
// setup onload functions this way:
// mw.user.options.set( 'NavigationBarShowDefault', 1 ); // on pages with more than 1 bar all bars will be hidden
// 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
// ============================================================


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

Aktuelle Version vom 17. Januar 2023, 18:33 Uhr

//================================================================================
//*** 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';
				}
			}
		}
	}
})});