Author Topic: External Calendar (extcal) module  (Read 2206 times)

Offline Martin Hecht

  • Betatester
  • **
  • Posts: 535
  • Gender: Male
    • meine Homepage
Re: External Calendar (extcal) module
« Reply #25 on: January 04, 2017, 03:23:26 PM »
Hi Maik,

Ich habe noch ein anderes Problem. Ich habe 2 Termine:
1. 27.01.2017, 2200 UTC bis 29.01.2017, 2200 UTC
2. 28.01.2017, 1200, UTC bis 29.01.2017, 1200 UTC

Im Modul wird es aber so angezeigt:
1. Datum: 27.01.2017 - 29.01.2017
    UTC: -
2. Datum: 28.01.2017 - 29.01.2017
    UTC: -

es fehlt also die Uhrzeit.

Kann es sein, dass die Termine beim Erstellen automatisch als ganztägiges Event angelegt wurden? Das ist ein separates Flag im ics-Format. Das würde das Verhalten nämlich erklären. Dadurch, dass das Enddatum an einem anderen anderen Tag liegt, wird das Enddatum mit angezeigt, und wenn zusätzlich das Event als ganztägig markiert ist, werden die Uhrzeiten ausgeblendet.

viele Grüße, Martin

Offline sstvmaster

  • Posts: 8
Re: External Calendar (extcal) module
« Reply #26 on: January 04, 2017, 06:21:51 PM »
Hi Martin,

nein kein ganztägiges Event, siehe Bild. Oder das Modul interpretiert den 28. als ganztags Event.



Die Termine werden mit Thunderbird erzeugt. Die ICs liegt auf meinem Server.

mfg

Maik

Offline sstvmaster

  • Posts: 8
Re: External Calendar (extcal) module
« Reply #27 on: January 04, 2017, 06:32:59 PM »
So hab noch mal etwas gespielt. Alle Termine die zwischen start und ende größer als 24 Stunden sind werden mit "-" angezeigt.
Das sollte aber so nicht sein.

Termin 22:00 -> 21:00 am nächsten Tag:

BEGIN:VEVENT
CREATED:20170104T172417Z
LAST-MODIFIED:20170104T172611Z
DTSTAMP:20170104T172611Z
UID:aacbcbe0-47e7-4721-8f9a-c3b3282661f5
SUMMARY:test
CATEGORIES:CW
DTSTART;TZID=Europe/Berlin:20170120T220000
DTEND;TZID=Europe/Berlin:20170121T210000
TRANSP:OPAQUE
SEQUENCE:1
X-MOZ-GENERATION:1
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER;VALUE=DURATION:-P1D
DESCRIPTION:Mozilla Standardbeschreibun g
END:VALARM
END:VEVENT

Termin 22:00 -> 22:00 am nächsten Tag:

BEGIN:VEVENT
CREATED:20170104T172417Z
LAST-MODIFIED:20170104T173131Z
DTSTAMP:20170104T173131Z
UID:aacbcbe0-47e7-4721-8f9a-c3b3282661f5
SUMMARY:test
CATEGORIES:CW
DTSTART;TZID=Europe/Berlin:20170120T220000
DTEND;TZID=Europe/Berlin:20170121T220000
TRANSP:OPAQUE
SEQUENCE:2
X-MOZ-GENERATION:2
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER;VALUE=DURATION:-P1D
DESCRIPTION:Mozilla Standardbeschreibun g
END:VALARM
END:VEVENT

mfg

Maik

Offline sstvmaster

  • Posts: 8
Re: External Calendar (extcal) module
« Reply #28 on: January 04, 2017, 07:19:41 PM »
Hi Martin,

sag mir mal bitte in welcher Datei die Zeitprüfung ist da kann ich selbst mal schauen. Ist zwar schon 15 Jahre her wo ich PHP und MySQL programmiert habe, aber vielleicht klappt es ja noch damit.

mfg

Maik

Offline Martin Hecht

  • Betatester
  • **
  • Posts: 535
  • Gender: Male
    • meine Homepage
Re: External Calendar (extcal) module
« Reply #29 on: January 05, 2017, 11:53:28 AM »
die view.php fragt den Eintrag allDay aus dem geparsten Event ab. Der Parser SG_iCal verwendet dafür die Funktion isWholeDay, und die ist offenbar buggy. Die fragt nämlich nicht das Flag aus dem ics-Eintrag ab, sondern meint selbst schlauer zu sein und gibt immer dann true zurück, wenn die Dauer exakt 24h oder ein Vielfaches davon ist. Argh!

Ein Workaround hierfür analog zum "Midnight-Fix" wäre, bei der Dauer eine Sekunde abzuziehen, das Event also nicht bis 22 Uhr am nächsten Tag sondern nur bis 21:59:59 gehen zu lassen. Ein Fix im Modul oder im Parser kommt dann noch.
Die Idee: statt der isWholeDay-Funktion sollte sowas wie $entry["data"]["x-microsoft-cdo-alldayevent"] abgefragt werden, mit ein paar Absicherungen drum herum.

