MediaWiki:Common.js : Différence entre versions

De La Grande Bibliotheque de Tamriel
Aller à : navigation, rechercher
Ligne 1 : Ligne 1 :
 
/**
 
/**
  * Collapsible tables *********************************************************
+
  * Boîtes déroulantes
 
  *
 
  *
  * Description: Allows tables to be collapsed, showing only the header. See
+
  * Pour [[Modèle:Méta palette de navigation]]
*              [[Wikipedia:NavFrame]].
 
* Maintainers: [[User:R. Koot]]
 
 
  */
 
  */
  
var autoCollapse = 2;
+
var Palette_Enrouler = '[masquer]';
var collapseCaption = 'hide';
+
var Palette_Derouler  = '[afficher]';
var expandCaption = 'show';
 
  
window.collapseTable = function ( tableIndex ) {
+
var Palette_max = 1;
    var Button = document.getElementById( 'collapseButton' + tableIndex );
+
var Palette_index = -1;
    var Table = document.getElementById( 'collapsibleTable' + tableIndex );
 
  
    if ( !Table || !Button ) {
+
function Palette_toggle(indexPalette){
        return false;
+
  var Button = document.getElementById( "collapseButton" + indexPalette);
    }
+
  var Table = document.getElementById( "collapsibleTable" + indexPalette);
 +
  if (!Table || !Button) return false;
  
    var Rows = Table.rows;
+
  var Rows = Table.rows;
    var i;
+
  var RowDisplay = "none";
 
+
  if (Button.firstChild.data == Palette_Derouler) {
    if ( Button.firstChild.data === collapseCaption ) {
+
    Button.firstChild.data = Palette_Enrouler;
        for ( i = 1; i < Rows.length; i++ ) {
+
     RowDisplay = Rows[0].style.display;
            Rows[i].style.display = 'none';
+
  } else {
        }
+
    Button.firstChild.data = Palette_Derouler;
        Button.firstChild.data = expandCaption;
+
  }
     } else {
+
  for (var i = 1; i < Rows.length; i++) {
        for ( i = 1; i < Rows.length; i++ ) {
+
    Rows[i].style.display = RowDisplay
            Rows[i].style.display = Rows[0].style.display;
+
  }
        }
+
}
        Button.firstChild.data = collapseCaption;
 
    }
 
};
 
 
 
function createCollapseButtons() {
 
    var tableIndex = 0;
 
    var NavigationBoxes = {};
 
    var Tables = document.getElementsByTagName( 'table' );
 
    var i;
 
 
 
    function handleButtonLink( index, e ) {
 
        window.collapseTable( index );
 
        e.preventDefault();
 
    }
 
 
 
    for ( i = 0; i < Tables.length; i++ ) {
 
        if ( $( Tables[i] ).hasClass( 'collapsible' ) ) {
 
 
 
            /* only add button and increment count if there is a header row to work with */
 
            var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
 
            if ( !HeaderRow ) continue;
 
            var Header = HeaderRow.getElementsByTagName( 'th' )[0];
 
            if ( !Header ) continue;
 
 
 
            NavigationBoxes[ tableIndex ] = Tables[i];
 
            Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
 
 
 
            var Button    = document.createElement( 'span' );
 
            var ButtonLink = document.createElement( 'a' );
 
            var ButtonText = document.createTextNode( collapseCaption );
 
 
 
            Button.className = 'collapseButton';  /* Styles are declared in Common.css */
 
 
 
            ButtonLink.style.color = Header.style.color;
 
            ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
 
            ButtonLink.setAttribute( 'href', '#' );
 
            $( ButtonLink ).on( 'click', $.proxy( handleButtonLink, ButtonLink, tableIndex ) );
 
            ButtonLink.appendChild( ButtonText );
 
 
 
            Button.appendChild( document.createTextNode( '[' ) );
 
            Button.appendChild( ButtonLink );
 
            Button.appendChild( document.createTextNode( ']' ) );
 
 
 
            Header.insertBefore( Button, Header.firstChild );
 
            tableIndex++;
 
        }
 
    }
 
  
    for ( i = 0; i < tableIndex; i++ ) {
+
function Palette(Element){
        if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) || ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) ) ) {
+
  if(!Element) Element = document;
            window.collapseTable( i );
+
  var TableIndex = 0;
         }
