diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cd76213..873311aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ _This release is scheduled to be released on 2022-10-01._ - Respect rss ttl provided by newsfeed (#2883). - Fix multi day calendar events always presented as "(1/X)" instead of the amount of days the event has progressed. - Fix weatherbit provider to use type config value instead of endpoint +- Fix calendar events which DO NOT specify rrule byday adjusted incorrectly #2885 ## [2.20.0] - 2022-07-02 diff --git a/modules/default/calendar/calendarutils.js b/modules/default/calendar/calendarutils.js index 66176bbc..20c8ff0a 100644 --- a/modules/default/calendar/calendarutils.js +++ b/modules/default/calendar/calendarutils.js @@ -333,9 +333,12 @@ const CalendarUtils = { // If the offset is negative (east of GMT), where the problem is if (dateoffset < 0) { if (dh < Math.abs(dateoffset / 60)) { + // if the rrule byweekday WAS explicitly set , correct it // reduce the time by the offset - // Apply the correction to the date/time to get it UTC relative - date = new Date(date.getTime() - Math.abs(24 * 60) * 60000); + if (curEvent.rrule.origOptions.byweekday !== undefined) { + // Apply the correction to the date/time to get it UTC relative + date = new Date(date.getTime() - Math.abs(24 * 60) * 60000); + } // the duration was calculated way back at the top before we could correct the start time.. // fix it for this event entry //duration = 24 * 60 * 60 * 1000; @@ -346,8 +349,11 @@ const CalendarUtils = { //if (event.start.tz === moment.tz.guess()) { // if the date hour is less than the offset if (24 - dh <= Math.abs(dateoffset / 60)) { - // apply the correction to the date/time back to right day - date = new Date(date.getTime() + Math.abs(24 * 60) * 60000); + // if the rrule byweekday WAS explicitly set , correct it + if (curEvent.rrule.origOptions.byweekday !== undefined) { + // apply the correction to the date/time back to right day + date = new Date(date.getTime() + Math.abs(24 * 60) * 60000); + } // the duration was calculated way back at the top before we could correct the start time.. // fix it for this event entry //duration = 24 * 60 * 60 * 1000; @@ -361,9 +367,12 @@ const CalendarUtils = { if (dateoffset < 0) { // if the date hour is less than the offset if (dh <= Math.abs(dateoffset / 60)) { - // Reduce the time by the offset: - // Apply the correction to the date/time to get it UTC relative - date = new Date(date.getTime() - Math.abs(24 * 60) * 60000); + // if the rrule byweekday WAS explicitly set , correct it + if (curEvent.rrule.origOptions.byweekday !== undefined) { + // Reduce the time by t: + // Apply the correction to the date/time to get it UTC relative + date = new Date(date.getTime() - Math.abs(24 * 60) * 60000); + } // the duration was calculated way back at the top before we could correct the start time.. // fix it for this event entry //duration = 24 * 60 * 60 * 1000; @@ -374,8 +383,11 @@ const CalendarUtils = { //if (event.start.tz === moment.tz.guess()) { // if the date hour is less than the offset if (24 - dh <= Math.abs(dateoffset / 60)) { - // apply the correction to the date/time back to right day - date = new Date(date.getTime() + Math.abs(24 * 60) * 60000); + // if the rrule byweekday WAS explicitly set , correct it + if (curEvent.rrule.origOptions.byweekday !== undefined) { + // apply the correction to the date/time back to right day + date = new Date(date.getTime() + Math.abs(24 * 60) * 60000); + } // the duration was calculated way back at the top before we could correct the start time.. // fix it for this event entry //duration = 24 * 60 * 60 * 1000;