MediaWiki:Gadget-CollapsibleCombo.js

De Wikcionario, el diccionario libre

Nota: Después de publicar, quizás necesite actualizar la caché de su navegador para ver los cambios.

  • Firefox/Safari: Mantenga presionada la tecla Shift mientras pulsa el botón Actualizar, o presiona Ctrl+F5 o Ctrl+R (⌘+R en Mac)
  • Google Chrome: presione Ctrl+Shift+R (⌘+Shift+R en Mac)
  • Internet Explorer/Edge: mantenga presionada Ctrl mientras pulsa Actualizar, o presione Ctrl+F5
  • Opera: Presiona Ctrl+F5.
var autoCollapse = 2;
var collapseCaption = 'ocultar ▲';
var expandCaption = 'mostrar ▼';

var collapseCaptionM = '▲';
var expandCaptionM = '▼';

var contCollapsible = 0;

// Código del plegado/desplegado de tablas

/** Collapsible tables *********************************************************
 *
 *  Description: Allows tables to be collapsed, showing only the header. See
 *               [[Wikipedia:NavFrame]].
 *  Maintainers: [[User:R. Koot]] (en), [[Usuario:Juan renombrado]]
 */

$( function () {
	$( 'table.collapsible' ).each( function () {
		var $this = $( this ), $toggleButton, $contenido, speed = 'fast';
		var $header = $this.children( 'caption:first' );
		
		if ( !$header.length ) {
			$header = $this.find( 'th:first' );
			
			if ( !$header.length ) {
				return true;
			}
			
			speed = '';
			$contenido = $( this.rows ).slice( 1 );
		} else {
			$contenido = $( this.tBodies );
		}
		
		$toggleButton = $( '<a>' )
			.text( collapseCaptionM )
			.addClass( 'collapsible-toggle' );
		
		$header.addClass( 'collapsible-flexor' )
			.on( 'click', function () {
				if ( $contenido.is( ':visible' ) ) {
					$contenido.hide( speed, function () {
						$toggleButton.text( expandCaptionM );
						$header.addClass( 'collapsed-header' );
					} );
				} else {
					$contenido.show( speed, function () {
						$toggleButton.text( collapseCaptionM );
						$header.removeClass( 'collapsed-header' );
					} );
				}
				
				return false;
			} )
			.append( $toggleButton );
		
		if ( $this.hasClass( 'collapsed' ) ) {
			$header.trigger( 'click' );
		}
		
		contCollapsible++;
	} );
} );

// Código del plegado/desplegado de plantillas

$( function () {
	$( 'div.NavFrame' ).each( function () {
		var $this = $( this );
		var $NavToggle = $( '<a>' )
			.text( collapseCaption )
			.addClass( 'NavToggle' );
		
		var $contenido = $this.children( '.NavPic, .NavContent' ).first()
			.addClass( 'collapsible-hidable' );
		
		$this.children( '.NavHead' )
			.addClass( 'collapsible-flexor' )
			.on( 'click', function () {
				if ( $contenido.is( ':visible' ) ) {
					$contenido.hide();
					$NavToggle.text( expandCaption );
					$( this ).addClass( 'collapsed-header' );
				} else {
					$contenido.show();
					$NavToggle.text( collapseCaption );
					$( this ).removeClass( 'collapsed-header' );
				}
				
				return false;
			} )
			.append( $NavToggle );
		
		if ( $this.hasClass( 'collapsed' ) ) {
			$this.children( '.NavHead' ).trigger( 'click' );
		}
		
		contCollapsible++;
	} );
} );

// Acciones globales

$( function () {
	if ( contCollapsible >= autoCollapse ) {
		$( 'div.NavFrame.autocollapse, table.collapsible.autocollapse' )
			.find( '.collapsible-flexor:not(.collapsed-header)' )
			.trigger( 'click' );
	}
	
	if ( location.hash ) {
		location.hash = location.hash;
	}
	
	if ( contCollapsible ) {
		$( mw.util.addPortletLink(
			'p-tb',
			'#',
			'Desplegar todo',
			'p-eswikt-collapsible-s',
			'Despliega todas las tablas ocultas'
		) )
		.css( 'font-style', 'italic' )
		.on( 'click', function () {
			$( '.collapsible-flexor.collapsed-header' ).trigger( 'click' );
			return false;
		} );
		
		$( mw.util.addPortletLink(
			'p-tb',
			'#',
			'Plegar todo',
			'p-eswikt-collapsible-h',
			'Pliega todas las tablas plegables'
		) )
		.css( 'font-style', 'italic' )
		.on( 'click', function () {
			$( '.collapsible-flexor:not(.collapsed-header)' ).trigger( 'click' );
			return false;
		} );
	}
} );