diff options
-rw-r--r-- | src/syncevo/configs/datatypes/11calendar-profile.xml | 2 | ||||
-rw-r--r-- | src/syncevo/configs/scripting/11calendar.xml | 10 |
2 files changed, 8 insertions, 4 deletions
diff --git a/src/syncevo/configs/datatypes/11calendar-profile.xml b/src/syncevo/configs/datatypes/11calendar-profile.xml index b4a95f0d..4236bb77 100644 --- a/src/syncevo/configs/datatypes/11calendar-profile.xml +++ b/src/syncevo/configs/datatypes/11calendar-profile.xml @@ -390,7 +390,7 @@ </property> <property name="EXDATE" values="list" suppressempty="yes" onlyformode="old" delayedparsing="1" valueseparator=";" altvalueseparator=","> - <value field="EXDATES"/> + <value field="EXDATES" conversion="autodate"/> <position field="EXDATES" repeat="array" increment="1" minshow="0"/> </property> diff --git a/src/syncevo/configs/scripting/11calendar.xml b/src/syncevo/configs/scripting/11calendar.xml index c2ea003c..069296e9 100644 --- a/src/syncevo/configs/scripting/11calendar.xml +++ b/src/syncevo/configs/scripting/11calendar.xml @@ -24,6 +24,9 @@ // - convert start to user zone (or floating) so it represents midnight DTSTART = CONVERTTOUSERZONE(DTSTART); MAKEALLDAY(DTSTART,DTEND,i); + if (RR_END != EMPTY) { + RR_END = DATEONLY(CONVERTTOUSERZONE(RR_END)); + } } else { // iCalendar 2.0 - only if DTSTART is a date-only value this really is an allday @@ -52,14 +55,15 @@ i=i+1; } } - // If vcalendar1.0, rrule is not secondly, minutely, or hourly, we strip time information - // and only reserve date information - if (ITEMDATATYPE()=="vCalendar10" && RR_FREQ!="h" && RR_FREQ!="m" && RR_FREQ!="s") { + // vCalendar1.0 has no VALUE=DATE EXDATEs, so convert back to that if + // the event is all-day. + if (ITEMDATATYPE()=="vCalendar10" && ISDATEONLY(DTSTART)) { timestamp exdate; i = 0; while (i<SIZE(EXDATES)) { exdate = EXDATES[i]; if (!ISDATEONLY(exdate)) { + exdate = CONVERTTOUSERZONE(exdate); EXDATES[i] = DATEONLY(exdate); } i=i+1; |