User blog:3primetime3/Adding World Clock to Mediawiki:Common.js

From Plants vs. Zombies Wiki
Jump to navigation Jump to search

Hello everyone!

I see that user:Wildoneshelper from CCSW has implemented the World Clock feature on the wiki about a year ago so users can see what time it is on Wikia Community Central (UTC time).

The following is the code that should be copied and pasted on to Mediawiki:Common.js if it will be implemented. (It is much easier to click on "Edit this Blog post" and take the source that way for Admins). What do you guys think? Is this a good idea?

Note: In order to be able to vote on mainspace related voting threads, you need at least 25 mainspace edits and you must have been on the wiki for two weeks. For any other topic, you must have been on the wiki for four weeks. If you do not follow these rules your vote will be disqualified. If you do it repeatedly, you will be given a forum warning. Thank you.
To show your stance, please type {{Support|reason}}, {{Neutral|reason}}, or {{Oppose|reason}}. The reason must be stated behind the | in order to not be disqualified.


See the following wiki for an example of the world clock. It is located at the very top of any page. www.candy-crush-saga.wikia.com



importScript('MediaWiki:Common.js/usertags.js');

importScriptPage('ShowHide/code.js', 'dev'); AjaxRCRefreshText = 'Auto-refresh'; AjaxRCRefreshHoverText = 'Auto-refreshes the page.'; ajaxPages = ["Special:RecentChanges", "Special:WikiActivity"]; importScriptPage('AjaxRC/code.js', 'dev'); importScriptPage('AjaxBatchDelete/code.js', 'dev');

importScriptPage('FastDelete/code.js', 'dev');

var fdButtons = [];

fdButtons[fdButtons.length] = {

   'summary': 'spam',
       'label': 'spam'

}; fdButtons[fdButtons.length] = {

   'summary': 'vandalism',
       'label': 'vandal'

}; importScriptPage('View_Source/code.js', 'dev');

importScriptPage('ListAdmins/code.js', 'dev');

importArticles({

       type: 'script',
       articles: [
               'w:c:dev:SignatureCheck/code.js',
       ]

});

importArticles({

   type: 'script',
   articles: [
       'u:dev:SearchSuggest/code.js'
   ]

});

// http://dev.wikia.com/wiki/RevealAnonIP window.RevealAnonIP = {

   permissions : ['rollback', 'sysop', 'bureaucrat', 'staff']

};


importArticles({

   type: "script",
   articles: [
       "w:c:dev:RevealAnonIP/code.js"
   ]

});

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
   }

} addOnloadHook(checktimers);

function liveClock() {

   var link = wgServer + wgScriptPath + '/index.php?title=' + encodeURIComponent(wgPageName) + '&action=purge';
   if (skin == 'monobook') {

$('#p-personal .pBody ul').append('

  • <a href="' + link + '"></a>
  • '); } else if (skin == 'oasis') { $('#WikiaPage #WikiHeader div.buttons').prepend('

    <a href="' + link + '"></a>

    ');

       }
       $('#utcdate').css({
           fontSize: 'larger',
           fontWeight: 'bolder',
           textTransform: 'none'
       });
    
       //showTime();        
    

    } addOnloadHook(liveClock);

    //

    // ============================================================
    // displayTimer
    // ============================================================
     
    var refreshDate;
     
    function addDate() {
        var UTCDate = ((new Date()).toUTCString()).replace("GMT", "(UTC)");
        $('#showdate').empty().append('<span style="font-weight: bold; text-transform: none;"><a title="Purge the server cache and update the contents of this page." href="' + wgArticlePath.replace('$1', wgPageName.replace(/ /g, '_')) + '?action=purge">' + UTCDate.substring(5) + '</a></span>');
        window.clearTimeout(refreshDate);
        refreshDate = window.setTimeout(addDate, 1000);
    }
     
    $(document).ready(function () {
        if (skin == 'oasis') $('<li id="displayTimer"><span id="showdate"></span></li>').appendTo('#GlobalNavigation');
        else $('#p-personal ul').prepend('<li><span id="showdate"></span></li>');
        addDate();
        refreshDate = window.setTimeout(addDate, 5000);
        $('#displayTimer').css({
            'font-size': "12px"
        });
    });
    //

    function importScriptPage (page, server) { var url = '/index.php?title=' + encodeURIComponent(page.replace(/ /g,'_')).replace('%2F','/').replace('%3A',':') + '&action=raw&ctype=text/javascript'; if (typeof server == "string") url = (server.indexOf('://') == -1)?'http://' + server + '.wikia.com' + url:server + url; return importScriptURI(url); }

    /* Replaces User with the name of the user browsing the page.

      Requires copying Template:USERNAME. */
    
    

    $(function() {

       if (window.disableUsernameReplace || mw.config.get('wgUserName') === null) return;
       $('span.insertusername').html(mw.config.get('wgUserName'));
    

    });

    /* End of the User replacement */