+
  var TableIndexes = new Array();
         else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
+
  var Tables = Element.getElementsByTagName( "table" );
            var element = NavigationBoxes[i];
+
  for ( var i = 0; i < Tables.length; i++ ) {
            while ((element = element.parentNode)) {
+
    if ( hasClass( Tables[i], "collapsible" ) ) {
                if ( $( element ).hasClass( 'outercollapse' ) ) {
+
      var Table = Tables[i];
                    window.collapseTable ( i );
+
      var Header = Table.getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
                    break;
+
      /* only add button and increment count if there is a header row to work with */
                }
+
      if (Header) {
            }
+
        TableIndex++
        }
+
        Palette_index++;
 +
        TableIndexes[Palette_index] = Table;
 +
        Table.setAttribute( "id", "collapsibleTable" + Palette_index );
 +
         var Button    = document.createElement( "span" );
 +
         var ButtonLink = document.createElement( "a" );
 +
        var ButtonText = document.createTextNode( Palette_Enrouler );
 +
        Button.className = "navboxToggle";
 +
        ButtonLink.setAttribute( "id", "collapseButton" + Palette_index );
 +
        ButtonLink.setAttribute( "href", "javascript:;" );
 +
        $(ButtonLink).click(new Function( "evt", "Palette_toggle(" + Palette_index + " ); evt.preventDefault();") );
 +
        ButtonLink.appendChild( ButtonText );
 +
        Button.appendChild( document.createTextNode("\u00a0")); //ajout d'un espace insécable pour décoller ce bouton du texte de la celulle
 +
        Button.appendChild( ButtonLink );
 +
        Header.insertBefore( Button, Header.childNodes[0] );
 +
      }
 
     }
 
     }
 +
  }
 +
  for(var index in TableIndexes){
 +
    var Table = TableIndexes[index];
 +
    if(hasClass(Table,"collapsed")||(TableIndex>Palette_max && hasClass(Table,"autocollapse")))
 +
    Palette_toggle(index);
 +
  }
 
}
 
}
 +
addOnloadHook(Palette);
  
mw.hook( 'wikipage.content' ).add( createCollapseButtons );
 
  
 
/**
 
/**
  * Dynamic Navigation Bars (experimental)
+
  * Pour [[Modèle:Boîte déroulante]]
*
 
* Description: See [[Wikipedia:NavFrame]].
 
* Maintainers: UNMAINTAINED
 
 
  */
 
  */
  
/* set up the words in your language */
+
var BoiteDeroulante_Enrouler = '[masquer]';
var NavigationBarHide = '[' + collapseCaption + ']';
+
var BoiteDeroulante_Derouler  = '[afficher]';
var NavigationBarShow = '[' + expandCaption + ']';
+
var BoiteDeroulante_max = 0;
 +
var BoiteDeroulante_index = -1;
  
/**
+
function BoiteDeroulante_toggle(indexBoiteDeroulante){
* Shows and hides content and picture (if available) of navigation bars
+
      var NavFrame = document.getElementById("NavFrame" + indexBoiteDeroulante);
* Parameters:
+
      var NavToggle = document.getElementById("NavToggle" + indexBoiteDeroulante);
*    indexNavigationBar: the index of navigation bar to be toggled
+
      var CaptionContainer = document.getElementById("NavCaption" + indexBoiteDeroulante);
**/
+
      if (!NavFrame || !NavToggle || !CaptionContainer) return;
window.toggleNavigationBar = function ( indexNavigationBar, event ) {
+
      var caption = new Array();
    var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar );
+
      var CaptionSpans = CaptionContainer.getElementsByTagName('span');
    var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar );
