Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/*Here is my user Global.css page,please don't put any of articles or discussion in it*/
/*Any JavaScript here will be loaded for my account on every page load*/
importArticles({
    type: 'script',
    articles: [
        'u:dev:ShowHide/code.js',
        'u:dev:DisplayTimer/code.js',
        'w:c:dev:ReferencePopups/code.js'
    ]
});
//********************************************
//Experimental javascript countdown timer (Splarka)
//Version:0.0.3
//  <span class="countdown" style="display:none;">
//  Only <span class="countdowndate">January 01 2007 00:00:00 PST</span> until New years.
//  </span>
//  <span class="nocountdown">Javascript disabled.</span>
function updatetimer(i) {
    var now = new Date();
    var then = timers[i].eventdate;
    var diff = count = Math.floor((then.getTime() - now.getTime()) / 1000);
 
    // catch bad date strings
    if (isNaN(diff)) {
        timers[i].firstChild.nodeValue = '** ' + timers[i].eventdate + ' **';
        return;
    }
 
    // determine plus/minus
    if (diff < 0) {
        diff = -diff;
        var tpm = ' ';
    } else {
        var tpm = ' ';
    }
 
 
    // calcuate the diff
    var left = (diff % 60) + ' seconds';
    diff = Math.floor(diff / 60);
    if (diff > 0) left = (diff % 60) + ' minutes ' + left;
    diff = Math.floor(diff / 60);
    if (diff > 0) left = (diff % 24) + ' hours ' + left;
    diff = Math.floor(diff / 24);
    if (diff > 0) left = diff + ' days ' + left;
    timers[i].firstChild.nodeValue = tpm + left;
 
    // a setInterval() is more efficient, but calling setTimeout()
    // makes errors break the script rather than infinitely recurse
    timeouts[i] = setTimeout('updatetimer(' + i + ')', 1000);
}
 
function checktimers() {
    //hide 'nocountdown' and show 'countdown'
    var nocountdowns = getElementsByClassName(document, 'span', 'nocountdown');
    for (var i in nocountdowns) nocountdowns[i].style.display = 'none';
    var countdowns = getElementsByClassName(document, 'span', 'countdown');
    for (var i in countdowns) countdowns[i].style.display = 'inline';
 
    //set up global objects timers and timeouts.
    timers = getElementsByClassName(document, 'span', 'countdowndate'); //global
    timeouts = new Array(); // generic holder for the timeouts, global
    if (timers.length === 0) return;
    for (var i in timers) {
        timers[i].eventdate = new Date(timers[i].firstChild.nodeValue);
        updatetimer(i); //start it up
    }
}
$(checktimers);
 
// **************************************************
//  - end -  Experimental javascript countdown timer
// **************************************************
/*Clearsandbox*/
var content = window.clearSandboxContent || '{{sandbox}}';
var summary = window.clearSandboxSummary || 'Cleanup';
 
if ( wgPageName.indexOf("/sandbox") >= 0 || wgPageName.indexOf("/Sandbox") >= 0 ) {
    $('.page-header__contribution-buttons .wds-list').append('<li><a id="clear-sandbox">Clear sandbox</a></li>');
}
 
$('#clear-sandbox').click(function(){
    $.post(mw.util.wikiScript( 'api' ), {
        format: 'json',
        action: 'edit',
        title: wgPageName,
        text: content,
        minor: false,
        bot: true,
        summary: summary,
        token: mw.user.tokens.get("editToken")
    }, function( data ) {
        if (!data.error) {
            console.log('Sandbox cleaned successfully.');
            location.reload(true);
        } else {
            alert('Cannot into cleanings!\n' + data.error.info);
            console.log('Failed:' + data.error.info);
        }
    });
});