MediaWiki:Common.js
(Diferença entre revisões)
(6 edições intermediárias de um usuário não apresentadas) | |||
Linha 1: | Linha 1: | ||
− | /* | + | /** Collapsible tables ********************************************************* |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
* | * | ||
− | * | + | * Description: Allows tables to be collapsed, showing only the header. See |
− | * | + | * http://www.mediawiki.org/wiki/Manual:Collapsible_tables. |
− | + | * Maintainers: [[en:User:R. Koot]] | |
− | * Maintainers: [[ | + | |
*/ | */ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
var autoCollapse = 2; | var autoCollapse = 2; | ||
var collapseCaption = 'hide'; | var collapseCaption = 'hide'; | ||
Linha 43: | Linha 11: | ||
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' ) ) { | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | /* 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 [[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 ); | addOnloadHook( createCollapseButtons ); | ||
− | /** | + | /** Test if an element has a certain class ************************************** |
* | * | ||
− | * | + | * Description: Uses regular expressions and caching for better performance. |
− | * | + | * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]] |
− | + | ||
− | + | ||
*/ | */ | ||
− | + | var hasClass = ( function() { | |
− | var | + | var reCache = {}; |
− | var | + | return function( element, className ) { |
+ | return ( reCache[className] ? reCache[className] : ( reCache[className] = new RegExp( "(?:\\s|^)" + className + "(?:\\s|$)" ) ) ).test( element.className ); | ||
+ | }; | ||
+ | })(); | ||
+ | |||
+ | |||
+ | |||
+ | /////////////////////////////////////////////////////// | ||
+ | // Codesnippet to make your sidebaritems expandable // | ||
+ | // Use this code ONLY for monobook-Style. // | ||
+ | /////////////////////////////////////////////////////// | ||
− | + | $(document).ready(function(){ | |
− | + | ||
− | + | ||
− | function | + | |
− | + | ||
− | + | ||
− | + | //set the default expanded Items by their headline | |
− | + | var defaultExpandItems= ['Navigation', 'Orga']; | |
− | + | //set the basic-name for the cookies, which save the current state of expanding | |
+ | var expandCookieName = "disdance_project_wiki_nav_expanded_"; | ||
− | + | var maxHeights=[] | |
− | + | var expandeds=[]; | |
− | + | var labels=[]; | |
− | + | initNav(); | |
− | + | }); | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | function initNav(){ | |
− | + | $('#p-logo').css({'position':'relative', 'display':'block'});; | |
− | + | $('.generated-sidebar h5,#p-tb h5 ').each(function(i){ | |
− | + | ||
− | + | var id = $(this).parent().attr('id'); | |
− | + | maxHeights[id]=$(this).next('div').height(); | |
− | + | var str = $(this).html(); | |
− | + | labels[id]=str; | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | if ($.cookie(expandCookieName+id)=='false' ){ | |
− | + | expandeds[id]=false; | |
− | + | minimize( $(this)); | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | } else if ($.cookie(expandCookieName+id)=='true' ){ | |
− | + | expandeds[id]=true; | |
− | + | maximize( $(this)); | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | } else if (defaultExpandItems.indexOf(str)==-1){ | |
− | + | expandeds[id]=false; | |
− | + | minimize( $(this)); | |
− | + | } else { | |
− | + | expandeds[id]=true; | |
− | + | maximize( $(this)); | |
− | + | } | |
− | + | $(this).css({'cursor':'pointer'}); | |
− | + | $(this).click(toggleNav); | |
− | + | }); | |
} | } | ||
− | |||
− | + | function minimize(target){ | |
− | + | var id=$(target).parent().attr('id'); | |
− | + | //You can change the expires-parameter to save the Cookie longer/shorter than 7 days like in this Code | |
− | + | $.cookie(expandCookieName+id,'false', { expires: 7}); | |
− | + | var str = labels[id]+" ►"; | |
− | + | $(target).next('div').animate({'height':'0px'}); | |
− | + | $(target).html(str); | |
− | + | } | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | function maximize(target){ | |
− | + | var id=$(target).parent().attr('id'); | |
− | + | //You can change the expires-parameter to save the Cookie longer/shorter than 7 days like in this Code | |
− | + | $.cookie(expandCookieName+id,'true', { expires: 7}); | |
− | + | var str = labels[id]+" ▼"; | |
− | + | var newHeight = maxHeights[id]; | |
− | + | $(target).next('div').animate({'height':newHeight+'px'}); | |
+ | $(target).html(str); | ||
} | } | ||
− | + | function toggleNav(e){ | |
− | + | var id=$(e.target).parent().attr('id'); | |
− | + | expandeds[id]=!expandeds[id]; | |
− | + | if(expandeds[id]==true){ | |
− | + | maximize(e.target); | |
− | + | } | |
− | + | else{ | |
− | + | minimize(e.target); | |
− | var | + | } |
− | + | } | |
− | + | ||
− | + | /////////////////////////////////////////////////////// | |
− | + | /////////////////////////////////////////////////////// | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | / | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |
Edição atual tal como 19h30min de 31 de julho de 2012
/** Collapsible tables ********************************************************* * * Description: Allows tables to be collapsed, showing only the header. See * http://www.mediawiki.org/wiki/Manual:Collapsible_tables. * Maintainers: [[en:User:R. Koot]] */ var autoCollapse = 2; var collapseCaption = 'hide'; var expandCaption = 'show'; 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' ) ) { /* 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 [[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 ); /** Test if an element has a certain class ************************************** * * Description: Uses regular expressions and caching for better performance. * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]] */ var hasClass = ( function() { var reCache = {}; return function( element, className ) { return ( reCache[className] ? reCache[className] : ( reCache[className] = new RegExp( "(?:\\s|^)" + className + "(?:\\s|$)" ) ) ).test( element.className ); }; })(); /////////////////////////////////////////////////////// // Codesnippet to make your sidebaritems expandable // // Use this code ONLY for monobook-Style. // /////////////////////////////////////////////////////// $(document).ready(function(){ //set the default expanded Items by their headline var defaultExpandItems= ['Navigation', 'Orga']; //set the basic-name for the cookies, which save the current state of expanding var expandCookieName = "disdance_project_wiki_nav_expanded_"; var maxHeights=[] var expandeds=[]; var labels=[]; initNav(); }); function initNav(){ $('#p-logo').css({'position':'relative', 'display':'block'});; $('.generated-sidebar h5,#p-tb h5 ').each(function(i){ var id = $(this).parent().attr('id'); maxHeights[id]=$(this).next('div').height(); var str = $(this).html(); labels[id]=str; if ($.cookie(expandCookieName+id)=='false' ){ expandeds[id]=false; minimize( $(this)); } else if ($.cookie(expandCookieName+id)=='true' ){ expandeds[id]=true; maximize( $(this)); } else if (defaultExpandItems.indexOf(str)==-1){ expandeds[id]=false; minimize( $(this)); } else { expandeds[id]=true; maximize( $(this)); } $(this).css({'cursor':'pointer'}); $(this).click(toggleNav); }); } function minimize(target){ var id=$(target).parent().attr('id'); //You can change the expires-parameter to save the Cookie longer/shorter than 7 days like in this Code $.cookie(expandCookieName+id,'false', { expires: 7}); var str = labels[id]+" ►"; $(target).next('div').animate({'height':'0px'}); $(target).html(str); } function maximize(target){ var id=$(target).parent().attr('id'); //You can change the expires-parameter to save the Cookie longer/shorter than 7 days like in this Code $.cookie(expandCookieName+id,'true', { expires: 7}); var str = labels[id]+" ▼"; var newHeight = maxHeights[id]; $(target).next('div').animate({'height':newHeight+'px'}); $(target).html(str); } function toggleNav(e){ var id=$(e.target).parent().attr('id'); expandeds[id]=!expandeds[id]; if(expandeds[id]==true){ maximize(e.target); } else{ minimize(e.target); } } /////////////////////////////////////////////////////// ///////////////////////////////////////////////////////