Ergebnis 1 bis 12 von 12

Thema: iCal an Event anhängen

  1. #1
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard iCal an Event anhängen

    Hallo ihr,


    gibt es eigentlich eine Möglichkeit eine iCal-Datei direkt an ein Event anzuhängen? Das heißt es sollte in der iCal-Datei nur genau ein Event gespeichert sein.
    Och habe gesucht, aber leider nur den Export für einen bestimmten Zeitraum gefunden.
    Bei mir soll in der Detailansicht vom Event die Datei für selbiges angehängt sein.

    Viele liebe Grüße
    psren

  2. #2
    Contao-Nutzer
    Registriert seit
    03.11.2009.
    Ort
    Zürich
    Beiträge
    68

    Standard

    Hallo Psren, bist du hierzu fündig geworden? Suche genau nach diesem Feature.

    Liebe Grüsse,
    Sandro

  3. #3
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Sandro Beitrag anzeigen
    Hallo Psren, bist du hierzu fündig geworden? Suche genau nach diesem Feature.
    Nein bin ich nicht. Ich habe dem Kunden erzählt, das wir es selbst machen müssen, da es das noch nicht fertig gibt und dann war ihm das Feature auf einmal nicht mehr so wichtig (bzw. er wollte es nicht bezahlen).
    Tut mir leid dass ich dir hier eine Abfuhr erteilen muss :-)

  4. #4
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Hallo,

    ich habe eben mit Hilfe von iCalcreator (steht unter LGPL) eine mögliche Lösung für die Aufgabenstellung gefunden:

    1. entpacke die angehängte Datei in system/modules
      das erzeugt einen Ordner iCalcreator, darin befindet sich außer iCalcreator eine von mir erstellte Datei sendIcal.php
    2. lege unter tl_files einen Ordner namens 'ics' an, er dient als Ablage der ICS-Dateien
    3. erzeuge ein event-Template, z.B. aus event_full(.xhtml) und verwende es im EventReader.
    4. bearbeite das Template und füge den folgenden Code ein (z.B. direkt vor dem letzten </div>)
      PHP-Code:
      <div class="ical">
      <?php
      require_once( "system/modules/iCalcreator/iCalcreator.class.php" );
      $config = array( "unique_id" => $this->replaceInsertTags('{{env::path}}') );
      $v = new vcalendar$config ); 
      $v->setProperty"method""PUBLISH" );
      $v->setProperty"x-wr-calname"$this->calendar );
      $v->setProperty"X-WR-CALDESC"$this->calendar );
      $tz "Europe/Berlin";
      $v->setProperty"X-WR-TIMEZONE"$tz );
      iCalUtilityFunctions::createTimezone$v$tz );

      $vevent = & $v->newComponent"vevent" );
      $vevent->setProperty"dtstart"$this->parseDate("d.m.Y H:i"$this->start));
      $vevent->setProperty"dtend"$this->parseDate("d.m.Y H:i"$this->end));
      $vevent->setProperty"summary"$this->title ); 
      $vevent->setProperty"description"$this->details ); 

      $config = array( "directory" => "tl_files/ics""filename" => $this->alias.".ics" );
      $v->setConfig$config );
      $v->saveCalendar();

      echo 
      "<a href='" $this->replaceInsertTags('{{env::path}}') . "system/modules/iCalcreator/sendIcal.php";
      echo 
      "?dir=../../../tl_files/ical";
      echo 
      "&ics=" $this->alias ".ics' title='Termin direkt in deinen Kalender laden'>";
      echo 
      "<img src='" $this->replaceInsertTags('{{env::path}}') . "system/modules/iCalcreator/html/ical.png' alt='Termin direkt in deinen Kalender laden'/></a>";
      ?>
      </div>

    Das bewirkt, dass beim Aufruf des EventReaders für den aktuellen Termin eine ICS-Datei in tl_files/ics/ erzeugt wird. Der Name dieser Datei entspricht dem event-Alias und ist darum eindeutig. In die Ausgabe des Readers wird ein Link für den Download eingefügt. Klickt der Besucher diesen Link, dann wird die eben gespeicherte Datei mit dem korrekten Header ausgeliefert.

    In meinem Beispiel werden noch nicht alle Informationen ins ICS geschrieben (z.B. Wiederholungen etc.), da ich erstmal das Prinzip ausprobieren wollte.
    Wenn ich es richtig verstanden habe, muss ein Ende-Zeitpunkt in der ICS stehen. Bei Contao muss nicht unbedingt eine Endezeit angegeben sein. Wie bekommt man eine entsprechende Abbildung im Kalender hin?
    Hat jemand Lust das Ganze mal auszuprobieren?

    Vielleicht sollte man daraus eine 'richtige' Extension machen?

    Gruß, folkfreund
    Angehängte Dateien Angehängte Dateien

  5. #5
    Contao-Nutzer
    Registriert seit
    15.09.2009.
    Beiträge
    48

    Standard

    Zitat Zitat von folkfreund Beitrag anzeigen
    Vielleicht sollte man daraus eine 'richtige' Extension machen?
    Das wäre nicht schlecht ;-)

    Gruß
    Thomas

  6. #6
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.335
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von folkfreund Beitrag anzeigen
    Bei Contao muss nicht unbedingt eine Endezeit angegeben sein. Wie bekommt man eine entsprechende Abbildung im Kalender hin?
    Naja, das könnte man ja lösen, indem man immer dann, wenn es keine Endezeit gibt, die Startzeit zum Befüllen nutzt, oder?
    Zitat Zitat von folkfreund Beitrag anzeigen
    Vielleicht sollte man daraus eine 'richtige' Extension machen?
    Ja, ich brauch das auch demnächst. Soweit tut das ja schon mal. Baust Du das oder mach ich das als Ext.?

  7. #7
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Hallo Lucina,

    ich hab im Moment nicht ganz viel Zeit. Eine erste Version einer solchen Erweiterung kann ich aber gerne zusammenbasteln. Aber ich werde wohl kurzfristig nicht die Möglichkeit haben, das Ganze richtig rund zu machen.
    Die erste Version wird also keine Unterstützung von Events mit Wiederholungen bieten, wahrscheinlich auch nicht für Events über mehrere Tage.
    Ich brauche beides in meiner Anwendung nicht .

    Vielleicht hast du ja Lust, das dann in deiner Anwendung zu verfeinern - falls du das brauchst.
    Ich fände es übrigens sowieso gut, wenn jemand den Code von 'nicht-Cracks' wie mir gegenlesen würde. Ich kann nur lernen!

    Ich melde mich bald hier, wenn es eine erste Version gibt.

    folkfreund

  8. #8
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard Design-Idee

    Bevor es losgeht wüsste ich gerne, was ihr davon haltet:

    Den gewünschten Link auf die ICAL-Datei könnte man ja an verschiedenen Stellen einbauen wollen. Darum könnte es eine gute Idee sein, den oben skizzierten Code durch ein Inserttag erzeugen lassen:
    Code:
    {{event_ical::*}}
    * soll durch die ID des Events ersetzt werden.

    In einem der event_xxx-Templates würde dann an geeigneter Stelle eingefügt:
    PHP-Code:
    $this->replaceInsertTags('{{event_ical::' $this->id '}}'); 
    Das ist leider etwas kompliziert. Hat jemand eine geschicktere Idee?

    Ich freue mich auf eure Meinung dazu,
    folkfreund

  9. #9
    Contao-Nutzer
    Registriert seit
    01.02.2012.
    Beiträge
    8

    Standard Erweiterung?

    Gibt es in der Zwischenzeit Neuigkeiten?

    Brauche nämlich genau die gleiche Funktion .

    grüße,
    marvin
    "Die Wissenden reden nicht, die Redenden wissen nicht." - jap. Sprichwort

  10. #10
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Hi Marvin,

    sorry, aber aus der Erweiterung ist nichts geworden. Auf meiner Seite läuft weiterhin die im Post #4 beschriebene Lösung (und scheint auch zu funktionieren )

    Gruß,
    folkfreund

  11. #11
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    kleine Verbesserung:
    aus tz="Europe/Berlin";
    PHP-Code:
    $tz $GLOBALS['TL_CONFIG']['timeZone']; 
    machen. Damit ist dann die Systemeinstellung für die Timezone zuständig
    Geändert von magicsepp (22.02.2013 um 11:22 Uhr)

  12. #12
    Contao-Nutzer
    Registriert seit
    01.02.2012.
    Beiträge
    8

    Standard

    @folkfreund: Schade, aber ich hab deine Lösung auch so eingebunden und sie scheint soweit auch zu funktionieren .

    @magicsepp: Danke das ich da nicht selbst draufgekommen bin...

    Zu Post #4:

    Ich musste nur ein
    PHP-Code:
    require_once('../../system/helper/mbstring.php'); 
    in die "sendIcal.php"-Datei einfügen, sonst hat er die "utf8_*"-Funktionen nicht gefunden.

    Grüße,
    Marvin
    "Die Wissenden reden nicht, die Redenden wissen nicht." - jap. Sprichwort

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
  •