MediaWiki:Gadget-UTCLiveClock.js
Теркалде: ОагӀув дӀаязъяь яьлча хьай браузера кэш цӀенъе езаш хила мег хьа, хьадаь дола хувцамаш гуш хургдолаш.
- Firefox / Safari: Shift яха лак тоӀаяь лоатта а еш кечалий панела тӀа Кердадаккха (обновить) яхача тоӀабе, е Ctrl+F5 яха лакаш тоӀае е Ctrl+R (Mac тӀа → ⌘+R)
- Google Chrome: Ctrl+Shift+R тоӀае (Mac тӀа → ⌘-Shift+R)
- 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 );
}
$( 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 ) {
e.preventDefault();
mw.loader.using( 'mediawiki.api', () => {
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' } );
} );
} );
} );
var $textNode = $link;
if ( $link.find( 'span:last' ).length ) {
$textNode = $link.find( 'span:last' );
}
showTime( $textNode );
$( '#pt-logout' ).addClass( 'utcdate-added' );
var interval = setInterval( function() {
try {
showTime( $textNode );
} catch(e) {
clearInterval( interval );
}
}, 1000 );
} );
}( mediaWiki, jQuery ) );