MediaViki:Gadget-collapserefs.js

Vikipediya, azad ensiklopediya
Naviqasiyaya keç Axtarışa keç

Qeyd: Dəyişiklikləri yayımladıqdan sonra etdiyiniz dəyişikliklərin görünməsi üçün brauzerinizin keşinin təmizlənməsi lazım ola bilər.

  • Firefox / Safari: Reload düyməsinə basılı tutarkən Shift düyməsinə basın, və ya Ctrl+F5 və ya Ctrl+R (Mac üçün ⌘-R )
  • Google Chrome: Ctrl-Shift-R (Mac üçün ⌘-Shift-R)
  • Internet Explorer / Edge: Ctrl düyməsini basılı tutarkən Refresh düyməsinə basın, və ya sadəcə Ctrl+F5
  • Opera: Ctrl+F5.
if ( ( mw.config.get( 'wgIsArticle' ) &&
		[ 'edit', 'submit' ].indexOf( mw.config.get( 'wgAction' ) ) === -1
	) &&
	mw.util.getParamValue( 'printable' ) !== 'yes'
) {
	mw.hook( 'wikipage.content' ).add( function ( $content ) {
		var collapseState = mw.cookie.get( 'refcoll', '' ) === 'min' ? 'min' : 'max';
		var foundReflist;

		function findClassHolders( $reflists ) {
			var $classHolders = $();
			$reflists.each( function () {
				$classHolders = $classHolders.add( $( this ).children( '.mw-references-wrap' ).get( 0 ) || this );
			} );
			return $classHolders;
		}
		
		function changeState( e ) {
			var $collapseRefsLinks = $( '.collapseRefs-link' ),
				$classHolders = findClassHolders( $collapseRefsLinks.parent().next() );
			
			e.preventDefault();
			
			collapseState = collapseState === 'max' ? 'min' : 'max';
			if ( collapseState === 'max' ) {  // when maximized
				$collapseRefsLinks.text( '↑ Kompakt formada göstər' );
				$classHolders.removeClass( 'reflist-compact' );
			} else {                          // when minimized
				$collapseRefsLinks.text( '↓ Tam formada göstər' );
				$classHolders.addClass( 'reflist-compact' );
			}
			
			mw.cookie.set( 'refcoll', collapseState, {
				expires: 1000 * 60 * 60 * 24 * 90,
				path: '/',
				prefix: ''
			} );
		}
		
		$content.find( '.reflist, .references-small' ).each( function ( i, el ) {
			if ( el.clientHeight <=
				( ( el.style.maxHeight &&
						el.style.maxHeight.replace( 'px', '' ) ) ||
					// clientHeight меньше height, если есть горизонтальная полоса прокрутки
					el.style.height.replace( 'px', '' ) ||
					// 40 — значение (в em) max-height у .reflist-compact в [[MediaWiki:Gadget-collapserefs.css]]
					window.getComputedStyle( el ).fontSize.replace( 'px' , '' ) * 40
				) ||
				// Когда примечания уже обёрнуты в меньший по высоте блок (хотя такого не должно быть)
				 el.clientHeight > el.parentNode.clientHeight
			) {
				return;
			}
			foundReflist = true;
			
			if ( collapseState === 'min' ) {
				findClassHolders( $( el ) ).addClass( 'reflist-compact' );
			}
			$( '<div>' )
				.addClass( 'collapseRefs' +
					( $( el ).hasClass( 'not-references' ) ? ' collapseRefs-notRefs' : '' )
				)
				.append( $( '<a>' )
					.addClass( 'collapseRefs-link' )
					.attr( 'href', 'javascript:' )
					.attr( 'title', 'Daxilində qeydlər olan böyük bloklar azaldıla bilər' )
					.text( collapseState === 'max' ? '↑ Kompakt formada göstər' : '↓ Tam formada göstər' )
					.click( changeState )
				)
				.insertBefore( el );
		} );
		if ( !foundReflist ) {
			return;
		}
	} );
}