CATEGORIES sind rudimentär in der angehängten Version drin. Die Ausgabe ist momentan noch roh, also ohne Übersetzung der Standardkategorien in die momentan gesetzte Sprache und vermutlich gehen auch nicht mehrere Kategorien gleichzeitig für ein Event. Das kann man in einer folgenden Version dann noch verfeinern.

Offline sstvmaster

  • Posts: 8
Re: External Calendar (extcal) module
« Reply #30 on: January 05, 2017, 02:33:39 PM »
Danke Dir funktioniert!

Thunderbird legt folgenden Eintrag in der ICS Datei für ganztägig an:

Termin einen ganzen Tag!

BEGIN:VEVENT
CREATED:20170104T172417Z
LAST-MODIFIED:20170104T173131Z
DTSTAMP:20170104T173131Z
UID:aacbcbe0-47e7-4721-8f9a-c3b3282661f5
SUMMARY:test
CATEGORIES:CW
DTSTART;TZID=Europe/Berlin:20170120  <--- ohne Zeit
DTEND;TZID=Europe/Berlin:20170120  <--- dito
TRANSP:OPAQUE
SEQUENCE:2
X-MOZ-GENERATION:2
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER;VALUE=DURATION:-P1D
DESCRIPTION:Mozilla Standardbeschreibun g
END:VALARM
END:VEVENT

das gleiche dann für mehrere Tage ohne Zeit.

Danke Maik

Offline sstvmaster

  • Posts: 8
Re: External Calendar (extcal) module
« Reply #31 on: January 05, 2017, 02:49:04 PM »
Achso,

ich habe jetzt noch nicht geschaut wie genau das allday im ics format definiert ist, aber ich würde es so machen:

prüfen ob in DTSTART und DTEND das "T" enthalten ist. Wenn nicht dann ist es ein allday Ereignis.
Wenn das "T" enthalten ist string zerlegen und anzeigen.

---
DTSTART;TZID=Europe/Berlin:20170120T220000
DTEND;TZID=Europe/Berlin:20170121T230000
---

Zumindest macht Thunderbird das so.

mfg

Maik

Offline Martin Hecht

  • Betatester
  • **
  • Posts: 535
  • Gender: Male
    • meine Homepage
Update: External Calendar (extcal) module
« Reply #32 on: January 23, 2017, 11:59:27 PM »
Here is an updated version of extcal with the following fixes and feature improvements:
 - Repaired the upgrade script which was triggering errors in the log for a long time now
 - Support categories field, and default categories are translated into the current frontend language now
 - A Fix for events lasting exactly 24 hours but not starting at midnight: they were treated as whole-day appointments by mistake in previous versions
 
regards
Martin

Offline Alex

  • Posts: 11
  • Gender: Male
Problem bei Einbindung contact_birthdays
« Reply #33 on: April 15, 2017, 04:05:23 PM »
Hallo Martin,

bei Einbindung contact_birthdays (Owncloud) werden die Geburtstage des aktuellen Monats nicht angezeigt.

Wenn man starttime als 1.Januar setzt
Code: [Select]
$starttime=date("20170101",strtotime("+$time_offset seconds"));
werden Geburtstage aus Januar, Februar, März angezeigt, April-Geburtstage nicht, ab Mai wieder angezeigt.

Offline Martin Hecht

  • Betatester
  • **
  • Posts: 535
  • Gender: Male
    • meine Homepage
Re: External Calendar (extcal) module
« Reply #34 on: April 18, 2017, 01:35:03 PM »
Hallo Alex,

bei Einbindung contact_birthdays (Owncloud) werden die Geburtstage des aktuellen Monats nicht angezeigt.

Wenn man starttime als 1.Januar setzt
Code: [Select]
$starttime=date("20170101",strtotime("+$time_offset seconds"));
werden Geburtstage aus Januar, Februar, März angezeigt, April-Geburtstage nicht, ab Mai wieder angezeigt.

Das könnte mit der Übersetzung in  extcal_user_process _placeholders in user_functions.php zusammenhängen.
Dort darf für "April" (Englisch) kein Key hinterlegt sein, der  möglicherweise ins Leere zeigt. Der String "April" wird schlicht nicht ersetzt, da er im Deutschen genau gleich lautet. Kannst du das mal bei deiner Installation kontrollieren?

viele Grüße,
Martin

Offline Alex

  • Posts: 11
  • Gender: Male
Re: External Calendar (extcal) module
« Reply #35 on: April 18, 2017, 04:43:51 PM »
Danke für den Hinweis.

Habe den Fehler gefunden:
Neben der neuen user_functions.defa ult.php war da eine alte user_functions.php von März 2016.
Nach dem Kopieren user_functions.defa ult.php nach user_functions.php funktioniert jetzt die Anzeige richtig.