Ergebnis 1 bis 9 von 9

Thema: Automatische Aktualisierung der ics-Dateien. Wie?

  1. #1
    Contao-Nutzer Avatar von wsa
    Registriert seit
    27.10.2009.
    Ort
    Augsburg
    Beiträge
    128

    Frage Automatische Aktualisierung der ics-Dateien. Wie?

    Hallo zusammen,

    ich teile mit einigen anderen hier ein Problem, für das es in diesem Forum viele Fragen, aber noch keine vollständigen Antworten gibt:

    Ausgangssituation:
    • Contao 2.11.6 mit Erweiterung calendar_ical
    • Im Backend ist in den Kalender-Eigenschaften das Häkchen bei "iCal Abonnement erstellen" gesetzt.
    • "Kalender-Alias" und "Titel-Präfix" sind gesetzt. Es wurde kein Zeitraum gewählt, also gilt der Default "Termine der nächsten 365 Tage".
    • ics-Datei mit dem Namen Kalender-Alias.ics wurde im Contao-Verzeichnis erstellt.
    • Im Google-Kalender wurde die url http://www.meine_domain.de/Kalender-Alias.ics unter "Weitere Kalender" -> "Über URL hinzufügen" eingebunden.
    • Der Google-Kalender hat - wie zu erwarten - alle Termine des eingestellten Zeitraumes sauber importiert. Lediglich Umlaute werden als schwarze Raute mit Fragezeichen dargestellt.
      Offensichtlich stimmt die Zeichen-Codierung der ics-Datei nicht. Ist die "genormt"? Falls ja, auf was? utf8, "Windows", oder "Mac"?

    Symtom
    • Werden via Erweiterung calendar_editor im Frontend Events hinzugefügt, geändert oder gelöscht, werden diese Änderungen im Google-Kalender nicht aktualisiert.

    bisherige Maßnahmen bzw. Beobachtungen
    • Google kann nicht aktualisieren, solange die ics-Datei unverändert bleibt.
    • Eine Änderung im Frontend führt nicht zu einer Aktualisierung der ics-Datei.
    • Daran ändert auch eine Einstellung der Chachezeit von 60 Sekunden in den Seiteneinstellungen der Eventliste - wie in folgendem Thread empfohlen - nichts.
    • Die ics-Datei wird aktualisiert, sobald ich im Backend Veränderungen vornehme oder die Kalender-Eigenschaften ("Kalender ID x bearbeiten") neu abspeichere.

    offene Frage
    • Wie erreicht man, dass der Prozess (welcher?), der offensichtlich beim Speichern der Kalendereinstellungen abläuft, automatisiert in festen Intervallen (z.B. alle 10 Minuten / via CRON getriggert?) abläuft, und die ics-Dateien somit regelmäßig aktualisiert werden?
    • Zwei Frage am Rande: Sowohl Google als auch Outlook haben ein "Problem" mit Terminen ohne Endezeit. Dies ist sehr oft bei Abendveranstaltungen der Fall, deren Beginn z.B. mit 20:00 Uhr angegeben, deren Ende aber nicht ausdrücklich festgelegt ist. Wäre es eine Lösung, wenn calendar_ical in diesen Fälle eine Annahme treffen könnte? Z.B. Ende des Termins in diesem Fall um 23:59 desselben Tages oder 00:00 des Folgetages. Und: Wie bekommt man das Umlaute-Problem (s.o.) in den Griff?

    Vielen Dank im Voraus für alle "sachdienlichen Hinweise"!
    LG wsa

  2. #2
    Community-Moderator Avatar von schman
    Registriert seit
    19.06.2009.
    Ort
    Dornbirn
    Beiträge
    3.739
    User beschenken
    Wunschliste

    Standard

    Ich vermute die calendar_ics Erweiterung arbeitet mit dem onsave_callback (oder ähnlichem), deshalb wird die ics auch neu erstellt. Ich denke wenn du per frontend einen Termin eingibst wird die calendar_ics gar nicht "angestupst" deshalb wird die ics nicht erneut erstellt. Du kannst ja versuchen einen Termin per Frontend anzulegen und anschließend die ics Datei direkt herunterladen und prüfen ob der Termin eingetragen wurde.

    Es gibt meiner Meinung nach nun 2 Möglichkeiten. Entweder du kontaktierst den Autor der frontend Erweiterung und bittest ihn darum die calendar_ics zu berücksichtigen. Oder du legst dir wie du selbst gesagt hast einen Cronjob an. Dazu müsstest du allerdings zuerst prüfen wo sich die ganze Magie der Generierung abspielt.

    Zum Umlautproblem: Ich war der Meinung das die calendar_ics Erweiterung mit UTF8 arbeitet. Welche Version von Outlook verwendest du, prüf zuerst mal ob dort UTF8 unterstützt wird, soweit ich weiß ist das nämlich nicht der Standard. Beim Google Kalender könnte ich mir das selbe vorstellen.
    Kein Privat Support via PM.

  3. #3
    Contao-Nutzer Avatar von wsa
    Registriert seit
    27.10.2009.
    Ort
    Augsburg
    Beiträge
    128

    Standard

    Hallo schman,
    vielen Dank für deine Antwort.
    Zitat Zitat von schman Beitrag anzeigen
    Ich vermute die calendar_ics Erweiterung arbeitet mit dem onsave_callback (oder ähnlichem), deshalb wird die ics auch neu erstellt. Ich denke wenn du per frontend einen Termin eingibst wird die calendar_ics gar nicht "angestupst" deshalb wird die ics nicht erneut erstellt.
    Exakt so verhält es sich!

    Zitat Zitat von schman Beitrag anzeigen
    Du kannst ja versuchen einen Termin per Frontend anzulegen und anschließend die ics Datei direkt herunterladen und prüfen ob der Termin eingetragen wurde.
    Brauch ich gar nicht. Ich sehe ja auf meinem Server via FTP, dass die ics-Datei nicht aktualisiert wurde.

    Zitat Zitat von schman Beitrag anzeigen
    ... 2 Möglichkeiten. ... Entweder du kontaktierst den Autor
    Ist aus meiner Sicht die schlechtere Alternative, wegen Abhängigkeit von dieser Erweiterung und evtl. Änderungen derselben.

    Zitat Zitat von schman Beitrag anzeigen
    Oder du legst dir wie du selbst gesagt hast einen Cronjob an. Dazu müsstest du allerdings zuerst prüfen wo sich die ganze Magie der Generierung abspielt.
    Genau das wüsste ich ja gerne!

    Zitat Zitat von schman Beitrag anzeigen
    Zum Umlautproblem: Ich war der Meinung das die calendar_ics Erweiterung mit UTF8 arbeitet. Welche Version von Outlook verwendest du, prüf zuerst mal ob dort UTF8 unterstützt wird, soweit ich weiß ist das nämlich nicht der Standard. Beim Google Kalender könnte ich mir das selbe vorstellen.
    Ich sehe das ja genauso. Deshalb fragte ich danach, ob denn der Zeichnsatz für iCal nicht genormt ist. Falls sich Apple als "Erfinder" des iCals nämlich für einen Win-Zeichensatz entschieden hat, ist die Erstellung einer ics-Datei in UTF8-Codierung unsinnig. Falls iCal hingegen mit verschiedenen Codierungen klar käme, müsste der Empfänger derselben (also z.B. Google) diese aus dem Header der Datei auslesen können.

  4. #4
    Community-Moderator Avatar von schman
    Registriert seit
    19.06.2009.
    Ort
    Dornbirn
    Beiträge
    3.739
    User beschenken
    Wunschliste

    Standard

    Nochmals zum UFT-8 Problem, vor einiger Zeit musste ich auch einen Export via ics machen und habe auch die PHP Klasse dieser Erweiterung verwendet, allerdings habe ich damals den Export in ANSI gemacht.
    Somit werden die Umlaute richtig dargestellt, allerdings musste ich das damals so machen weil Outlook 2003 kein UTF8 versteht.
    Kein Privat Support via PM.

  5. #5
    Contao-Nutzer Avatar von wsa
    Registriert seit
    27.10.2009.
    Ort
    Augsburg
    Beiträge
    128

    Standard

    Hallo schman,
    leider verstehe ich deine Antwort nicht ganz: wie hast du denn einen Export in ANSI hinbekommen? (Wo stellt man das ein?)
    Und: ich exportiere ja die Kalender Daten nicht (einmalig), sondern Google bzw. Outlook synchronisiert ja seinen Kalender mit der ics-URL automatisch und (in mir nicht näher bekannten Zeitabständen) fortlaufend. Eben kein Export, sondern ein Abo, das in den Kalender-Eigenschaften eingerichtet wird. Insofern hilft mir dein Bezug auf einen Export nicht weiter. Oder verstehe ich da was falsch?
    Geändert von wsa (18.11.2013 um 15:14 Uhr)

  6. #6
    Contao-Nutzer Avatar von wsa
    Registriert seit
    27.10.2009.
    Ort
    Augsburg
    Beiträge
    128

    Standard *vorsichtiges Anklopfen*

    Hat hier keiner eine konstruktive Idee?

  7. #7
    Contao-Nutzer Avatar von wsa
    Registriert seit
    27.10.2009.
    Ort
    Augsburg
    Beiträge
    128

    Standard

    Wie erreicht man, dass der Prozess (welcher?), der offensichtlich beim Speichern der Kalendereinstellungen abläuft, automatisiert in festen Intervallen (z.B. alle 10 Minuten / via Contao-Scheduler) getriggert) abläuft, und die ics-Dateien somit regelmäßig aktualisiert werden?

  8. #8
    Contao-Fan Avatar von hschottm
    Registriert seit
    15.06.2009.
    Ort
    Loxstedt, Germany
    Beiträge
    825
    User beschenken
    Wunschliste

    Standard

    Hi,

    Zitat Zitat von wsa Beitrag anzeigen
    Hallo zusammen,

    ich teile mit einigen anderen hier ein Problem, für das es in diesem Forum viele Fragen, aber noch keine vollständigen Antworten gibt:

    Ausgangssituation:
    • Contao 2.11.6 mit Erweiterung calendar_ical
    • Im Backend ist in den Kalender-Eigenschaften das Häkchen bei "iCal Abonnement erstellen" gesetzt.
    • "Kalender-Alias" und "Titel-Präfix" sind gesetzt. Es wurde kein Zeitraum gewählt, also gilt der Default "Termine der nächsten 365 Tage".
    • ics-Datei mit dem Namen Kalender-Alias.ics wurde im Contao-Verzeichnis erstellt.
    • Im Google-Kalender wurde die url http://www.meine_domain.de/Kalender-Alias.ics unter "Weitere Kalender" -> "Über URL hinzufügen" eingebunden.
    • Der Google-Kalender hat - wie zu erwarten - alle Termine des eingestellten Zeitraumes sauber importiert. Lediglich Umlaute werden als schwarze Raute mit Fragezeichen dargestellt.
      Offensichtlich stimmt die Zeichen-Codierung der ics-Datei nicht. Ist die "genormt"? Falls ja, auf was? utf8, "Windows", oder "Mac"?

    Symtom
    • Werden via Erweiterung calendar_editor im Frontend Events hinzugefügt, geändert oder gelöscht, werden diese Änderungen im Google-Kalender nicht aktualisiert.

    bisherige Maßnahmen bzw. Beobachtungen
    • Google kann nicht aktualisieren, solange die ics-Datei unverändert bleibt.
    • Eine Änderung im Frontend führt nicht zu einer Aktualisierung der ics-Datei.
    • Daran ändert auch eine Einstellung der Chachezeit von 60 Sekunden in den Seiteneinstellungen der Eventliste - wie in folgendem Thread empfohlen - nichts.
    • Die ics-Datei wird aktualisiert, sobald ich im Backend Veränderungen vornehme oder die Kalender-Eigenschaften ("Kalender ID x bearbeiten") neu abspeichere.

    offene Frage
    • Wie erreicht man, dass der Prozess (welcher?), der offensichtlich beim Speichern der Kalendereinstellungen abläuft, automatisiert in festen Intervallen (z.B. alle 10 Minuten / via CRON getriggert?) abläuft, und die ics-Dateien somit regelmäßig aktualisiert werden?
    • Zwei Frage am Rande: Sowohl Google als auch Outlook haben ein "Problem" mit Terminen ohne Endezeit. Dies ist sehr oft bei Abendveranstaltungen der Fall, deren Beginn z.B. mit 20:00 Uhr angegeben, deren Ende aber nicht ausdrücklich festgelegt ist. Wäre es eine Lösung, wenn calendar_ical in diesen Fälle eine Annahme treffen könnte? Z.B. Ende des Termins in diesem Fall um 23:59 desselben Tages oder 00:00 des Folgetages. Und: Wie bekommt man das Umlaute-Problem (s.o.) in den Griff?

    Vielen Dank im Voraus für alle "sachdienlichen Hinweise"!
    LG wsa
    die Magie des Erstellens spielt sich an zwei Stellen ab:

    1. Die ICS-Datei wird erstellt, wenn man den Kalender im Backend bearbeitet
    2. In der Konfiguration ist eine Aktualisierung für cron.php für täglich eingetragen

    Wenn man also z.B. über die cron.php eine häufigere Erstellung der .ICS-Dateien erreichen will, sollte man generateSubscriptions der Klasse CalendarExport aufrufen, also z.B.

    PHP-Code:
    $GLOBALS['TL_CRON']['hourly'][] = array('CalendarExport''generateSubscriptions'); 
    für eine stündliche Aktualisierung.

    LG,
    Helmut
    Blackmail's such an ugly word. I prefer extortion -- the "x" makes it sound cool.
    -- Bender

  9. #9
    Contao-Nutzer Avatar von wsa
    Registriert seit
    27.10.2009.
    Ort
    Augsburg
    Beiträge
    128

    Standard

    Hallo Helmut,

    hatte schon gar nicht mehr mit einer Antwort gerechnet und stolpere heute mehr oder weniger zufällig darüber.
    Vielen Dank für deine Rückmeldung.

    Das von dir Beschriebene war mir bereits klar bzw. hatte ich schon geschrieben. D.h. die con dir vorgeschlagene Änderung hatte ich bereits vorgenommen; sie zieht jedoch nur, wenn ich die Kalender (mehrere!) im Backend anfasse. "Meine" Events werden jedoch im Frontend eingegeben und aktualisiert.

    Die Frage ist deshalb: wie kann eine Aktualisierung der ICS-Dateien via CRON erfolgen, ohne dass die Kalender im Backend angefasst werden?

    Kannst du da weiterhelfen?
    LG wsa

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •