iCal verlinken

Hast du Vorschläge, was wir an Admidio noch verbessern könnten ? Hier kannst du uns deine Vorstellung an neuen Funktionen mitteilen.
Antworten
DieterB
Beiträge: 96
Registriert: 1. Mai 2009, 23:31

iCal verlinken

Beitrag von DieterB »

Hallo,

man kann ja aus dem Terminkalender iCal Termine downloaden (exportieren). In der Beschreibung der Termineinstellungen in den Organisationseinstellungen steht auch was von einem "Abo".
Was ist damit gemeint? Gibt es das auch?

Was ich mir wünschen würde wäre ein dynamischer iCal Kalender (also nicht zum importieren sondern verlinkt). Ich selbst habe das schon einmal realisiert. Dabei braucht man dann z.B. im Google Kalender nur mehr einmal den link anzugeben (über URL hinzufügen) und es wird automatisch jeder neue Termin im Google Kalender angezeigt. Der link liefert die iCal Daten dabei dynamisch.
Welche Termine und über welchen Zeitraum lässt sich dann leicht mit Url-Parametern steuern.

Hier die Beschreibung von dem was ich meine: http://forum.noettv.info/viewtopic.php?f=14&t=84
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Re: iCal verlinken

Beitrag von Jochen »

Hallo Dieter,
das funktioniert mit Admidio (nur nicht mit Zeitrahmen). Wenn Du oben bei der Kalenderauswahl einen Rechtsklick auf das Icon machst und Dir die Linkadresse kopierst.

z.B.: http://demo.admidio.org/adm_program/mod ... p?cat_id=0

Voraussetzung ist nur, dass die Termine öffentlich sind. Den Zeitrahmen kann man in den Einstellungen festlegen.

Gruß Jochen
DieterB
Beiträge: 96
Registriert: 1. Mai 2009, 23:31

Re: iCal verlinken

Beitrag von DieterB »

o.k. danke!

edit: Funktioniert!
Offe
Beiträge: 568
Registriert: 30. Aug 2007, 17:42

Re: iCal verlinken

Beitrag von Offe »

Hallo zusammen

mit Spannung habe ich die Antworten auf Dieters Frage erwartet. In der Tat funktioniert das Hinzufügen des Admidiokalenders über die URL. Jedoch habe ich euren Zusatz über die Zeitzone noch nicht ganz richtig verstanden. Wenn ich einen Admdiokalender nun zu Google hinzufüge, habe ich immer GMT (+0) ohne Sommerzeit als Zeitformat und bin somit mit meinen Termine 2 Stunden zu weit in der Zukunft. Jochens Hinweis auf das Ändern dieser Zeitzone in den Einstellungen konnte ich noch nicht finden. Die Kalenderzeitzone scheint in den Kalendereinstellungen fest eingestellt und unveränderlich zu sein. Wie kann ich dieses korrigieren, sodass die korrekte Zeitzone angewandt wird, ähnlich wie wenn ich mir das iCal selbst downloade und importiere?

Vielen Dank für eure Hilfe

Gruß, Offe
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Re: iCal verlinken

Beitrag von Jochen »

Hallo Offe,
wir haben nur vom Zeitrahmen gesprochen nicht von der Zeitzone. Gemeint war, wie weit die Daten aus Zukunft und Vergangenheit reichen sollen.
Das Problem mit der Zeitzone muss ich mal durchtesten.
Gruß Jochen
Offe
Beiträge: 568
Registriert: 30. Aug 2007, 17:42

Re: iCal verlinken

Beitrag von Offe »

Hallo Jochen

Sorry ich habe auf Grund der Zeitzonenproblematik Zeitrahmen mit Zeitzone gleichgesetzt.

Wenn ich dir beim Testen helfen kann, lass es mich wissen.

Danke für deine Hilfe

Gruß Offe
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Re: iCal verlinken

Beitrag von Jochen »

Hallo,
die Zeitzone zu integrieren ist leider nicht ganz so einfach, weil ich das dann natürlich für alle Zeitzonen austüfteln muss. Aber ich lass euch mal an meinen Erkenntnissen teilhaben, dann könntet ihr es bei euch ggf. schonmal hart rein codieren und testen (adm_program/system/classes/table_date.php).

Im Kopf der iCal Files muss die Zeitzone definiert werden, unter Version 2.0:

Code: Alles auswählen

BEGIN:VTIMEZONE
TZID:Europe/Berlin
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE
Bei den einzelnen Terminen müssen DTSTART und DTEND dann jeweils noch um die Zeitzone ergänzt werden. Also z.B. so:

Code: Alles auswählen

DTSTART;TZID=Europe/Berlin:20121208T083000
DTEND;TZID=Europe/Berlin:20121208T133000

