MediaWiki:Gadget-shorts.js

Z Wikisłownika – wolnego słownika wielojęzycznego

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.
/**
 * Dodanie zakładki do zwijania i rozwijania skrótów
 * Przeróbka oryginalnego kodu autorstwa [[User:Sp5uhe]]
 * Przegląd i modyfikacje: [[User:Peter Bowman]]
 * Starsze wersje w historii [[MediaWiki:Monobook.js]] i [[MediaWiki:Common.js]]
 */

mw.libs.shorts = {
	$caShorts: $(),
	storageKey: 'ext.gadget.shorts.state',
	
	L10n: {
		qqx: [ 'shorts-collapse', 'shorts-expand', 'shorts-none', 'shorts-desc' ],
		en:  [ 'Collapse shorts', 'Expand shorts', 'No shorts', 'Show/hide abbreviations' ],
		es:  [ 'Contraer abreviaturas', 'Expandir abreviaturas', 'No hay abreviaturas', 'Mostrar/ocultar abreviaturas' ],
		pl:  [ 'Zwiń skróty', 'Rozwiń skróty', 'Brak skrótów', 'Pokaż/ukryj skróty' ],
		ru:  [ 'Свернуть сокращения', 'Развернуть сокращения', 'Нет сокращений', 'Показать/спрятать сокращения' ]
	},
	
	process: function () {
		$( document.body ).toggleClass( 'gadget-shorts-expanded' );
 
		mw.libs.shorts.expanded = !mw.libs.shorts.expanded;
		mw.libs.shorts.update();
		
		mw.storage.set( mw.libs.shorts.storageKey, mw.libs.shorts.expanded
			? 'expanded'
			: 'collapsed'
		);
	},
	
	update: function () {
		mw.libs.shorts.$caShorts.find( 'a' ).text( mw.msg( mw.libs.shorts.found
			? ( mw.libs.shorts.expanded ? 'shorts-collapse' : 'shorts-expand' )
			: 'shorts-none'
		) );
	}
};

if ( mw.config.get( 'wgNamespaceNumber' ) !== -1 ) {
	$.each(
		mw.libs.shorts.L10n[ mw.config.get( 'wgUserLanguage' ) ] ||
		mw.libs.shorts.L10n.en
	, function ( i, message ) {
		mw.messages.set( mw.libs.shorts.L10n.qqx[ i ], message );
	} );
	
	mw.libs.shorts.expanded = false;
	
	if ( mw.storage.get( mw.libs.shorts.storageKey ) === 'expanded' ) {
		mw.libs.shorts.process();
	}
	
	$( function () {
		mw.libs.shorts.$caShorts = $( mw.util.addPortletLink(
			'p-cactions',
			'#',
			mw.msg( mw.libs.shorts.expanded ? 'shorts-collapse' : 'shorts-expand' ),
			'ca-shorts',
			mw.msg( 'shorts-desc' ),
			'a',
			'#ca-history'
		) )
		.on( 'click', function () {
			mw.libs.shorts.found && mw.libs.shorts.process();
			return false;
		} );
	} );
	
	mw.hook( 'wikipage.content' ).add( function ( $content ) {
		var $elements = $content.find( '.short-container' );
		
		// [[Specjalna:Niezmienny link/4523134#Przecinki między kwalifikatorami]]
		$elements
			.not( '.short-no-comma-next' )
			.filter( function () {
				var $next = $( this ).next();
				
				// TemplateStyles
				if ( $next.is( 'style,link' ) ) {
					$next = $next.next();
				}
				
				return (
					$next.is( '.short-container:not(.short-no-comma-prev)' ) &&
					$( this.nextSibling ).text() === ' '
				);
			} )
			.addClass( 'short-comma' );
		
		mw.libs.shorts.found = ( $elements.length !== 0 );
	} );
}