diff --git a/modules/default/calendar/README.md b/modules/default/calendar/README.md
index cfe4e2b8..00378263 100644
--- a/modules/default/calendar/README.md
+++ b/modules/default/calendar/README.md
@@ -112,6 +112,14 @@ The following properties can be configured:
+
+ displayRepeatingCountTitle |
+ Show count title for yearly repeating events (e.g. "X. Birthday", "X. Anniversary")
+
+ Possible values: true or false
+ Default value: false
+ |
+
@@ -154,5 +162,12 @@ config: {
Possible values: See Font Awsome website.
+
+ repeatingCountTitle |
+ The count title for yearly repating events in this calendar.
+ Example:
+ 'Birthday'
+ |
+
diff --git a/modules/default/calendar/calendar.js b/modules/default/calendar/calendar.js
index 5e315586..8bad8277 100644
--- a/modules/default/calendar/calendar.js
+++ b/modules/default/calendar/calendar.js
@@ -15,6 +15,8 @@ Module.register("calendar",{
maximumNumberOfDays: 365,
displaySymbol: true,
defaultSymbol: "calendar", // Fontawsome Symbol see http://fontawesome.io/cheatsheet/
+ displayRepeatingCountTitle: false,
+ defaultRepeatingCountTitle: '',
maxTitleLength: 25,
fetchInterval: 5 * 60 * 1000, // Update every 5 minutes.
animationSpeed: 2000,
@@ -113,8 +115,24 @@ Module.register("calendar",{
eventWrapper.appendChild(symbolWrapper);
}
- var titleWrapper = document.createElement("td");
- titleWrapper.innerHTML = this.titleTransform(event.title);
+ var titleWrapper = document.createElement("td"),
+ repeatingCountTitle = '';
+
+
+ if (this.config.displayRepeatingCountTitle) {
+
+ repeatingCountTitle = this.countTitleForUrl(event.url)
+
+ if(repeatingCountTitle != '') {
+
+ var thisYear = new Date().getFullYear(),
+ yearDiff = thisYear - event.firstYear;
+
+ repeatingCountTitle = ', '+ yearDiff + '. ' + repeatingCountTitle;
+ }
+ }
+
+ titleWrapper.innerHTML = this.titleTransform(event.title) + repeatingCountTitle;
titleWrapper.className = "title bright";
eventWrapper.appendChild(titleWrapper);
@@ -239,6 +257,23 @@ Module.register("calendar",{
return this.config.defaultSymbol;
},
+ /* countTitleForUrl(url)
+ * Retrieves the name for a specific url.
+ *
+ * argument url sting - Url to look for.
+ *
+ * return string - The Symbol
+ */
+ countTitleForUrl: function(url) {
+ for (var c in this.config.calendars) {
+ var calendar = this.config.calendars[c];
+ if (calendar.url === url && typeof calendar.repeatingCountTitle === "string") {
+ return calendar.repeatingCountTitle;
+ }
+ }
+
+ return this.config.defaultRepeatingCountTitle;
+ },
/* shorten(string, maxLength)
* Shortens a sting if it's longer than maxLenthg.
diff --git a/modules/default/calendar/calendarfetcher.js b/modules/default/calendar/calendarfetcher.js
index ac558e2f..4675f4c0 100644
--- a/modules/default/calendar/calendarfetcher.js
+++ b/modules/default/calendar/calendarfetcher.js
@@ -84,7 +84,8 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe
title: (typeof event.summary.val !== "undefined") ? event.summary.val : event.summary,
startDate: startDate.format("x"),
endDate: endDate.format("x"),
- fullDayEvent: isFullDayEvent(event)
+ fullDayEvent: isFullDayEvent(event),
+ firstYear: event.start.getFullYear()
});
}
}