diff --git a/modules/default/calendar/README.md b/modules/default/calendar/README.md
index 6854803a..385b917d 100644
--- a/modules/default/calendar/README.md
+++ b/modules/default/calendar/README.md
@@ -121,7 +121,13 @@ The following properties can be configured:
emptyCalendarText |
Text to display when there are no upcoming events.
- Default value: ''No upcoming events.'
+ Default value: 'No upcoming events.'
+ |
+
+
+ todayText |
+ Text to display when an event is planned for today.
+ Default value: 'Today'
|
diff --git a/modules/default/calendar/calendar.js b/modules/default/calendar/calendar.js
index 3365ea00..a9c54022 100644
--- a/modules/default/calendar/calendar.js
+++ b/modules/default/calendar/calendar.js
@@ -30,7 +30,10 @@ Module.register('calendar',{
'De verjaardag van ' : ''
},
loadingText: 'Loading events …',
- emptyCalendarText: 'No upcoming events.'
+ emptyCalendarText: 'No upcoming events.',
+
+ // TODO: It would be nice if there is a way to get this from the Moment.js locale.
+ todayText: 'Today'
},
// Define required scripts.
@@ -112,7 +115,8 @@ Module.register('calendar',{
eventWrapper.appendChild(titleWrapper);
var timeWrapper = document.createElement("td");
- timeWrapper.innerHTML = moment(event.startDate,'x').fromNow();
+ timeWrapper.innerHTML = (event.today) ? this.config.todayText : moment(event.startDate,'x').fromNow();
+ // timeWrapper.innerHTML = moment(event.startDate,'x').format('lll');
timeWrapper.className = "time light";
eventWrapper.appendChild(timeWrapper);
@@ -160,11 +164,13 @@ Module.register('calendar',{
*/
createEventList: function() {
var events = [];
+ var today = moment().startOf('day');
for (var c in this.calendarData) {
var calendar = this.calendarData[c];
for (var e in calendar) {
var event = calendar[e];
event.url = c;
+ event.today = event.startDate >= today && event.startDate < (today + 24 * 60 * 60 * 1000);
events.push(event);
}
}
diff --git a/modules/default/calendar/node_helper.js b/modules/default/calendar/node_helper.js
index 238bb84b..215f60ee 100644
--- a/modules/default/calendar/node_helper.js
+++ b/modules/default/calendar/node_helper.js
@@ -42,19 +42,35 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe
for (var e in data) {
var event = data[e];
+ var now = new Date();
var today = moment().startOf('day');
+ //console.log(event);
+
+ // FIXME:
+ // Ugly fix to solve the facebook birthday issue.
+ // Otherwise, the recurring events only show the birthday for next year.
+ var isFacebookBirthday = false;
+ if (typeof event.uid !== 'undefined') {
+ if (event.uid.indexOf('@facebook.com') !== -1) {
+ isFacebookBirthday = true;
+ }
+ }
+
if (event.type === 'VEVENT') {
var startDate = (event.start.length === 8) ? moment(event.start, 'YYYYMMDD') : moment(new Date(event.start));
+ if (event.start.length === 8) {
+ startDate = startDate.startOf('day');
+ }
- if (typeof event.rrule != 'undefined') {
+ if (typeof event.rrule != 'undefined' && !isFacebookBirthday) {
var rule = event.rrule;
// Check if the timeset is set to this current time.
// If so, the RRULE line does not contain any BYHOUR, BYMINUTE, BYSECOND params.
// This causes the times of the recurring event to be incorrect.
// By adjusting the timeset property, this issue is solved.
- var now = new Date();
+
if (rule.timeset[0].hour == now.getHours(),
rule.timeset[0].minute == now.getMinutes(),
@@ -65,23 +81,24 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe
rule.timeset[0].second = startDate.format('s');
}
- var dates = rule.between(new Date(), today.add(maximumNumberOfDays, 'days') , true, limitFunction);
- //console.log(dates);
+ var dates = rule.between(today, today.add(maximumNumberOfDays, 'days') , true, limitFunction);
+ console.log(dates);
for (var d in dates) {
startDate = moment(new Date(dates[d]));
newEvents.push({
title: (typeof event.summary.val !== 'undefined') ? event.summary.val : event.summary,
- startDate: startDate.format('x')
+ startDate: startDate.format('x'),
+ fullDayEvent: (event.start.length === 8)
+
});
}
} else {
// Single event.
-
-
- if (startDate > today && startDate <= today.add(maximumNumberOfDays, 'days')) {
+ if (startDate >= today && startDate <= today.add(maximumNumberOfDays, 'days')) {
newEvents.push({
title: (typeof event.summary.val !== 'undefined') ? event.summary.val : event.summary,
- startDate: startDate.format('x')
+ startDate: startDate.format('x'),
+ fullDayEvent: (event.start.length === 8)
});
}
}