MediaWiki:Gadget-UTCLiveClock.js

Википедиясто материал - аорев содамкундосто

Тешкставкс: Паряк, сёрмадовксонть лисемадо мейле полавтоматнень неемга тонеть сави ванькскавтомс эсь браузерэнь кэш-паргонть.

  • Firefox / Safari: Клавишанть кирдемстэ Shift, лепштяк кедьёнксонь панеленть лангс Одкстомтомс эли лепштяк Ctrl+F5 эли Ctrl+R (⌘+R на Mac)
  • Google Chrome: Лепштяк Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Internet Explorer / Edge: Кирдть Ctrl, лепштяк Одкстомтомс эли лепштяк Ctrl+F5
  • Opera: Лепштяк Ctrl+F5.
/**
 * Глобальная версия этого гаджета расположена на [[mw:MediaWiki:Gadget-UTCLiveClock.js]],
 * туда можно заглядывать за обновлениями (но там на 12 октября 2017 года не было некоторых
 * возможностей, которые есть у нас, и там код рассчитан на загрузку без зависимостей и стилей).
 */
( function( mw, $ ) {
	function padWithZeroes( num ) {
		// Отбить число нулями. Число должно быть натуральным, где 0 <= num < 100.
		return num < 10 ? '0' + num.toString() : num.toString(); 
	}

	function showTime( $target ) {
		var now = new Date(),
			hh = now.getUTCHours(),
			mm = now.getUTCMinutes(),
			ss = now.getUTCSeconds(),
			time = padWithZeroes( hh ) + ':' + padWithZeroes( mm ) + ':' + padWithZeroes( ss );
		$target.text( time );
	}

	runAsEarlyAsPossible( function liveClock() {
		var node = mw.util.addPortletLink(
			'p-personal',
			mw.util.getUrl( null, { action: 'purge' } ),
			'',
			'utcdate'
		);
		if ( !node ) return;
		
		var $link = $( node ).find( 'a:first' );
		$link.on( 'click', function ( e ) {
			new mw.Api().post( {
				action: 'purge',
				titles: mw.config.get( 'wgPageName' )
			} ).then( function () {
				var url = mw.util.getUrl();
				if ( e.ctrlKey ) {
					if ( !window.open( url ) ) {
						location.assign( url );
					}
				} else {
					location.assign( url );
				}
			}, function () {
				mw.notify( 'Не удалось очистить кэш.', { type: 'error' } );
			} );
			e.preventDefault();
		} );

		showTime( $link );
		$( '#pt-logout' ).addClass( 'utcdate-added' );
		var interval = setInterval( function() {
			try {
				showTime( $link );
			} catch(e) {
				clearInterval( interval );
			}
		}, 1000 );
	}, $( '#pt-logout' ) );
}( mediaWiki, jQuery ) );