MediaWiki:WMDE FR2016/Resources/CountCampaignDays.js

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.
var startDate = '{{{campaign-start-date}}}',
    endDate = '{{{campaign-end-date}}}';

function getCampaignDayString() {
	var daysSinceStart = getDaysSinceCampaignStart() + 1;
	return daysSinceStart + '.';
}

function dateObjectFromString( dateStr ) {
        var dateParts = dateStr.split( '-' );
        return new Date( dateParts[ 0 ], dateParts[ 1 ] - 1, dateParts[ 2 ] );
}

function getDaysSinceCampaignStart() {
	var startDay = dateObjectFromString( startDate );
	return Math.floor( new Date( new Date() - startDay ) / 1000 / 60 / 60 / 24 );
}

function getDaysUntilCampaignEnds() {
     	var endDay = dateObjectFromString( endDate ),
            dayDelta = endDay - new Date();
        if ( dayDelta > 0 ) {
            return Math.floor( dayDelta / 1000 / 60 / 60 / 24 );
        } else {
            return 0;
        }
}

function getCampaignDaySentence() {
        if ( getDaysUntilCampaignEnds() == 0 ) {
                return 'Heute ist der letzte Tag unserer Spendenkampagne.';
        } else if ( getDaysUntilCampaignEnds() < 7 ) {
                return 'Dies ist die letzte Woche unserer Spendenkampagne.';
        } else if ( getDaysSinceCampaignStart() > 0 ) {
		return 'Heute ist der ' + getCampaignDayString() + ' Tag unserer Spendenkampagne.';
	}
	return 'Heute beginnt unsere Spendenkampagne.';
}

function getEnglishCampaignDaySentence() {
        if ( getDaysUntilCampaignEnds() == 0 ) {
                return 'Today is the final day of our donation campaign.';
        } else if ( getDaysUntilCampaignEnds() < 7 ) {
                return 'This is the last week of our donation campaign.';
        }
	return '';
}