+
      caption[0] = CaptionSpans[0].innerHTML;
    var NavChild;
+
      caption[1] = CaptionSpans[1].innerHTML;
 
 
    if ( !NavFrame || !NavToggle ) {
 
        return false;
 
    }
 
  
    /* if shown now */
+
      var Contents = NavFrame.getElementsByTagName('div');
    if ( NavToggle.firstChild.data === NavigationBarHide ) {
+
      if (NavToggle.innerHTML == caption[1]) {
        for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
+
            NavToggle.innerHTML = caption[0];
            if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
+
            for(var a=0,m=Contents.length;a<m;a++){
                NavChild.style.display = 'none';
+
                  if(hasClass(Contents[a], "NavContent")){
 +
                        Contents[a].style.display = 'none';
 +
                        return;
 +
                  }
 
             }
 
             }
        }
+
      }else{
    NavToggle.firstChild.data = NavigationBarShow;
+
            NavToggle.innerHTML = caption[1];
 
+
            for(var a=0,m=Contents.length;a<m;a++){
    /* if hidden now */
+
                  if(hasClass(Contents[a], "NavContent")){
    } else if ( NavToggle.firstChild.data === NavigationBarShow ) {
+
                        Contents[a].style.display = 'block';
        for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
+
                        return;
            if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
+
                  }
                NavChild.style.display = 'block';
 
 
             }
 
             }
        }
+
      }
        NavToggle.firstChild.data = NavigationBarHide;
+
}
    }
 
  
    event.preventDefault();
+
function BoiteDeroulante(Element){
};
+
      if(!Element) Element = document;
 +
      var NavFrameCount = -1;
 +
      var NavFrames = Element.getElementsByTagName("div");
 +
      for(var i=0,l=NavFrames.length;i<l;i++){
 +
            if(hasClass(NavFrames[i], "NavFrame")){
 +
                  var NavFrame = NavFrames[i];
 +
                  NavFrameCount++;
 +
                  BoiteDeroulante_index++;
  
/* adds show/hide-button to navigation bars */
+
                  if (NavFrame.title && NavFrame.title.indexOf("/")!=-1) {
function createNavigationBarToggleButton() {
+
                        var Enrouler = NavFrame.title.HTMLize().split("/")[1];
    var indexNavigationBar = 0;
+
                        var Derouler = NavFrame.title.HTMLize().split("/")[0];
    var NavFrame;
+
                  }else{
    var NavChild;
+
                        var Enrouler = BoiteDeroulante_Enrouler;
    /* iterate over all < div >-elements */
+
                        var Derouler = BoiteDeroulante_Derouler;
    var divs = document.getElementsByTagName( 'div' );
+
                  }
    for ( var i = 0; (NavFrame = divs[i]); i++ ) {
+
                  NavFrame.title='';
        /* if found a navigation bar */
+
                  var CaptionContainer = document.createElement('span');
        if ( $( NavFrame ).hasClass( 'NavFrame' ) ) {
+
                  CaptionContainer.id = 'NavCaption' + BoiteDeroulante_index;
 +
                  CaptionContainer.style.display = "none";
 +
                  CaptionContainer.innerHTML = '<span>' + Derouler + '</span><span>' + Enrouler + '</span>';
 +
                  NavFrame.appendChild(CaptionContainer);
  
            indexNavigationBar++;
+
                  var NavToggle = document.createElement("a");
            var NavToggle = document.createElement( 'a' );
+
                  NavToggle.className = 'NavToggle';
            NavToggle.className = 'NavToggle';
+
                  NavToggle.id = 'NavToggle' + BoiteDeroulante_index;
            NavToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar );
+
                  NavToggle.href = 'javascript:BoiteDeroulante_toggle(' + BoiteDeroulante_index + ');';
            NavToggle.setAttribute( 'href', '#' );
+
                  var NavToggleText = document.createTextNode(Enrouler);
            $( NavToggle ).on( 'click', $.proxy( window.toggleNavigationBar, window, indexNavigationBar ) );
+
                  NavToggle.appendChild(NavToggleText);
  
            var isCollapsed = $( NavFrame ).hasClass( 'collapsed' );
+
                  NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
            /**
+
                  NavFrame.id = 'NavFrame' + BoiteDeroulante_index;
            * Check if any children are already hidden.  This loop is here for backwards compatibility:
+
                  if (BoiteDeroulante_max <= NavFrameCount) {
            * the old way of making NavFrames start out collapsed was to manually add style="display:none"
+
                         BoiteDeroulante_toggle(BoiteDeroulante_index);
            * to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make
+
                  }
            * the content visible without JavaScript support), the new recommended way is to add the class
 
            * "collapsed" to the NavFrame itself, just like with collapsible tables.
 
            */
 
            for ( NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling ) {
 
                if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
 
                    if ( NavChild.style.display === 'none' ) {
 
                         isCollapsed = true;
 
                    }
 
                }
 
 
             }
 
             }
            if ( isCollapsed ) {
+
      }
                for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
 
                    if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
 
                        NavChild.style.display = 'none';
 
                    }
 
                }
 
            }
 
            var NavToggleText = document.createTextNode( isCollapsed ? NavigationBarShow : NavigationBarHide );
 
            NavToggle.appendChild( NavToggleText );
 
  
            /* Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked) */
 
            for( var j = 0; j < NavFrame.childNodes.length; j++ ) {
 
                if ( $( NavFrame.childNodes[j] ).hasClass( 'NavHead' ) ) {
 
                    NavToggle.style.color = NavFrame.childNodes[j].style.color;
 
                    NavFrame.childNodes[j].appendChild( NavToggle );
 
                }
 
            }
 
            NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar );
 
        }
 
    }
 
 
}
 
}
 
