Jump to content

MediaWiki:Common.js: Difference between revisions

Jehan (talk | contribs)
No edit summary
Jehan (talk | contribs)
No edit summary
 
(42 intermediate revisions by the same user not shown)
Line 16: Line 16:
window.hideTable = function ( tableIndex ) {
window.hideTable = function ( tableIndex ) {
     var Button = document.getElementById( 'hideButton' + tableIndex );
     var Button = document.getElementById( 'hideButton' + tableIndex );
     var Table = document.getElementById( 'hideableTable' + tableIndex );
     var showTable = document.getElementById( 'hideableTable' + tableIndex );
var Tables = document.getElementsByTagName( 'table' );
     if ( !Table || !Button ) {
var i;
      
if ( !showTable || !Button ) {
         return false;
         return false;
     }
     }
   
   
    var Rows = Table.rows;
/* hide shown tables */
     var i;
     for ( i = 0; i < Tables.length; i++ ) {
        if ( $( Tables[i] ).hasClass( 'hideable' ) ) {
    if ( Button.firstChild.data === hideCaption ) {
Tables[i].style.display = 'none';
        for ( i = 1; i < Rows.length; i++ ) {
Tables[i].className = "wikitable hideable hidden";
            Rows[i].style.display = 'none';
}
        }
}
        Button.firstChild.data = expandCaption;
showTable.style.display = '';
    } else {
showTable.className = "wikitable hideable hidden shown";
        for ( i = 1; i < Rows.length; i++ ) {
 
            Rows[i].style.display = Rows[0].style.display;
        }
        Button.firstChild.data = hideCaption;
    }
};
};


Line 42: Line 40:
     var NavigationBoxes = {};
     var NavigationBoxes = {};
     var Tables = document.getElementsByTagName( 'table' );
     var Tables = document.getElementsByTagName( 'table' );
    var i;
var linkTable = document.getElementById( 'linkTable');
var linkImages = document.getElementsByClassName("hideImage");
if ( linkTable ) var linkRows = linkTable.getElementsByTagName( 'tr' );
    var i, j;
     function handleButtonLink( index, e ) {
     function handleButtonLink( index, e ) {
Line 49: Line 48:
         e.preventDefault();
         e.preventDefault();
     }
     }
     for ( i = 0; i < Tables.length; i++ ) {
     if ( linkRows ) {
        if ( $( Tables[i] ).hasClass( 'hideable' ) ) {
for ( i = 0; i < linkRows.length; i++ ) {
var linkRow = linkRows[i];
            /* only add button and increment count if there is a header row to work with */
if ( !linkRow ) continue;
            var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
var linkCells = linkRow.getElementsByTagName( 'th' );
            if ( !HeaderRow ) continue;
if ( !linkCells ) continue;
            var Header = HeaderRow.getElementsByTagName( 'th' )[0];
for ( j = 0; j < linkCells.length; j++ ) {
var linkImage = document.getElementsByClassName("hideImage")[i];
var linkCell = linkCells[j];
            if ( !Header ) continue;
if ( !linkCell ) continue;
if ( $( linkCell ).hasClass( 'hideImage' ) )            /* add id attribute */
            NavigationBoxes[ tableIndex ] = Tables[i];
linkCell.setAttribute( 'id', 'hideImage' + tableIndex++ );
            Tables[i].setAttribute( 'id', 'hideableTable' + tableIndex );
}
}
            var Button    = document.createElement( 'span' );
            var ButtonLink = document.createElement( 'a' );
tableIndex = 0;
            var ButtonText = document.createTextNode( hideCaption );
j=0;
for ( i = 0; i < Tables.length; i++ ) {
            Button.className = 'hideButton';  /* Styles are declared in Common.css */
if ( $( Tables[i] ).hasClass( 'hideable' ) ) {
            ButtonLink.style.color = Header.style.color;
/* only add button and increment count if there is a header row to work with */
            ButtonLink.setAttribute( 'id', 'hideButton' + tableIndex );
var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
            ButtonLink.setAttribute( 'href', '#' );
if ( !HeaderRow ) continue;
            $( ButtonLink ).on( 'click', $.proxy( handleButtonLink, ButtonLink, tableIndex ) );
var Header = HeaderRow.getElementsByTagName( 'th' )[0];
            ButtonLink.appendChild( ButtonText );
var linkImage = document.getElementById( 'hideImage' + j++ );;
if ( !Header ) continue;
            Button.appendChild( document.createTextNode( '[' ) );
            Button.appendChild( ButtonLink );
NavigationBoxes[ tableIndex ] = Tables[i];
            Button.appendChild( document.createTextNode( ']' ) );
Tables[i].setAttribute( 'id', 'hideableTable' + tableIndex );
            Header.insertBefore( Button, Header.firstChild );
if ( 0 ) {
            if ( linkImage ) linkImage.insertBefore( Button, linkImage.firstChild );
                                    $( linkImage ).on( 'click', $.proxy( handlelinkImage, linkImage , tableIndex ) );
tableIndex++;
                                }
        }
if ( 1 ) {
    }
                                    var Button    = document.createElement( 'span' );
    var ButtonLink = document.createElement( 'a' );
    for ( i = 0;  i < tableIndex; i++ ) {
    var ButtonText = document.createTextNode( expandCaption );
        if ( $( NavigationBoxes[i] ).hasClass( 'hidden' ) || ( tableIndex >= autoHide && $( NavigationBoxes[i] ).hasClass( 'autohide' ) ) ) {
            window.hideTable( i );
    Button.className = 'hideButton';  /* Styles are declared in Common.css */
        }  
        else if ( $( NavigationBoxes[i] ).hasClass ( 'innerhide' ) ) {
    ButtonLink.style.color = Header.style.color;
            var element = NavigationBoxes[i];
    ButtonLink.setAttribute( 'id', 'hideButton' + tableIndex );
            while ((element = element.parentNode)) {
    ButtonLink.setAttribute( 'href', '#' );
                if ( $( element ).hasClass( 'outerhide' ) ) {
    $( ButtonLink ).on( 'click', $.proxy( handleButtonLink, ButtonLink, tableIndex ) );
                    window.hideTable ( i );
    ButtonLink.appendChild( ButtonText );
                    break;
                }
    Button.appendChild( document.createTextNode( '[' ) );
            }
    Button.appendChild( ButtonLink );
        }
    Button.appendChild( document.createTextNode( ']' ) );
    }
    Header.insertBefore( Button, Header.firstChild );
    if ( linkImage ) linkImage.appendChild( Button );
    if ( 0 ) linkImage.insertBefore( Button, linkImage.firstChild );
                                }
tableIndex++;
}
}
 
window.hideTable( 0 );
}
}
}
   
   
Line 172: Line 181:
             ButtonLink.setAttribute( 'href', '#' );
             ButtonLink.setAttribute( 'href', '#' );
             $( ButtonLink ).on( 'click', $.proxy( handleButtonLink, ButtonLink, tableIndex ) );
             $( ButtonLink ).on( 'click', $.proxy( handleButtonLink, ButtonLink, tableIndex ) );
            ButtonLink.appendChild( ButtonText );
 
    ButtonLink.appendChild( ButtonText );
   
   
             Button.appendChild( document.createTextNode( '[' ) );
             Button.appendChild( document.createTextNode( '[' ) );
Line 178: Line 188:
             Button.appendChild( document.createTextNode( ']' ) );
             Button.appendChild( document.createTextNode( ']' ) );
   
   
             Header.insertBefore( Button, Header.firstChild );
             Header.insertBefore( Button, Header.lastChild );
             tableIndex++;
             tableIndex++;
         }
         }