Soweit die Theorie, ob das dann wirklich funktioniert weiß ich noch nicht.
Gruß jochen
DieterB
Beiträge: 96
Registriert: 1. Mai 2009, 23:31

Re: iCal verlinken

Beitrag von DieterB »

Hier ein Ausschnitt aus der Ausgabe meines Programms (in anderem Zusammenhang), dass bis jetzt überall funktioniert. Vielleicht hilft dir das.

Code: Alles auswählen

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//noettv//NONSGML v1.0//EN
BEGIN:VTIMEZONE
TZID:Europe/Berlin
X-LIC-LOCATION:Europe/Berlin
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:TT-WÖRD4-WÖRD5(G)-20120911T190000
SUMMARY:St. Andrä-Wördern 4 - St. Andrä-Wördern 5 / VS St. Andrä-Wördern / Turnhalle
DESCRIPTION:
CLASS:PUBLIC
DTSTART;TZID=Europe/Berlin:20120911T190000
DURATION:PT120M
END:VEVENT
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Re: iCal verlinken

Beitrag von Jochen »

:-) Wenn Du mal genau schaust, ist das dem oben geposteten auffallend ähnlich.
DieterB
Beiträge: 96
Registriert: 1. Mai 2009, 23:31

Re: iCal verlinken

Beitrag von DieterB »

Jochen hat geschrieben:Soweit die Theorie, ob das dann wirklich funktioniert weiß ich noch nicht.
Wenn Du mal genau schaust, ist das dem oben geposteten auffallend ähnlich.
Dann wird es funktionieren :)
Offe
Beiträge: 568
Registriert: 30. Aug 2007, 17:42

Re: iCal verlinken

Beitrag von Offe »

Hallo Jochen, hallo Dieter

danke zunächst für eure Hinweise. Mit eurer und Googles Hilfe habe ich kleine Lösung zusammenbasteln können, die die Zeitzonen entsprechend der Servereinstellung verwendet und Sommer- wie auch Winterzeit berücksichtigt.

adm_program/system/classes/table_date.php
nach Zeile 103 ("Version:2.0\n") ";" durch "." ersetzen und folgendes einfügen

Code: Alles auswählen

"X-WR-TIMEZONE:".date_default_timezone_get()."\n".
      "BEGIN:VTIMEZONE"."\n".
           "TZID:".date_default_timezone_get()."\n".
        "X-LIC-LOCATION:".date_default_timezone_get()."\n".
           "BEGIN:STANDARD"."\n".
             "DTSTART:19701025T030000"."\n".
             "TZOFFSETFROM:+0200"."\n".
             "TZOFFSETTO:+0100"."\n".
             "TZNAME:CET"."\n".
       "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10"."\n".
           "END:STANDARD"."\n".
        "BEGIN:DAYLIGHT"."\n".
             "DTSTART:19700329T020000"."\n".
             "TZOFFSETFROM:+0100"."\n".
             "TZOFFSETTO:+0200"."\n".
             "TZNAME:CEST"."\n".
       "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3"."\n".
           "END:DAYLIGHT"."\n".
         "END:VTIMEZONE"."\n";

Zeilen 142 und 143 (alte Zeilennummern) wie folgt abändern

Code: Alles auswählen

$icalVEevent .= "DTSTART;TZID=".date_default_timezone_get().":". $this->getValue('dat_begin', 'Ymd')."T".$this->getValue('dat_begin', 'His')."\n".
  "DTEND;TZID=".date_default_timezone_get().":". $this->getValue('dat_end', 'Ymd')."T".$this->getValue('dat_end', 'His')."\n";
Bei der Validierung der iCal-Events ist mir dabei noch aufgefallen, dass in der Description ein Zeilenumbruch zu viel ist.
in Zeile 130 (alte Zeilennummer) "\n" enternen

Code: Alles auswählen

"DESCRIPTION:". str_replace("\r\n", "", str_replace(';', '.', $this->getValue('dat_description', 'plain'))). "\n".
Getestet habe ich das ganze mit Outlook und Google. In Zusammenhang mit Google ist mir noch ein kleiner Bug aufgefallen. Die Kodierung des iCal-Events ist beim Import des Kalenders über URL nicht UTF-8 konform und Google stellt deshalb die Umlaute nicht richtig dar. Dies habe ich wie folgt behoben:

adm_program/modules/dates/ical_dates.php
in Zeile 191 die Kodierung hinzufügen

Code: Alles auswählen

header('Content-Type: text/calendar; charset=utf-8');
Vielleich kann einer von euch das Ganze noch überprüfen und in die nächste Version mit aufnehmen.

Viele Grüße
Offe
Antworten