summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/syncevo/configs/datatypes/11calendar-profile.xml2
-rw-r--r--src/syncevo/configs/scripting/11calendar.xml10
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;