MediaWiki:Gadget-ondemand-inputBoxNoPrefix.js

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
JS-код ниже относится к скрытому гаджету: Вынос префикса пространства имён вне поля ввода (в основном в Инкубаторе) (править описание). Он вызывается по умолчанию на страницах в категории Википедия:Страницы с гаджетом по требованию inputBoxNoPrefix.

После сохранения или недавних изменений очистите кэш браузера.

// Использование: см. [[Шаблон:Выполнить скрипт]]
// <div class="inputbox-no-prefix"><inputbox>...</div>
mw.loader.using( 'mediawiki.util', () => {
	mw.util.addCSS( '.inputbox-no-prefix span.prefix { margin-right: 0.5em; }' );
} );

mw.hook( 'wikipage.content' ).add( function( $content ) {
	if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) return;
	
	function restorePrefix(){
		var sp = $(this).find('span.prefix').remove()
		if( !sp.length ) return
		this.title.value = sp.text() + this.title.value
	}
	
	// Move prefix away from input
	$content.find( '.inputbox-no-prefix' )
		.find( 'form' )
		.each( function( i, frm ) {
			//in case user clicked 'back' browser button
			$( frm ).find( 'span.prefix' ).remove();
			var ttl = frm.title; // same as $(frm).find('input[name=title]')
			var prefix = /^.+[:\/]/.exec( ttl.defaultValue )
			if (!prefix ) return;
			prefix = prefix[0];
			$( '<span class="prefix" />' ).text( prefix ).insertBefore( ttl );
			ttl.value = ttl.value.substring( prefix.length );
			ttl.size -= prefix.length;
			$( frm ).submit( restorePrefix );
		} );
} );