Confirmed users, Bureaucrats and Sysops emeriti
792
edits
No edit summary |
No edit summary |
||
Line 3: | Line 3: | ||
; How does one express this relationship with ics? | ; How does one express this relationship with ics? | ||
: RECURRENCE-ID as a DATE-TIME is used to refer to an explicit occurrence. It is used as the effective DTSTART of the occurrence. | : RECURRENCE-ID as a DATE-TIME is used to refer to an explicit occurrence. It is used as the effective DTSTART of the occurrence. DTSTART and UID should be the same across all occurrences of an item. | ||
<i>Some platforms, notably Outlook and Lotus Notes do strange things with this, including setting DTSTART and RECURRENCE-ID to be the same. The UID still refers to the parent, however, so we should rely on UID, and should just ignore DTSTART for occurrences.</i> | <i>Some platforms, notably Outlook and Lotus Notes do strange things with this, including setting DTSTART and RECURRENCE-ID to be the same. The UID still refers to the parent, however, so we should rely on UID, and should just ignore DTSTART for occurrences.</i> | ||
Line 15: | Line 14: | ||
: Need some ICS to test this, and see what they round trip as. | : Need some ICS to test this, and see what they round trip as. | ||
; Possible solutions | |||
: Non-Solution: When you need to update only one occurrence, duplicate the base item, add an exception to the base item for that date, and modify this item. This completely detaches the item from the base; if you update the base item, those updates won't propagate to the detached occurrence. | |||
: Other than that, we need to modify our back-end architecture in one of a few different ways: | |||
* Modify occurrence items to contain a reference to a base item, and a bitmask/list of properties that they explicitly declare. Any queries to properties not in that list would be passed up to the base item. | |||
* Modify occurence items to contain a reference to a base item, and have the base item contain a list of occurrences. When a property in the base item is changed, it looks at all its occurrences and checks to see if the occurrence value is the same as the old value that was just changed; if so, it updates it to the new value. | |||
; UI work necessary | |||
: We'll need some sort of "Do you want to modify all occurrences, or just this one?" dialog when modifying an occurrence. We'll also need a way to communicate what specifically was modified for that occurrence, perhaps through greying-out the non-modified bits or somesuch. |