MediaWiki:Common.js: Unterschied zwischen den Versionen

Till Kraemer (Diskussion | Beiträge)
Änderung 40320 von Till Kraemer (Diskussion) rückgängig gemacht.
Till Kraemer (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 72: Zeile 72:


/** Collapsible tables *********************************************************
/** Collapsible tables *********************************************************
*
* From English Wikipedia, 2008-09-15
  *
  *
  *  Description: Allows tables to be collapsed, showing only the header. See
  *  Description: Allows tables to be collapsed, showing only the header. See
Zeile 84: Zeile 82:
var expandCaption = "show";
var expandCaption = "show";
   
   
function collapseTable( tableIndex )
function collapseTable( tableIndex ){
{
     var Button = document.getElementById( "collapseButton" + tableIndex );
     var Button = document.getElementById( "collapseButton" + tableIndex );
     var Table = document.getElementById( "collapsibleTable" + tableIndex );
     var Table = document.getElementById( "collapsibleTable" + tableIndex );
Zeile 108: Zeile 105:
}
}
   
   
function createCollapseButtons()
function createCollapseButtons(){
{
     var tableIndex = 0;
     var tableIndex = 0;
     var NavigationBoxes = new Object();
     var NavigationBoxes = new Object();
Zeile 130: Zeile 126:
             var ButtonText = document.createTextNode( collapseCaption );
             var ButtonText = document.createTextNode( collapseCaption );
   
   
             Button.style.styleFloat = "right";
             Button.className = "collapseButton"; //Styles are declared in Common.css
            Button.style.cssFloat = "right";
            Button.style.fontWeight = "normal";
            Button.style.textAlign = "right";
            Button.style.width = "6em";
   
   
             ButtonLink.style.color = Header.style.color;
             ButtonLink.style.color = Header.style.color;
             ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
             ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
             ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
             ButtonLink.setAttribute( "href", "#" );
            addHandler( ButtonLink,  "click", new Function( "evt", "collapseTable(" + tableIndex + " ); return killEvt( evt );") );
             ButtonLink.appendChild( ButtonText );
             ButtonLink.appendChild( ButtonText );
   
   
Zeile 153: Zeile 146:
         if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
         if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
             collapseTable( i );
             collapseTable( i );
        }
        else if ( hasClass( NavigationBoxes[i], "innercollapse" ) ) {
            var element = NavigationBoxes[i];
            while (element = element.parentNode) {
                if ( hasClass( element, "outercollapse" ) ) {
                    collapseTable ( i );
                    break;
                }
            }
         }
         }
     }
     }
}
}
   
   
addOnloadHook( createCollapseButtons );
$( createCollapseButtons );
   
   
   
   
/** Dynamic Navigation Bars (experimental) *************************************
/** Dynamic Navigation Bars (experimental) *************************************
*
* From English Wikipedia, 2008-09-15
  *
  *
  *  Description: See [[Wikipedia:NavFrame]].
  *  Description: See [[Wikipedia:NavFrame]].
  *  Maintainers: UNMAINTAINED
  *  Maintainers: UNMAINTAINED
  */
  */
 
// set up the words in your language
// set up the words in your language
var NavigationBarHide = 'Einklappen';
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = 'Ausklappen';
var NavigationBarShow = '[' + expandCaption + ']';
   
   
// set up max count of Navigation Bars on page,
// shows and hides content and picture (if available) of navigation bars
// if there are more, all will be hidden
// Parameters:
// NavigationBarShowDefault = 0; // all bars will be hidden
//     indexNavigationBar: the index of navigation bar to be toggled
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
function toggleNavigationBar(indexNavigationBar){
    var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
    var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
   
   
// adds show/hide-button to navigation bars
    if (!NavFrame || !NavToggle) {
jQuery( document ).ready(function() {
        return false;
if(!mw.user.options.exists( 'NavigationBarShowDefault' )){
    }
    if (typeof NavigationBarShowDefault != 'undefined' ) {
        mw.user.options.set( 'NavigationBarShowDefault',NavigationBarShowDefault)
    }
}
   
   
// shows and hides content and picture (if available) of navigation bars
    // if shown now
// Parameters:
     if (NavToggle.firstChild.data == NavigationBarHide) {
//     indexNavigationBar: the index of navigation bar to be toggled
        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
function toggleNavigationBar(NavToggle, NavFrame)
            if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
{
                NavChild.style.display = 'none';
  if (!NavFrame || !NavToggle) {
            }
  return false;
        }
  }
    NavToggle.firstChild.data = NavigationBarShow;
   
   
  // if shown now
    // if hidden now
  if (NavToggle.firstChild.data == NavigationBarHide) {
    } else if (NavToggle.firstChild.data == NavigationBarShow) {
  for (
        for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
  var NavChild = NavFrame.firstChild;
            if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
  NavChild != null;
                NavChild.style.display = 'block';
  NavChild = NavChild.nextSibling
            }
  ) {
        }
  if (NavChild.className == 'NavPic') {
        NavToggle.firstChild.data = NavigationBarHide;
  NavChild.style.display = 'none';
    }
  }
}
  if (NavChild.className == 'NavContent') {
  NavChild.style.display = 'none';
  }
  if (NavChild.className == 'NavToggle') {
  NavChild.firstChild.data = NavigationBarShow;
  }
  }
   
   
  // if hidden now
// adds show/hide-button to navigation bars
  } else if (NavToggle.firstChild.data == NavigationBarShow) {
function createNavigationBarToggleButton(){
  for (
    var indexNavigationBar = 0;
  var NavChild = NavFrame.firstChild;
    // iterate over all < div >-elements
  NavChild != null;
    var divs = document.getElementsByTagName("div");
  NavChild = NavChild.nextSibling
    for (var i = 0; NavFrame = divs[i]; i++) {
  ) {
        // if found a navigation bar
  if (NavChild.className == 'NavPic') {
        if (hasClass(NavFrame, "NavFrame")) {
  NavChild.style.display = 'block';
  }
  if (NavChild.className == 'NavContent') {
  NavChild.style.display = 'block';
  }
  if (NavChild.className == 'NavToggle') {
  NavChild.firstChild.data = NavigationBarHide;
  }
  }
  }
}
   
   
function toggleNavigationBarFunction(NavToggle, NavFrame) {
            indexNavigationBar++;
return function() {
            var NavToggle = document.createElement("a");
toggleNavigationBar(NavToggle, NavFrame);
            NavToggle.className = 'NavToggle';
return false;
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
};
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
}
// iterate over all NavFrames
var NavFrames = mw.util.$content.find( 'div.NavFrame' );
   
   
// if more Navigation Bars found and not template namespace than Default: hide all
            var isCollapsed = hasClass( NavFrame, "collapsed" );
var initiallyToggle = mw.user.options.get( 'NavigationBarShowDefault',1 ) < NavFrames.length && mw.config.get( 'wgNamespaceNumber' ) != 10;
            /*
for (var i=0; i<NavFrames.length; i++) {
            * Check if any children are already hidden.  This loop is here for backwards compatibility:
var NavFrame = NavFrames[i];
            * the old way of making NavFrames start out collapsed was to manually add style="display:none"
var NavToggle = document.createElement("a");
            * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
NavToggle.className = 'NavToggle';
            * the content visible without JavaScript support), the new recommended way is to add the class
NavToggle.setAttribute('href', '#');
            * "collapsed" to the NavFrame itself, just like with collapsible tables.
            */
            for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
                if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
                    if ( NavChild.style.display == 'none' ) {
                        isCollapsed = true;
                    }
                }
            }
            if (isCollapsed) {
                for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
                    if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
                        NavChild.style.display = 'none';
                    }
                }
            }
            var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide);
            NavToggle.appendChild(NavToggleText);
   
   
var NavToggleText = document.createTextNode(NavigationBarHide);
            // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
NavToggle.appendChild(NavToggleText);
            for(var j=0; j < NavFrame.childNodes.length; j++) {
                if (hasClass(NavFrame.childNodes[j], "NavHead")) {
// add NavToggle-Button as first div-element
                    NavToggle.style.color = NavFrame.childNodes[j].style.color;
// in < div class="NavFrame" >
                    NavFrame.childNodes[j].appendChild(NavToggle);
NavFrame.insertBefore(NavToggle, NavFrame.firstChild);
                }
            }
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
        }
    }
}
   
   
NavToggle.onclick = toggleNavigationBarFunction(NavToggle, NavFrame);
$( createNavigationBarToggleButton );
if (initiallyToggle) {
toggleNavigationBar(NavToggle, NavFrame);
}
}
});