Benutzer:D47h0r/Common.js: Unterschied zwischen den Versionen

aus Memory Alpha, der freien deutschen Star-Trek-Datenbank
Spring zu: Navigation, suche
imported>D47h0r
K
imported>D47h0r
K
 
Zeile 1: Zeile 1:
/** Collapsible tables *********************************************************
+
/* <source lang="javascript"> */
*
+
 
*  Description: Allows tables to be collapsed, showing only the header. See
+
 
*                        http://www.mediawiki.org/wiki/Manual:Collapsible_tables.
+
//================================================================================
*  Maintainers: [[en:User:R. Koot]]
+
//*** Dynamic Navigation Bars for Monaco, Oasis (New Wikia), Adjura, Final Fantasy, Vector, MonoBook and default skins of MediaWiki
*/
+
//*** Script written by Tim Weyer (SVG) <svg@tim-weyer.org> and others
 +
 
 +
var navbarsDone;
 +
 
 +
// set up the words in your language
 +
var NavigationBarHide = 'Einklappen';
 +
var NavigationBarShow = 'Ausklappen';
 
   
 
   
var autoCollapse = 2;
+
// set up max count of Navigation Bars on page,
var collapseCaption = 'hide';
+
// if there are more, all will be hidden
var expandCaption = 'show';
+
// NavigationBarShowDefault = 0; // all bars will be hidden
+
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
function collapseTable( tableIndex ) {
+
if (typeof NavigationBarShowDefault == 'undefined' ) {
        var Button = document.getElementById( 'collapseButton' + tableIndex );
+
    var NavigationBarShowDefault = 0;
        var Table = document.getElementById( 'collapsibleTable' + tableIndex );
 
 
        if ( !Table || !Button ) {
 
                return false;
 
        }
 
 
        var Rows = Table.rows;
 
 
        if ( Button.firstChild.data == collapseCaption ) {
 
                for ( var i = 1; i < Rows.length; i++ ) {
 
                        Rows[i].style.display = 'none';
 
                }
 
                Button.firstChild.data = expandCaption;
 
        } else {
 
                for ( var i = 1; i < Rows.length; i++ ) {
 
                        Rows[i].style.display = Rows[0].style.display;
 
                }
 
                Button.firstChild.data = collapseCaption;
 
        }
 
 
}
 
}
 
   
 
   
function createCollapseButtons() {
+
// shows and hides content and picture (if available) of navigation bars
        var tableIndex = 0;
+
// Parameters:
        var NavigationBoxes = new Object();
+
//    indexNavigationBar: the index of navigation bar to be toggled
        var Tables = document.getElementsByTagName( 'table' );
+
function toggleNavigationBar(indexNavigationBar)
 +
{
 
   
 
   
        for ( var i = 0; i < Tables.length; i++ ) {
+
  var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
                if ( hasClass( Tables[i], 'collapsible' ) ) {
+
  var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 
   
 
   
                        /* only add button and increment count if there is a header row to work with */
+
  if (!NavFrame || !NavToggle) {
                        var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
+
      return false;
                        if ( !HeaderRow ) {
+
  }
                                continue;
 
                        }
 
                        var Header = HeaderRow.getElementsByTagName( 'th' )[0];
 
                        if ( !Header ) {
 
                                continue;
 
                        }
 
 
   
 
   
                        NavigationBoxes[tableIndex] = Tables[i];
+
  // if shown now
                        Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
+
  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;
 +
          }
 +
      }
 
   
 
   
                        var Button = document.createElement( 'span' );
+
  // if hidden now
                        var ButtonLink = document.createElement( 'a' );
+
  } else if (NavToggle.firstChild.data == NavigationBarShow) {
                        var ButtonText = document.createTextNode( collapseCaption );
+
      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;
 +
          }
 +
      }
 +
  }
 
   
 
   
                        Button.className = 'collapseButton'; // Styles are declared in [[MediaWiki:Common.css]]
+
}
 
   
 
   
                        ButtonLink.style.color = Header.style.color;
+
// adds show/hide-button to navigation bars
                        ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
+
function createNavigationBarToggleButton()
                        ButtonLink.setAttribute( 'href', "javascript:collapseTable(" + tableIndex + ");" );