+
addOnloadHook(BoiteDeroulante);
mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );
 

Version du 1 janvier 2014 à 16:47

/**
 * Boîtes déroulantes
 *
 * Pour [[Modèle:Méta palette de navigation]]
 */

var Palette_Enrouler = '[masquer]';
var Palette_Derouler  = '[afficher]';

var Palette_max = 1;
var Palette_index = -1;

function Palette_toggle(indexPalette){
  var Button = document.getElementById( "collapseButton" + indexPalette);
  var Table = document.getElementById( "collapsibleTable" + indexPalette);
  if (!Table || !Button) return false;

  var Rows = Table.rows;
  var RowDisplay = "none";
  if (Button.firstChild.data == Palette_Derouler) {
    Button.firstChild.data = Palette_Enrouler;
    RowDisplay = Rows[0].style.display;
  } else {
    Button.firstChild.data = Palette_Derouler;
  }
  for (var i = 1; i < Rows.length; i++) {
    Rows[i].style.display = RowDisplay
  }
}

function Palette(Element){
  if(!Element) Element = document;
  var TableIndex = 0;
  var TableIndexes = new Array();
  var Tables = Element.getElementsByTagName( "table" );
  for ( var i = 0; i < Tables.length; i++ ) {
    if ( hasClass( Tables[i], "collapsible" ) ) {
      var Table = Tables[i];
      var Header = Table.getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
      /* only add button and increment count if there is a header row to work with */
      if (Header) {
        TableIndex++
        Palette_index++;
        TableIndexes[Palette_index] = Table;
        Table.setAttribute( "id", "collapsibleTable" + Palette_index );
        var Button     = document.createElement( "span" );
        var ButtonLink = document.createElement( "a" );
        var ButtonText = document.createTextNode( Palette_Enrouler );
        Button.className = "navboxToggle";
        ButtonLink.setAttribute( "id", "collapseButton" + Palette_index );
        ButtonLink.setAttribute( "href", "javascript:;" );
        $(ButtonLink).click(new Function( "evt", "Palette_toggle(" + Palette_index + " ); evt.preventDefault();") );
        ButtonLink.appendChild( ButtonText );
        Button.appendChild( document.createTextNode("\u00a0"));  //ajout d'un espace insécable pour décoller ce bouton du texte de la celulle
        Button.appendChild( ButtonLink );
        Header.insertBefore( Button, Header.childNodes[0] );
      }
    }
  }
  for(var index in TableIndexes){
    var Table = TableIndexes[index];
    if(hasClass(Table,"collapsed")||(TableIndex>Palette_max && hasClass(Table,"autocollapse")))
    Palette_toggle(index);
  }
}
addOnloadHook(Palette);


