MediaWiki:Gadget-collapsible.js
Uwaga: aby zobaczyć zmiany po opublikowaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.
- Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5, lub Ctrl+R (⌘-R na komputerze Mac)
- Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
- Internet Explorer / Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
- Opera: Naciśnij klawisze Ctrl+F5.
// Przeniesienie kodu z Common.js: [[Specjalna:Niezmienny link/4436185]]
// Przeróbki: [[User:Peter Bowman]]
// Zobacz też:
// * wersja z Mobile.js: [[Specjalna:Niezmienny link/4293067]]
// * [[mw:Manual:Collapsible elements]]
var collapseCaption = 'ukryj▲';
var expandCaption = 'pokaż▼';
var navigationBarHide = mw.format( '[$1]', collapseCaption );
var navigationBarShow = mw.format( '[$1]', expandCaption );
var storageKey = 'ext.gadget.collapsible.state';
var collapseState = mw.storage.getObject( storageKey ) || {
inflection: 'expanded',
signLanguage: 'expanded'
};
/**
* Dynamic Navigation Bars. See [[Wikipedia:NavFrame]]
*
* Based on script from en.wikipedia.org, 2008-09-15.
*
* @source www.mediawiki.org/wiki/MediaWiki:Gadget-NavFrame.js
* @maintainer Helder.wiki, 2012–2013
* @maintainer Krinkle, 2013
*/
function toggleNavigationBar( $navFrame, $navToggle ) {
var property = $navFrame.hasClass( 'collapse-sign-language' )
? 'signLanguage'
: 'inflection';
if ( $navFrame.data( 'collapsed' ) ) {
$navFrame.find( 'div.NavContent' ).show();
$navToggle.text( navigationBarHide );
$navFrame.data( 'collapsed', false );
collapseState[ property ] = 'expanded';
} else {
$navFrame.find( 'div.NavContent' ).hide();
$navToggle.text( navigationBarShow );
$navFrame.data( 'collapsed', true );
collapseState[ property ] = 'collapsed';
}
mw.storage.setObject( storageKey, collapseState );
return false;
}
function createNavigationBarToggleButton( $content ) {
var $navFrame, $navToggle;
// Iterate over all (new) nav frames
$.each( $content.find( 'div.NavFrame' ), function ( i, navFrame ) {
$navFrame = $( navFrame ).data( 'collapsed', false );
// If found a navigation bar
$navToggle = $( '<span>' )
.addClass( 'NavToggle' )
.attr( 'role', 'button' )
.text( navigationBarHide )
.appendTo( $navFrame.find( 'div.NavHead' ) );
$navToggle.on( 'click', $.proxy( toggleNavigationBar, null, $navFrame, $navToggle ) );
if (
$navFrame.hasClass( 'collapsed' ) ||
(
$navFrame.hasClass( 'collapse-odmiana' ) &&
collapseState.inflection === 'collapsed'
) || (
$navFrame.hasClass( 'collapse-sign-language' ) &&
collapseState.signLanguage === 'collapsed'
) ) {
toggleNavigationBar( $navFrame, $navToggle );
}
} );
}
mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );
/**
* Collapsible tables
*
* @version 2.0.2 (2014-03-14)
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
* @author [[User:R. Koot]]
* @author [[User:Krinkle]]
* @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
* is supported in MediaWiki core.
*/
function collapseTable( $button, $table ) {
var $rows = $table.find( 'tr' );
if ( $table.data( 'collapsed' ) ) {
$rows.slice( 1 ).css( 'display', $rows.first().css( 'display' ) );
$button.text( navigationBarHide );
$table.data( 'collapsed', false );
} else {
$rows.slice( 1 ).hide();
$button.text( navigationBarShow );
$table.data( 'collapsed', true );
}
return false;
}
function createCollapseButtons( $content ) {
var $table, $header, $button;
$.each( $content.find( 'table.collapsible' ), function ( i, table ) {
$table = $( table );
$header = $table.find( 'tr' ).first().find( 'th' ).first();
if ( !$header.length ) {
return true;
}
$table.data( 'collapsed', false );
$button = $( '<span>' )
.addClass( 'collapse-button' )
.attr( 'role', 'button' )
.text( navigationBarHide )
.prependTo( $header );
$button.on( 'click', $.proxy( collapseTable, null, $button, $table ) );
if ( $table.hasClass( 'collapsed' ) ) {
collapseTable( $button, $table );
}
} );
}
mw.hook( 'wikipage.content' ).add( createCollapseButtons );