Ergebnis 1 bis 16 von 16

Thema: iCal Abonnement und Zusammenspiel mit calendar Extensions

  1. #1
    Contao-Nutzer
    Registriert seit
    10.03.2010.
    Ort
    Flensburg
    Beiträge
    16

    Standard iCal Abonnement und Zusammenspiel mit calendar Extensions

    Ich bin ein großer Fan dieser Erweiterung, vor allem der Möglichkeit, eine iCal Quelle zu abonnieren. Endlich keine doppelte Termineingabe oder umständliche Exports und Imports mehr.

    Wenn ich einen Kalender aus einer iCal-Quelle erstelle (z.B. aus einem Google Calendar) und das Enddatum auf einen entsprechend hohen Wert setze (z.B. 31.12.2099), funktioniert die kontinuierliche Aktualisierung des Contao Kalenders problemlos, wenn mit der Zeit neue Termine hinzukommen. Auch die Übernahme von Daten, die in Contao Events nicht vorgesehen sind (z.B. Ort) in den Text des Events ist gut gelöst. Vielen Dank an den Autor an dieser Stelle!

    Jetzt möchte ich aber die Extension tags in Verbindung mit tags_events nutzen, um Events mit Auszeichnungen zu versehen. Das klappt im normalen Betrieb (also Eingabe der Events über das Contao Backend) auch wie vorgesehen. Abonniere ich jedoch einen externen Kalender per iCal und versehe die so automatisch erzeugten Einträge nachträglich mit Auszeichnungen, sind diese Auszeichnungen nach dem nächsten Aktualisierungslauf der calendar_ical extension wieder verschwunden. Es scheint so, als ob die extension alle Events im Abonnementszeitraum einfach komplett überschreibt und keine Rücksicht auf bereits bestehenden Events nimmt. Fast so, als würde man den Kalender leeren und aus den iCal Daten neu anlegen.

    Ist dieses Verhalten der Extension so vorgesehen? Für den in meinem Szenario gedachten Einsatzzweck (Migration hin zu Google Calendar bei bestehenden Terminen in Contao) wäre es zumindest für mich nützlicher, wenn die Extension
    • bestehende Einträge im Abo-Zeitraum erkennen und nur ggf. aktualisieren oder alternativ auch unberührt lassen würde
    • Events außerhalb des Abo-Zeitraums, die bereits im Kalender bestehen, ebenfalls unberührt lassen würde

    Ich kann mir gut vorstellen, dass das nicht so ohne weiteres umsetzbar ist. Mir würde daher ggf. die Info, ob meine Beobachtung korrekt ist, schon sehr weiterhelfen.

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

    Standard

    Hi Jan,

    tjaaa, da hast du erkannt, dass ich es mir sehr einfach mache. Ich lösche nämlich die bestehenden Einträge und ersetze sie durch neue.
    Ich schau mal, wie kompliziert das ist, hier evtl. eine Abfrage vorzuschalten und die bestehenden Einträge nicht anzufassen bzw. zu aktualisieren.

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

  3. #3
    Contao-Nutzer
    Registriert seit
    10.03.2010.
    Ort
    Flensburg
    Beiträge
    16

    Daumen hoch

    Hallo Helmut,

    das find ich so gar nicht - das ist sicher eine Menge Mühe und Aufwand in diese Erweiterung geflossen! Danke für deine Bemühungen - das wird wohl nicht einfach...

    Ich hab mich mit dem Thema noch ein bisschen weiter beschäftigt. Zur Zeit habe ich das Problem, dass beim iCal Import über eine URL immer nur die Termine des aktuellen Monats importiert werden, wobei die Angabe von Start- und Enddatum ignoriert wird. Ich setze Contao 2.9.4 ein - könnte es an einer Änderung von Contao-internen Funktionen oder Methoden liegen? Ich teste einfach mal weiter, falls ich eine Antwort finde, poste ich sie hier. Ich hab zwar zuvor das Gegenteil gepostet, habe mich aber leider geirrt. Der übliche Trick 17...

    Habe übrigens problemlos die verwendete iCalcreator-Version auf 2.8 updaten können, getestet mit iCal-Daten aus einem Google- und einem Zoho Kalender.

    Gruß, Jannik

  4. #4
    Contao-Nutzer
    Registriert seit
    10.03.2010.
    Ort
    Flensburg
    Beiträge
    16

    Standard

    So, habe mein Problem mit nicht importierten Terminen (aus einem iCal Abonnement werden nur die neuesten importiert) jetzt soweit eingrenzen können. Der Aufruf:

    Code:
    $eventArray = $this->cal->selectComponents(date('Y', $startDate->tstamp),date('m', $startDate->tstamp),date('d', $startDate->tstamp),date('Y', $endDate->tstamp),date('m', $endDate->tstamp),date('d', $endDate->tstamp),'vevent');
    in system/modules/calendar_ical/CalendarImport.php in Zeile 152 bekommt nicht die notwendigen Daten geliefert. Ersetzt man die Aufrufe von date() durch Datumsbestandteile, wird die iCal-Quelle korrekt innerhalb des vorgegebenen Zeitraumes ausgewertet. Beispiel:

    Code:
    $eventArray = $this->cal->selectComponents(2010,1,1,2011,12,31,'vevent');
    Vielleicht kann jemand auf Anhieb sagen, warum $startDate->tstamp bzw. $endDate->tstamp unter Contao 2.9.4 nicht das gewünschte Ergebnis liefert?

    Gruß, Jannik

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

    Standard

    Hi,

    Zitat Zitat von janfux Beitrag anzeigen
    So, habe mein Problem mit nicht importierten Terminen (aus einem iCal Abonnement werden nur die neuesten importiert) jetzt soweit eingrenzen können. Der Aufruf:

    Code:
    $eventArray = $this->cal->selectComponents(date('Y', $startDate->tstamp),date('m', $startDate->tstamp),date('d', $startDate->tstamp),date('Y', $endDate->tstamp),date('m', $endDate->tstamp),date('d', $endDate->tstamp),'vevent');
    in system/modules/calendar_ical/CalendarImport.php in Zeile 152 bekommt nicht die notwendigen Daten geliefert. Ersetzt man die Aufrufe von date() durch Datumsbestandteile, wird die iCal-Quelle korrekt innerhalb des vorgegebenen Zeitraumes ausgewertet. Beispiel:

    Code:
    $eventArray = $this->cal->selectComponents(2010,1,1,2011,12,31,'vevent');
    Vielleicht kann jemand auf Anhieb sagen, warum $startDate->tstamp bzw. $endDate->tstamp unter Contao 2.9.4 nicht das gewünschte Ergebnis liefert?

    Gruß, Jannik
    ich kann das leider nicht nachvollziehen. Bei mir steht auch in Contao 2.9.4 ein Wert drin. Und zwar der, den ich eingetragen habe. ich kann da leider nichts feststellen.
    Gruß,
    Helmut
    Blackmail's such an ugly word. I prefer extortion -- the "x" makes it sound cool.
    -- Bender

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

    Standard

    Hast du mal in die Einstellungen des Kalenders geschaut, der aus dem Web-Kalender erstellt wird? Ist da denn ein Start- und ein Enddatum angegeben? Da wo kein Datum angegeben ist wird das aktuelle Datum als Startdatum und das Datum in einem Jahr als Enddatum verwendet, vielleicht ist das das Problem.



    Gruß,

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

  7. #7
    Contao-Nutzer
    Registriert seit
    10.03.2010.
    Ort
    Flensburg
    Beiträge
    16

    Standard

    Hallo Helmut,

    danke für den Tip. Hab aber leider schon mit allen Einstellungen getestet, weil ich auch von einem Einstellungsfehler ausgegangen bin. Das ist es scheinbar leider nicht.

    Ich habe es gerade noch einmal mit einer frischen Installation von Contao-2.9.4 probiert, bei der als einzige Erweiterung calendar_ical über das extension repository installiert wurde. Danach einen Testkalender angelegt, als einzige Einstellung außer dem Namen das iCal Abonnement eingetragen (siehe Anhang).

    Der abonnierte, öffentliche Google-Kalender enthält Termine von Sept 2010 bis Ende April 2011, insgesamt ca. 420. In den Contao Kalender übertragen werden aber immer nur die Termine im April, unabhängig vom im Backend gewählten Zeitabschnitt.

    Ein Import aus einer iCal-Datei (gleicher Kalender, direkt aus Google Cal exportiert) über die Funktion "Kalender importieren" erfolgt problemlos und in vollem Umfang unter Angabe des Zeitraumes.

    Zum Testen habe ich die Datei, die über die Google iCal Schnittstelle angeboten wird, mit dem Export aus dem Google Kalender verglichen, sie sind identisch und enthalten Termine aus dem gesamten Zeitspektrum des Kalenders.

    Ebenfalls inhaltsgleich mit der Google Export-Quelle (bis auf Unterschiede in der Reihenfolge der Felder) sind die Kalender-Daten, die in system/modules/calendar_ical/CalendarImport.php von $this->cal->parse(); (Zeile 71) und nach dem Aufruf von $this->cal->sort(); (Zeile 117) erzeugt werden. Ich habe dort einfach jeweils
    Code:
    $config = array( 'directory' => TL_ROOT . '/tl_files/', 'filename' => 'calendar.ics' );
    $this->cal->setConfig( $config );
    $this->cal->saveCalendar();
    eingetragen, um die Kalenderdaten zwischenzuspeichern. Zusätzlich habe ich die drei Versionen der Daten in einen Mozilla-Kalender importiert, was auch problemlos verlief und alle ~420 Termine anzeigte. Die Rohdaten sind also ok.

    Die einzige Erklärung, die ich bisher finden konnte, war, dass $startDate und $endDate nicht korrekt an importFromICS() in Zeile 77 weitergegeben werden, oder dass die date()-Aufrufe in $this->cal->selectComponents() in Zeile 143 nicht die korrekten Werte aus den Zeitstempeln erzeugen. Das habe ich bisher nicht weiter untersucht, bis auf das stumpfe Ersetzen der date()-Aufrufe durch fixe Werte, was dann den Erfolg brachte - alle Termine im Zeitraum wurden importiert. Hättest du da vielleicht einen Tip, wie man das debuggen könnte, also die Werte von $startDate und $endDate bzw. $startDate->tstamp und $endDate->tstamp zur Laufzeit auslesen könnte?

    Vielen Dank für deine Mühen, ich find's echt großartig, dass du dir bei einer so alten Erweiterung immer noch die Zeit nimmst, Lösungen zu suchen.

    Gruß, Jannik
    Angehängte Grafiken Angehängte Grafiken
    Geändert von janfux (06.04.2011 um 11:40 Uhr)

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

    Standard

    Hi Jannik,

    Asche auf mein Haupt. Ich hatte einen copy/paste Fehler in der Kalendar DCA. Die Datumsfelder für den import und den export hatten die gleichen Namen. Beim import hieß das dann aber immer, dass kein Datum gefunden wurde, weil es ja als export-Datum geschreiben wurde, also wurde das aktuelle Datum verwendet.

    Aktualisiere die Komponente mal aus dem Extension Repository. Leider musst du den Zeitraum für den Import der iCal-Datei neu eingeben. Der müsste jetzt leer sein, d.h. dem aktuellen Datum entsprechen. Nach einem Speichern sollte es dann aber funktionieren.

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

  9. #9
    Contao-Nutzer
    Registriert seit
    10.03.2010.
    Ort
    Flensburg
    Beiträge
    16

    Multimedia

    Hallo Helmut,

    jetzt funktioniert es tatsächlich tadellos - Vielen Dank für deine Mühen und das du den Bug so schnell behoben hast! Wieder mal eine Erweiterung, die beim Einsatz des Event-Moduls absolut dazu gehört =)

    Gruß, Jannik

  10. #10
    Contao-Nutzer
    Registriert seit
    10.03.2010.
    Ort
    Flensburg
    Beiträge
    16

    Standard

    Ich bin jetzt auf einen anderen Fehler gestoßen, den ich leider auch nicht direkt erklären kann.

    Ich habe zum Testen die Erweiterung komplett, inkl. DB-Einrägen, deinstalliert und neu über das ER installiert. Danach fiel mir schon auf, das in den Einstellungen eines Kalenders im Backend das Feld "Cache-Dauer in Sekunden" mit 0 vorbelegt war - als default ist doch aber 86400 vergeben, oder?

    Der eigentliche Fehler ist jetzt aber der, dass bei meiner Testinstallation, unabhängig davon, wie hoch der Wert für den iCal Cache gesetzt ist, bei jedem Aufruf eines Terminkalenders oder -liste im Frontend ein Re-Import des iCal-Kalenders ausgelöst wird. Im System Log werden dabei jedes Mal viele neue Einträge in tl_clendar_events angezeigt. Das verlangsamt die Installation natürlich ungemein. Kann es sein, das sich da ein neuer Fehler eingeschlichen hat?

    Ich habe testweise einmal Cronjobs angelegt, die halbstündlich die cron.php sowie die Frontend-URL des Termikalenders pollen. Der Fehler bleibt bestehen, es scheint also so, als ob immer der Wert 0 für die ical Cachedauer angenommen wird, obwohl im Backend der eingetragene Wert gespeichert bleibt.

    Gruß, Jannik

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

    Standard

    Hi Jannik,

    Zitat Zitat von janfux Beitrag anzeigen
    Ich bin jetzt auf einen anderen Fehler gestoßen, den ich leider auch nicht direkt erklären kann.

    Ich habe zum Testen die Erweiterung komplett, inkl. DB-Einrägen, deinstalliert und neu über das ER installiert. Danach fiel mir schon auf, das in den Einstellungen eines Kalenders im Backend das Feld "Cache-Dauer in Sekunden" mit 0 vorbelegt war - als default ist doch aber 86400 vergeben, oder?

    Der eigentliche Fehler ist jetzt aber der, dass bei meiner Testinstallation, unabhängig davon, wie hoch der Wert für den iCal Cache gesetzt ist, bei jedem Aufruf eines Terminkalenders oder -liste im Frontend ein Re-Import des iCal-Kalenders ausgelöst wird. Im System Log werden dabei jedes Mal viele neue Einträge in tl_clendar_events angezeigt. Das verlangsamt die Installation natürlich ungemein. Kann es sein, das sich da ein neuer Fehler eingeschlichen hat?

    Ich habe testweise einmal Cronjobs angelegt, die halbstündlich die cron.php sowie die Frontend-URL des Termikalenders pollen. Der Fehler bleibt bestehen, es scheint also so, als ob immer der Wert 0 für die ical Cachedauer angenommen wird, obwohl im Backend der eingetragene Wert gespeichert bleibt.

    Gruß, Jannik
    ich schau mir das an, das sollte natürlich nicht so sein.
    LG,
    Helmut
    Blackmail's such an ugly word. I prefer extortion -- the "x" makes it sound cool.
    -- Bender

  12. #12
    Contao-Nutzer
    Registriert seit
    10.03.2010.
    Ort
    Flensburg
    Beiträge
    16

    Standard

    Zitat Zitat von hschottm Beitrag anzeigen
    Also, die Dateien sind nicht kaputt. Problem ist hier die freie Erweiterung iCalCreator, die ich verwende und die zieht ordentlich Speicher.
    Mittlerweile ist iCalCreator 2.8 erschienen - das Changelog vermerkt u.a. Performance-Optimierungen. Im Kurztest funktioniert calendar_ical damit in allen Bereichen wie bisher auch. Memory footprint habe ich aber nicht verglichen.

    HTH, nur so ein Gedanke.

    Gruß, Jannik

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

    Standard

    Hi Jannik,

    war auch mein Gedanke, bringt nur leider nix.
    Egal. Neue Version online mit iCalCreator 2.8.

    Der iCalCreator zieht ordentlich Speicher und aufgrund seiner verschachtelten Strukturen mag ich da auch nicht dran herumdoktorn. Hab ich aber nun doch getan. An einer Stelle werden Kopien von Einträgen erzeugt, ich habe das auskommentiert und arbeite mit den Originalen. Das hat ordentlich Speicherersparnis gebracht und ich konnte bei meinen Tests keine auf Anhieb sichtbaren Seiteneffekte feststellen. Wir beobachten das mal.

    Außerdem hab ich den ical_cache jetzt wie in der DCA-Datei bereits eingestellt auch in der Datenbank jetzt auf 86400 gestellt und die Abfrage sollte jetzt auch funktionieren. Ich hab leider den Timestamp des Kalenders verglichen, der sich aber nicht ändert, wenn neue Einträge hinzukommen. Das wird jetzt korrekt abgefragt.

    LG,
    Helmut

    Zitat Zitat von janfux Beitrag anzeigen
    Mittlerweile ist iCalCreator 2.8 erschienen - das Changelog vermerkt u.a. Performance-Optimierungen. Im Kurztest funktioniert calendar_ical damit in allen Bereichen wie bisher auch. Memory footprint habe ich aber nicht verglichen.

    HTH, nur so ein Gedanke.

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

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

    Standard

    So, mit der aktuellen Version im Extension Repository sollte die Cache Problematik endgültig beendet sein. Wer so hirnverbrannt blöd ist wie ich und sich die ID des zu aktualisierenden Kalenders über den HTTP GET Parameter holt, was natürlich NUR im Backend funktioniert, nicht aber im Frontend, der muss sich nicht wundern, dass es mit dem Caching nicht funktioniert.

    Gruß,

    Helmut

    Zitat Zitat von hschottm Beitrag anzeigen
    Hi Jannik,

    war auch mein Gedanke, bringt nur leider nix.
    Egal. Neue Version online mit iCalCreator 2.8.

    Der iCalCreator zieht ordentlich Speicher und aufgrund seiner verschachtelten Strukturen mag ich da auch nicht dran herumdoktorn. Hab ich aber nun doch getan. An einer Stelle werden Kopien von Einträgen erzeugt, ich habe das auskommentiert und arbeite mit den Originalen. Das hat ordentlich Speicherersparnis gebracht und ich konnte bei meinen Tests keine auf Anhieb sichtbaren Seiteneffekte feststellen. Wir beobachten das mal.

    Außerdem hab ich den ical_cache jetzt wie in der DCA-Datei bereits eingestellt auch in der Datenbank jetzt auf 86400 gestellt und die Abfrage sollte jetzt auch funktionieren. Ich hab leider den Timestamp des Kalenders verglichen, der sich aber nicht ändert, wenn neue Einträge hinzukommen. Das wird jetzt korrekt abgefragt.

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

  15. #15
    Contao-Nutzer
    Registriert seit
    10.03.2010.
    Ort
    Flensburg
    Beiträge
    16

    Standard

    Ja, jetzt funktioniert alles 1a, kann ich bestätigen. Abonnierte Kalender werden planmäßig aktualisiert, überhaupt keine Cache Probleme mehr. Danke Helmut für deinen Einsatz, alles super gelöst!

    Und als Tipp für alle, die ebenfalls auf Google Kalender als Datenquelle setzen: Unbedingt die private iCal-URL des Kalenders eintragen, auch bei öffentlichen Kalendern - über die Privatadresse werden neue Termine und Änderungen ohne Verzögerung ausgeliefert, bei der öffentlichen Adresse kann das schon mal dauern...

  16. #16
    Contao-Nutzer
    Registriert seit
    24.03.2012.
    Beiträge
    1

    Standard Event_Tags

    Hallo,

    bei dem Beitrag wurde es glaube ich angesprochen aber beim durchlesen hab ich nun keine Lösung entdeckt.

    Folgendes, ich benutze aktuellste Version von Contao, der Ical-Erweiterung sowie den tags bzw. Event-tags.

    Das Problem: Die Auszeichnungen bei einem durch ical importierten Kalender werden jedesmal wieder gelöscht wenn der Kalender aktualisiert wird.
    Noch besser wäre es allerdings, wenn als Auszeichnung einfach der Name des Kalenders gilt, oder man für einen Kalender eine Auszeichnung wählen könnte, die für alle Einträge gilt!

    Wo müsst ich dazu rumschrauben?

    Das ist doch ein gravierendes Problem für mich, da ich so eine Art Konzertkalender erstellen möchte und für jeden Interpret ein eigener Kalender angelegt wird, der durch den Interpret selbst per Ical aktualisiert werden kann. Das ganze soll dann als Tag-Cloud ausgegeben werden.

    Würde mich sehr freuen wenn mir jemand helfen könnte und natürlich großes Lob für diese Erweiterungen.

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
  •