/**
 * Pour [[Modèle:Boîte déroulante]]
 */

var BoiteDeroulante_Enrouler = '[masquer]';
var BoiteDeroulante_Derouler  = '[afficher]';
var BoiteDeroulante_max = 0;
var BoiteDeroulante_index = -1;

function BoiteDeroulante_toggle(indexBoiteDeroulante){
      var NavFrame = document.getElementById("NavFrame" + indexBoiteDeroulante);
      var NavToggle = document.getElementById("NavToggle" + indexBoiteDeroulante);
      var CaptionContainer = document.getElementById("NavCaption" + indexBoiteDeroulante);
      if (!NavFrame || !NavToggle || !CaptionContainer) return;
      var caption = new Array();
      var CaptionSpans = CaptionContainer.getElementsByTagName('span');
      caption[0] = CaptionSpans[0].innerHTML;
      caption[1] = CaptionSpans[1].innerHTML;

      var Contents = NavFrame.getElementsByTagName('div');
      if (NavToggle.innerHTML == caption[1]) {
            NavToggle.innerHTML = caption[0];
            for(var a=0,m=Contents.length;a<m;a++){
                  if(hasClass(Contents[a], "NavContent")){
                        Contents[a].style.display = 'none';
                        return;
                  }
            }
      }else{
            NavToggle.innerHTML = caption[1];
            for(var a=0,m=Contents.length;a<m;a++){
                  if(hasClass(Contents[a], "NavContent")){
                        Contents[a].style.display = 'block';
                        return;
                  }
            }
      }
}

function BoiteDeroulante(Element){
      if(!Element) Element = document;
      var NavFrameCount = -1;
      var NavFrames = Element.getElementsByTagName("div");
      for(var i=0,l=NavFrames.length;i<l;i++){
            if(hasClass(NavFrames[i], "NavFrame")){
                  var NavFrame = NavFrames[i];
                  NavFrameCount++;
                  BoiteDeroulante_index++;

                  if (NavFrame.title && NavFrame.title.indexOf("/")!=-1) {
                        var Enrouler = NavFrame.title.HTMLize().split("/")[1];
                        var Derouler = NavFrame.title.HTMLize().split("/")[0];
                  }else{
                        var Enrouler = BoiteDeroulante_Enrouler;
                        var Derouler = BoiteDeroulante_Derouler;
                  }
                  NavFrame.title='';
                  var CaptionContainer = document.createElement('span');
                  CaptionContainer.id = 'NavCaption' + BoiteDeroulante_index;
                  CaptionContainer.style.display = "none";
                  CaptionContainer.innerHTML = '<span>' + Derouler + '</span><span>' + Enrouler + '</span>';
                  NavFrame.appendChild(CaptionContainer);

                  var NavToggle = document.createElement("a");
                  NavToggle.className = 'NavToggle';
                  NavToggle.id = 'NavToggle' + BoiteDeroulante_index;
                  NavToggle.href = 'javascript:BoiteDeroulante_toggle(' + BoiteDeroulante_index + ');';
                  var NavToggleText = document.createTextNode(Enrouler);
                  NavToggle.appendChild(NavToggleText);

                  NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
                  NavFrame.id = 'NavFrame' + BoiteDeroulante_index;
                  if (BoiteDeroulante_max <= NavFrameCount) {
                        BoiteDeroulante_toggle(BoiteDeroulante_index);
                  }
            }
      }

}
addOnloadHook(BoiteDeroulante);