MediaWiki:Monobook.js
From Guild Wars Wiki 中文站
Jump to navigationJump to search
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/** Display a clock. **/
/** Spliced from [[mw:MediaWiki:Gadget-LocalLiveClock.js]] and [[mw:MediaWiki:Gadget-UTCLiveClock.js]] **/
function displayTimer() {
mw.loader.using( ['mediawiki.util', 'mediawiki.api'] ).then( function () {
var $target;
function padWithZeroes( num ) {
// Pad a number with zeroes. The number must be an integer where
// 0 <= num < 100.
return num < 10 ? '0' + num.toString() : num.toString();
}
function showTime( $target ) {
var now = new Date();
// Set the Local time.
var hh = now.getHours();
var mm = now.getMinutes();
var ss = now.getSeconds();
var time = padWithZeroes( hh ) + ':' + padWithZeroes( mm ) + ':' + padWithZeroes( ss );
// Set the UTC time.
var uhh = now.getUTCHours();
var umm = now.getUTCMinutes();
var uss = now.getUTCSeconds();
var utime = padWithZeroes( uhh ) + ':' + padWithZeroes( umm ) + ':' + padWithZeroes( uss );
var string;
if (hh == uhh) {
string = time;
} else {
string = time + ' (' + utime + ' UTC)';
}
// Write to page.
$target.text( string );
// Schedule the next time change.
var ms = now.getUTCMilliseconds();
setTimeout( function () {
showTime( $target );
}, 1100 - ms );
}
function liveClock() {
// Set CSS styles.
mw.util.addCSS( '#utcdate a { font-weight:bolder; text-transform:none; }' );
// Add the portlet link.
var node = mw.util.addPortletLink(
'p-personal',
mw.util.getUrl( null, { action: 'purge' } ),
'',
'utcdate',
null,
null,
'#pt-userpage, #pt-anonuserpage'
);
if ( !node ) {
return;
}
// Purge the page when the clock is clicked.
// If logged in, avoid the purge confirmation screen.
if ( $('#pt-userpage').length > 0 ) {
$( node ).on( 'click', function ( e ) {
new mw.Api().post( { action: 'purge', titles: mw.config.get( 'wgPageName' ) } ).then( function () {
location.reload();
}, function () {
mw.notify( 'Purge failed', { type: 'error' } );
} );
e.preventDefault();
} );
}
// Show the clock.
showTime( $( node ).find( 'a:first' ) );
}
$( liveClock );
} );
}
displayTimer();