Differenze tra le versioni di "MediaWiki:Common.js"
Riga 1: | Riga 1: | ||
− | var autoCollapse = 1; | + | var autoCollapse = 1 ; |
− | var collapseCaption = | + | var collapseCaption = ' - ' ; |
− | var expandCaption = | + | var expandCaption = ' + ' ; |
− | function collapseTable( tableIndex ){ | + | function collapseTable ( tableIndex ) { |
− | + | var Button = document. getElementById ( 'collapseButton' + tableIndex ) ; | |
− | + | 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(){ | + | function createCollapseButtons ( ) { |
− | + | var tableIndex = 0 ; | |
− | + | var NavigationBoxes = new Object ( ) ; | |
− | + | var Tables = document. getElementsByTagName ( 'table' ) ; | |
− | + | for ( var i = 0 ; i < Tables. length ; i ++ ) { | |
− | + | if ( hasClass ( Tables [ i ] , 'collapsible' ) ) { | |
− | + | ||
− | + | 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 [[MediaWiki:Common.css]] | |
− | + | ButtonLink. style . color = Header. style . color ; | |
− | + | ButtonLink. setAttribute ( 'id' , 'collapseButton' + tableIndex ) ; | |
− | + | ButtonLink. setAttribute ( 'href' , "javascript:collapseTable(" + tableIndex + ");" ) ; | |
− | + | ButtonLink. appendChild ( ButtonText ) ; | |
− | |||
− | + | Button. appendChild ( document. createTextNode ( '[' ) ) ; | |
− | + | Button. appendChild ( ButtonLink ) ; | |
− | + | Button. appendChild ( document. createTextNode ( ']' ) ) ; | |
− | + | Header. insertBefore ( Button , Header. childNodes [ 0 ] ) ; | |
− | + | tableIndex ++; | |
− | + | } | |
− | + | } | |
− | + | for ( var i = 0 ; i < tableIndex ; i ++ ) { | |
− | + | if ( hasClass ( NavigationBoxes [ i ] , 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass ( NavigationBoxes [ i ] , 'autocollapse' ) ) ) { | |
− | + | 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 ) ; |
+ | |||
+ | |||
+ | |||
+ | var hasClass = ( function ( ) { | ||
+ | var reCache = { } ; | ||
+ | return function ( element , className ) { | ||
+ | return ( reCache [ className ] ? reCache [ className ] : ( reCache [ className ] = new RegExp ( "(?: \\ s|^)" + className + "(?: \\ s|$)" ) ) ) . test ( element. className ) ; | ||
+ | } ; | ||
+ | } ) ( ) ; |
Versione delle 21:41, 1 set 2011
var autoCollapse = 1 ;
var collapseCaption = ' - ' ;
var expandCaption = ' + ' ;
function collapseTable ( tableIndex ) {
var Button = document. getElementById ( 'collapseButton' + tableIndex ) ;
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 ( ) {
var tableIndex = 0 ;
var NavigationBoxes = new Object ( ) ;
var Tables = document. getElementsByTagName ( 'table' ) ;
for ( var i = 0 ; i < Tables. length ; i ++ ) {
if ( hasClass ( Tables [ i ] , 'collapsible' ) ) {
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 [[MediaWiki:Common.css]]
ButtonLink. style . color = Header. style . color ;
ButtonLink. setAttribute ( 'id' , 'collapseButton' + tableIndex ) ;
ButtonLink. setAttribute ( 'href' , "javascript:collapseTable(" + tableIndex + ");" ) ;
ButtonLink. appendChild ( ButtonText ) ;
Button. appendChild ( document. createTextNode ( '[' ) ) ;
Button. appendChild ( ButtonLink ) ;
Button. appendChild ( document. createTextNode ( ']' ) ) ;
Header. insertBefore ( Button , Header. childNodes [ 0 ] ) ;
tableIndex ++;
}
}
for ( var i = 0 ; i < tableIndex ; i ++ ) {
if ( hasClass ( NavigationBoxes [ i ] , 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass ( NavigationBoxes [ i ] , 'autocollapse' ) ) ) {
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 ) ;
var hasClass = ( function ( ) {
var reCache = { } ;
return function ( element , className ) {
return ( reCache [ className ] ? reCache [ className ] : ( reCache [ className ] = new RegExp ( "(?: \\ s|^)" + className + "(?: \\ s|$)" ) ) ) . test ( element. className ) ;
} ;
} ) ( ) ;