+
{
                        ButtonLink.appendChild( ButtonText );
+
  if (navbarsDone) return;
 +
  var indexNavigationBar = 0;
 +
  // iterate over all < div >-elements
 +
  var divs = document.getElementsByTagName("div");
 +
  for (var i=0;  i<divs.length; i++) {
 +
      var NavFrame = divs[i];
 +
      // if found a navigation bar
 +
      if (NavFrame.className == "NavFrame" || NavFrame.className == "NavFrame shown" || NavFrame.className == "NavFrame hidden") {
 
   
 
   
                        Button.appendChild( document.createTextNode( '[' ) );
+
          indexNavigationBar++;
                        Button.appendChild( ButtonLink );
+
          var NavToggle = document.createElement("a");
                        Button.appendChild( document.createTextNode( ']' ) );
+
          NavToggle.className = 'NavToggle';
 +
          NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
 +
          NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 
   
 
   
                        Header.insertBefore( Button, Header.childNodes[0] );
+
          var NavToggleText = document.createTextNode(NavigationBarHide);
                        tableIndex++;
+
          NavToggle.appendChild(NavToggleText);
                }
 
        }
 
 
   
 
   
        for ( var i = 0; i < tableIndex; i++ ) {
+
          // add NavToggle-Button as first div-element
                if ( hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) {
+
          // in < div class="NavFrame" >
                        collapseTable( i );
+
          NavFrame.insertBefore(
                } else if ( hasClass( NavigationBoxes[i], 'innercollapse' ) ) {
+
              NavToggle,
                        var element = NavigationBoxes[i];
+
              NavFrame.firstChild
                        while ( element = element.parentNode ) {
+
          );
                                if ( hasClass( element, 'outercollapse' ) ) {
+
          NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
                                        collapseTable( i );
+
if (NavFrame.className == "NavFrame hidden") toggleNavigationBar(indexNavigationBar);
                                        break;
+
      }
                                }
+
  }
                        }
+
  // if more Navigation Bars found than Default: hide all
                }
+
  if (NavigationBarShowDefault < indexNavigationBar) {
        }
+
      for(
 +
              var i=1;
 +
              i<=indexNavigationBar;  
 +
              i++
 +
      ) {
 +
          var NavFrame = document.getElementById("NavFrame" + i);
 +
          if (NavFrame.className == "NavFrame") toggleNavigationBar(i);
 +
      }
 +
  }
 +
  navbarsDone = true;
 
}
 
}
+
 
addOnloadHook( createCollapseButtons );
+
addOnloadHook(createNavigationBarToggleButton);
+
 
/** Test if an element has a certain class **************************************
+
// **************************************************
*
+
// - end - Dynamic Navigation Bars
* Description: Uses regular expressions and caching for better performance.
+
// **************************************************
* Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
+
//
  */
+
 
   
+
/* </source> */
var hasClass = ( function() {
 
        var reCache = {};
 
        return function( element, className ) {
 
                return ( reCache[className] ? reCache[className] : ( reCache[className] = new RegExp( "(?:\\s|^)" + className + "(?:\\s|$)" ) ) ).test( element.className );
 
        };
 
})();
 

Aktuelle Version vom 16. November 2011, 21:44 Uhr

/* <source lang="javascript"> */


//================================================================================
//*** Dynamic Navigation Bars for Monaco, Oasis (New Wikia), Adjura, Final Fantasy, Vector, MonoBook and default skins of MediaWiki
//*** Script written by Tim Weyer (SVG) <svg@tim-weyer.org> and others

var navbarsDone;

// set up the words in your language
var NavigationBarHide = 'Einklappen';
var NavigationBarShow = 'Ausklappen';
 
// 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 = 0;
}
 
// 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()
{
   if (navbarsDone) return;
   var indexNavigationBar = 0;
   // iterate over all < div >-elements
   var divs = document.getElementsByTagName("div");
   for (var i=0;  i<divs.length; i++) {
       var NavFrame = divs[i];
       // if found a navigation bar
       if (NavFrame.className == "NavFrame" || NavFrame.className == "NavFrame shown" || NavFrame.className == "NavFrame hidden") {
 
           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 (NavFrame.className == "NavFrame hidden") toggleNavigationBar(indexNavigationBar);
       }
   }
   // if more Navigation Bars found than Default: hide all
   if (NavigationBarShowDefault < indexNavigationBar) {
       for(
               var i=1; 
               i<=indexNavigationBar; 
               i++
       ) {
           var NavFrame = document.getElementById("NavFrame" + i);
           if (NavFrame.className == "NavFrame") toggleNavigationBar(i);
       }
   }
  navbarsDone = true;
}

addOnloadHook(createNavigationBarToggleButton);

// **************************************************
//  - end -  Dynamic Navigation Bars
// **************************************************
//

/* </source> */