This is another result of #170, please follow up there.
No Calendarsync for inifinite events
if i add on my phone a event which happens for example every monday 18:15-19:15 it is shown correctly on the phone. But it gets not synced to owncloud.
Other direction seems to work without problem, so if i add an infinite event on my owncloud server it gets directly pushed to the phone.
This may be
- an Owncloud Web interface bug (because with other Web clients like MyKolab.com it works)
- an Android bug (because it creates “special” RRULE values that don’t make sense)
- a bug in iCal4j (the library that parses/creates iCal files for DAVdroid)
- a DAVdroid bug
Could you please try and see if it works with other clients (i.e. if the event appears when you sync with the calendar)?
I have found the bug: DAVdroid (or iCal4j or Android) sends currupt DTEND-Fields to Owncloud: https://gist.github.com/magcks/7514466
It says that the event ends at “01.01.1970”. Owncloud and KOrganizer does not show these invalid events. If I sync this invalid recurring event to another Android device it shows these events but they have no end time.
The crazy thing is that the DTEND is correct on normal events.
If I correct the DTEND-Field on the Owncloud-MySQL database it works correctly, so the RRULE is correct.
As you can see here (http://developer.android.com/reference/android/provider/CalendarContract.Events.html) DTEND is not set on recurring events. We need to send the DURATION field.
But there is the next problem: Android (4.4) provides an invalid DURATION format. If I create a an 1h-Event DURATION is “P3600S” but it has to be “PT3600S” (see http://www.kanzaki.com/docs/ical/duration-t.html).
Can you confirm this?
Should have been fixed with 0.4.3 by adding DURATION support, please test.
Thanks! It works now if I sync events from my phone to ownCloud, but not if I sync from ownCloud to my phone.
If I sync from ownCloud to my Phone, the event has no end date.
This is an recurring event created by ownCloud: https://gist.github.com/magcks/7634535
Probably Android doesn’t understand the DTEND field!?
We forgot to write received DURATIONs into the database…
I have now implemented a logic that provides
- DTEND for single-time events (if only DURATION is given in iCal, DTEND is calculated by iCal4j)
- DURATION for recurring events (if only DTEND is given in iCal, DURATION is calculated by iCal4j)
to Android (as documented there).
Now end time should work for all non-recurring and recurring events, regardless of whether the .ics contains DTEND or DURATION.
Please test with master or DAVdroid 0.4.4.
There is no DAVdroid 0.4.4 release: https://github.com/rfc2822/davdroid/releases
I know. I haven’t published it yet. please test with 0.4.4 as soon as it’s available.
I built it myself and tested it. I’ve found another error. I tested the following cases:
Create an event at ownCloud, sync it to the phone, edit it at the phone and sync it back: works
Create an event at my phone, sync it to ownCloud, edit it there and sync it back to my phone: works
But: If I create an Event at KOrganizer it will be synced correctly to ownCloud and my phone. If I edit it at my phone and sync it back to ownCloud nothing happens. There is still the old ical generated from KOrganizer.
Edit: It doesn’t work on non-recurring events too, I will open up a new issue: #103.