MediaWiki:Gadget-UTCLiveClock.js — различия между версиями
Материал из CelestePedia
SoulTrain (обсуждение | вклад) |
SoulTrain (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| − | ( | + | /** |
| − | + | * Глобальная версия этого гаджета расположена на [[mw:MediaWiki:Gadget-UTCLiveClock.js]], | |
| − | function | + | * туда можно заглядывать за обновлениями (но там на 12 октября 2017 года не было некоторых |
| − | + | * возможностей, которые есть у нас, и там код рассчитан на загрузку без зависимостей и стилей). | |
| − | + | */ | |
| − | return; | + | ( function( mw, $ ) { |
| + | function padWithZeroes( num ) { | ||
| + | // Отбить число нулями. Число должно быть натуральным, где 0 <= num < 100. | ||
| + | return num < 10 ? '0' + num.toString() : num.toString(); | ||
} | } | ||
| − | + | ||
| − | var now = new Date() | + | function showTime( $target ) { |
| − | + | var now = new Date(), | |
| − | + | hh = now.getUTCHours(), | |
| − | + | mm = now.getUTCMinutes(), | |
| − | + | ss = now.getUTCSeconds(), | |
| − | $target | + | time = padWithZeroes( hh ) + ':' + padWithZeroes( mm ) + ':' + padWithZeroes( ss ); |
| + | $target.text( time ); | ||
} | } | ||
| − | var | + | |
| − | + | runAsEarlyAsPossible( function liveClock() { | |
| − | + | var node = mw.util.addPortletLink( | |
| − | + | 'p-personal', | |
| − | + | mw.util.getUrl( null, { action: 'purge' } ), | |
| − | + | '', | |
| − | } | + | 'utcdate' |
| − | + | ); | |
| − | function | + | 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 ) ); | ||
Версия 15:59, 22 апреля 2018
/**
* Глобальная версия этого гаджета расположена на [[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 ) );