Calendar: Ausnahmen bei Serienterminen

Begonnen von Olaf, 28 Januar 2013, 10:57:20

Vorheriges Thema - Nächstes Thema

Olaf

Hallo Boris,

Soweit ich das Calendar-Modul verstanden habe basiert es darauf, daß es für jeden Termin eine eindeutige uid gibt.
Bei einem Serientermin (z.B. täglich 7:00 - 8:00) habe ich eine Ausnahme angegeben (z.B. 8:00-9:00). In der Datei Basic.ics gibt es dann zwei Termine mit der gleichen uid: Den Serientermin ganz normal definiert und einen weiteren:

BEGIN:VEVENT
DTSTART;TZID=Europe/Berlin:20130129T080000
DTEND;TZID=Europe/Berlin:20130129T090000
DTSTAMP:20130128T090901Z
UID:74rov80603orrmlb0korlivlsc @google.com
RECURRENCE-ID;TZID=Europe/Berlin:20130129T070000
CREATED:20130128T090830Z
DESCRIPTION:
LAST-MODIFIED:20130128T090852Z
LOCATION:
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:Test
TRANSP:OPAQUE
END:VEVENT

BEGIN:VEVENT
DTSTART;TZID=Europe/Berlin:20130128T070000
DTEND;TZID=Europe/Berlin:20130128T080000
RRULE:FREQ=DAILY;COUNT=5
DTSTAMP:20130128T090901Z
UID:74rov80603orrmlb0korlivlsc @google.com
CREATED:20130128T090830Z
DESCRIPTION:
LAST-MODIFIED:20130128T090830Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Test
TRANSP:OPAQUE
END:VEVENT

In dem Attribut RECURRENCE-ID ist zu erkennen für welchen Termin die Ausnahme gilt. Ich bräuchte einen Hinweis, wo man hier am besten ins Modul eingreift.
Den geringsten Aufwand, denke ich, hat man, wenn man nach dem parsen des ical (Ical::Entry) das array @{$ical->{entries}} auf doppelte uid durchsucht und dann dem Serientermin eine Eigenschaft, z.b. RECURRENCE-ID mit neuen DTSTART und DTEND zuweist. Im sub fromVEvent muß man dann noch für die Berechnung des nächsten Eintreffens des Serientermins die Differenz des Serientermins zu der Ausnahme berücksichtigen.

Für weitere/bessere Ideen bin ich offen.

Gruß,
Olaf