MediaWiki:Gadget-fix-section-hash.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.
var config = mw.config.get( [
		'wgAction',
		'wgPageName',
		'wgTitle'
	] );

if ( config.wgAction === 'edit' ) {
	$.when(
		mw.loader.using( 'jquery.textSelection' ),
		$.ready
	).done( function () {
		var m,
			escaped = mw.util.escapeRegExp( config.wgTitle ),
			re = new RegExp( '^\\/\\* ((?:\\{{2}(?:ja|ko|zh)\\|(' + escaped + ')\\}{2}|(' + escaped + '))) \\((\\{{2}(.+?)(?:\\|[^}]*)?\\}{2})\\) \\*\\/ $' ),
			$summary = $( '#wpSummary' ),
			summary = $summary.textSelection( 'getContents' );
		
		if ( summary !== '' && ( m = summary.match( re ) ) !== null ) {
			summary = summary.replace( m[ 1 ], m[ 2 ] || m[ 3 ] ).replace( m[ 4 ], m[ 5 ] );
			$summary.textSelection( 'setContents', summary );
			$summary.data( 'origtext', summary ); // mediawiki.action.edit.editWarning.js
		}
	} );
} else if ( config.wgAction === 'view' ) {
	mw.hook( 'postEdit' ).add( function () {
		var m, replaced,
			escaped = mw.util.escapeRegExp( config.wgPageName ),
			re = new RegExp( '^\\#((?:\\{{2}(?:ja|ko|zh)\\|(' + escaped + ')\\}{2}|(' + escaped + ')))_\\((\\{{2}(.+?)(?:\\|[^}]*)?\\}{2})\\)$' ),
			decoded = decodeURIComponent( location.hash );
		
		if ( decoded !== '' && ( m = decoded.match( re ) ) !== null ) {
			replaced = decoded.replace( m[ 1 ], m[ 2 ] || m[ 3 ] ).replace( m[ 4 ], m[ 5 ] );
			history.replaceState( null, '', config.wgPageName + replaced );
			location.href = replaced; // 'href' instead of 'hash' because of webkit
		}
	} );
}