Category
![]() |
You're no bot and a page you've created got automatically deleted? Add your name to FreewarWiki:NoSpamUser | ![]() |
Difference between revisions of "MediaWiki:Common.js"
From FreewarWiki
(reinsert partial) |
(reinsert partial) |
||
Line 115: | Line 115: | ||
/* END Dynamic Navigation Bars | /* END Dynamic Navigation Bars | ||
+ | // ============================================================ | ||
+ | |||
+ | == Vertical Tabbing == | ||
+ | */ | ||
+ | |||
+ | var shownTab = Array(); | ||
+ | var disabledLink = Array(); | ||
+ | |||
+ | // switches between tabs | ||
+ | function showVTab(area, tab) { | ||
+ | var div = document.getElementById('VTabContent_' + String(area) + '_' + String(tab)); | ||
+ | var a = document.getElementById('VTabLink_' + String(area) + '_' + String(tab)); | ||
+ | if (!div || !a) return; | ||
+ | |||
+ | div.style.height = 'auto'; | ||
+ | if (shownTab[area]) shownTab[area].style.height = '0'; | ||
+ | shownTab[area] = div; | ||
+ | |||
+ | var strong = document.getElementById('VTabStrong_' + String(area)); | ||
+ | if (!strong) { | ||
+ | strong = document.createElement('strong'); | ||
+ | strong.id = 'VTabStrong_' + String(area); | ||
+ | strong.className = 'selflink'; | ||
+ | } | ||
+ | |||
+ | if (disabledLink[area]) { | ||
+ | disabledLink[area].appendChild(strong.firstChild); | ||
+ | strong.parentNode.appendChild(disabledLink[area]); | ||
+ | } | ||
+ | |||
+ | strong.appendChild(a.firstChild); | ||
+ | a.parentNode.appendChild(strong); | ||
+ | a.parentNode.removeChild(a); | ||
+ | disabledLink[area] = a; | ||
+ | } | ||
+ | |||
+ | // initiates vertically tabbed areas | ||
+ | function initVTabs() { | ||
+ | var indexVTabs = 0; | ||
+ | // iterate over all tables | ||
+ | for (var i = 0; table = document.getElementsByTagName('table')[i]; i++) { | ||
+ | if (table.className != 'VTabs') continue; | ||
+ | |||
+ | table.id = 'VTabs_' + String(++indexVTabs); | ||
+ | shownTab[indexVTabs] = disabledLink[indexVTabs] = 0; | ||
+ | |||
+ | var numTabs = 0; | ||
+ | var contents; | ||
+ | for (var j = 0; tr = table.getElementsByTagName('tr')[j]; j++) { | ||
+ | var caption = tr.getElementsByTagName('td')[0]; | ||
+ | caption.className = 'VTabCaption'; | ||
+ | caption.id = 'VTabCaption_' + String(indexVTabs) + '_' + String(++numTabs); | ||
+ | |||
+ | var a = document.createElement('a'); | ||
+ | a.id = 'VTabLink_' + String(indexVTabs) + '_' + String(++numTabs); | ||
+ | a.href = 'javascript:showVTab(' + String(indexVTabs) + ', ' + String(numTabs) + ');'; | ||
+ | a.appendChild(caption.firstChild); | ||
+ | caption.appendChild(a); | ||
+ | |||
+ | var content = tr.getElementsByTagName('td')[1]; | ||
+ | var div = document.createElement('div'); | ||
+ | div.className = 'VTabContent'; | ||
+ | div.id = 'VTabContent_' + String(indexVTabs) + '_' + String(numTabs); | ||
+ | |||
+ | while (content.childNodes.length) { | ||
+ | div.appendChild(content.childNodes[0]); | ||
+ | } | ||
+ | |||
+ | if (contents) { | ||
+ | tr.removeChild(content); | ||
+ | } else { | ||
+ | contents = content | ||
+ | } | ||
+ | contents.rowSpan = numTabs; | ||
+ | contents.appendChild(div); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | jQuery( document ).ready( function( $ ) { | ||
+ | initVTabs(); | ||
+ | } ); | ||
+ | |||
+ | // addOnloadHook(initVTabs); | ||
+ | |||
+ | /* END Vertical Tabbing | ||
// ============================================================ | // ============================================================ |
Revision as of 15:26, 8 February 2017
/* Any JavaScript here will be loaded for all users on every page load. */ /* Hinweis: Die Wiki-Überschriften sind JavaScript-technisch auskommentiert == Dynamic Navigation Bars == */ // 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 NavigationBarShowDefault = 1; // 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); } } } jQuery( document ).ready( function( $ ) { createNavigationBarToggleButton(); } ); // addOnloadHook(createNavigationBarToggleButton); /* END Dynamic Navigation Bars // ============================================================ == Vertical Tabbing == */ var shownTab = Array(); var disabledLink = Array(); // switches between tabs function showVTab(area, tab) { var div = document.getElementById('VTabContent_' + String(area) + '_' + String(tab)); var a = document.getElementById('VTabLink_' + String(area) + '_' + String(tab)); if (!div || !a) return; div.style.height = 'auto'; if (shownTab[area]) shownTab[area].style.height = '0'; shownTab[area] = div; var strong = document.getElementById('VTabStrong_' + String(area)); if (!strong) { strong = document.createElement('strong'); strong.id = 'VTabStrong_' + String(area); strong.className = 'selflink'; } if (disabledLink[area]) { disabledLink[area].appendChild(strong.firstChild); strong.parentNode.appendChild(disabledLink[area]); } strong.appendChild(a.firstChild); a.parentNode.appendChild(strong); a.parentNode.removeChild(a); disabledLink[area] = a; } // initiates vertically tabbed areas function initVTabs() { var indexVTabs = 0; // iterate over all tables for (var i = 0; table = document.getElementsByTagName('table')[i]; i++) { if (table.className != 'VTabs') continue; table.id = 'VTabs_' + String(++indexVTabs); shownTab[indexVTabs] = disabledLink[indexVTabs] = 0; var numTabs = 0; var contents; for (var j = 0; tr = table.getElementsByTagName('tr')[j]; j++) { var caption = tr.getElementsByTagName('td')[0]; caption.className = 'VTabCaption'; caption.id = 'VTabCaption_' + String(indexVTabs) + '_' + String(++numTabs); var a = document.createElement('a'); a.id = 'VTabLink_' + String(indexVTabs) + '_' + String(++numTabs); a.href = 'javascript:showVTab(' + String(indexVTabs) + ', ' + String(numTabs) + ');'; a.appendChild(caption.firstChild); caption.appendChild(a); var content = tr.getElementsByTagName('td')[1]; var div = document.createElement('div'); div.className = 'VTabContent'; div.id = 'VTabContent_' + String(indexVTabs) + '_' + String(numTabs); while (content.childNodes.length) { div.appendChild(content.childNodes[0]); } if (contents) { tr.removeChild(content); } else { contents = content } contents.rowSpan = numTabs; contents.appendChild(div); } } } jQuery( document ).ready( function( $ ) { initVTabs(); } ); // addOnloadHook(initVTabs); /* END Vertical Tabbing // ============================================================