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() }); } }