MediaWiki:Gadget-UTCLiveClock.js — различия между версиями
Материал из CelestePedia
SoulTrain (обсуждение | вклад) |
SoulTrain (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
/** | /** | ||
| − | * | + | * Это гаджет из Русской Википедии, список авторов см. на соответствующей странице. |
| − | + | * Глобальная версия этого гаджета расположена на [[mw:MediaWiki:Gadget-UTCLiveClock.js]], | |
| − | + | * туда можно заглядывать за обновлениями (но там на 12 октября 2017 года не было некоторых | |
| − | + | * возможностей, которые есть в РВП и там код рассчитан на загрузку без зависимостей и стилей). | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | * | ||
| − | * | ||
| − | * | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
*/ | */ | ||
| − | + | ( function( mw, $ ) { | |
| − | + | function padWithZeroes( num ) { | |
| − | + | // Отбить число нулями. Число должно быть натуральным, где 0 <= num < 100. | |
| − | function padWithZeroes( num ) { | + | 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 ) ); | ||
Версия 16:01, 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 ) );