Ankündigung

Einklappen
Keine Ankündigung bisher.

Kalender mit .ics Datei

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Codebeispiel] Kalender mit .ics Datei

    Habe mal etwas gebaut um aus anderen Lösungen als Google den/die Kalender anzeigen zu lassen.

    Die ical.zip entpacken und in das Verzeichnis ..../smartvisu/lib/calendar/service/ kopieren.

    In der Konfiguration die Option ical auswählen und folgende Parameter eintragen:

    xx(Anzahl Tage);http://user : password@meinserver.de:Port/ical/

    Funktioniert mit Zarafa als Groupware, andere habe ich noch nicht getestet..

    PS.: Wenn ihr mehrere Kalender darstellen wollt, die Parameterzeile entsprechend dem Muster fortsetzen.

    http://mail24.pw/ical.zip

    #2
    Klasse

    Hi Mystery9,

    bin eben durch Zufall auf Deine super Modifikation gestossen. Danke!
    Habe bei mir auch wegen der G**gle-Spy-Abneigung einen Zarafa auf meine QNAP gepackt und nach Einspielen Deiner Mod. klappt es nun ohne G**gle.

    Zwei Dinge sind mir dabei allerdings aufgefallen:
    1. Die "Doku" war am Anfang etwas irreführend bzgl. der Syntax der Config. Evtl. ist besser zu verstehen wenn es "<Anzahl Tage>;http://<user>:<password>@<Serveradresse>:<Port>/ical/" heißt. Bin am Anfang mit dem xx ins Schleudern geraten, da ich dachte hier nummeriert man die Mehrfacheinträge und in Klammern steht dann die Anzahl der Tage. Keine Kritik, eher für andere gedacht.

    2. Terminserien scheinen durch das Filterraster zu fallen, da die Werte hinter DTSTART und DTEND nicht sauber interpretiert werden können. Bin leider eine echte PHP-Flasche, daher kann ich es leider nicht ändern. Man müßte beim Auslesen hinter bspw. DTSTART: nochmal bis zum nächsten : parsen und dann lesen.
    Ein einfacher Termin lautet bspw:
    DTSTART:20140727T170000Z

    wohingegen eine Serie so aussieht:
    DTSTART;VALUE=DATE;TZID="(GMT +01:00)":20140801

    Anyway, dickes Danke für die Erweiterung!

    @Martin: Gibt es denn die Möglichkeit diese Änderung dauerhaft einzubauen, sprich Updateresisdent?

    Cheers,
    Oliver

    Kommentar


      #3
      Hi Mystery9,

      auch von meiner Seite erstmal vielen Dank für deine Arbeit. Ich nutze deine ical Erweiterung um den Müllkalender meines Wohnorts in der smartVISU anzuzeigen.

      Ich habe die Datei Abfallkalender2014.ics direkt im smartVISU Ordner abgelegt und mit:

      Code:
      14;http://ip_der_visu/smartvisu/Abfallkalender2014.ics
      in der Config eingebunden. Das funktioniert auch soweit.

      Nun zu meiner Frage, wie kann man die Hintergrundfarbe z.B. für einen Müllkalender beeinflussen, sprich was muss wo in der ics Datei stehen, damit z.B. das Mülleimer Symbol mit grauer Hintergrundgrafik angezeigt wird?

      Danke schon mal.

      Gruß

      Kommentar


        #4
        ein anderes Beispiel für ICS

        Mahlzeit zusammen,

        nachdem ich weder mit dem ICS noch der Google-API glücklich geworden bin habe ich mich auch an einem ICS-Calender versucht.

        Das ganze ICS-Handling macht in dem Fall die php-Klasse von https://github.com/johngrogg/ics-parser.

        Damit bleibt die eigentliche Kalenderklasse sehr übersichtlich und schlank.
        Da ich mit den @icon-Tags aus dem Readme nicht wirklich Erfolg hatte habe iteriere ich über tags mit "§".

        Installation:
        1. Herunterladen des "yoshi-ical.zip"-Anhangs
        2. kopieren auf den smartVISU-Server und ssh-Login dort
        3. cd /var/www/smartvisu/lib/calendar/
        4. unzip yoshi-ical.zip

        Verwendung:
        1. Auswahl von "yoshi-ical" als Kalenderdienst in den smartVISU-Einstellungen
        2. Eintragen der ICS-Datei in den Einstellungen.

        (Die Datei darf lokal liegen oder [je nachdem wie php eingestellt ist] auch eine URL sein. Siehe PHP: file - Manual)


        Features:
        • Wiederkehrende Termine mit dem Typ "Endedatum" (ical kann "Endedatum" und "Anzahl". Letzteres kann die verwendete php-Klasse nicht!)
        • setzen von beliebigen Kalender-Tags von smartVISU durch Verwendung von "§tag wert" im Beschreibungsfeld.
        • Anzeige aller Termine, die ein neueres Ende haben als "jetzt"
        • Verwendung der "count"-Variable zur Beschränkung der Anzeigemenge.
        • Im Gegensatz zur Klasse des Threaderöffners geht leider nur exakt ein ICS.

        Falls jemand Anregungen hat darf er sich gerne melden. Wenn jemand eine absolut brauchbare php-iCal-Klasse hat dann sollte er sich auf jeden Fall melden :-)

        Yoshi
        Angehängte Dateien

        Kommentar


          #5
          Halo Yoshi,
          danke für das Programm.
          Ich habe mir den Abfallkalender 2015 runtergelassen.
          Hier ein Auszug:
          Code:
           BEGIN:VEVENT
          UID:20141212T202012CET-4208OuiuZo@avea.info
          DTSTAMP:20141212T191212Z
          CATEGORIES:Abfuhrkalender
          DTSTART;VALUE=DATE:20150105
          LOCATION:Schützenweg
          SUMMARY:Restmülltonne
          END:VEVENT
          An welcher Stelle kann ich denn
          §icon icons/ws/message_garbage.png und
          §color #333399
          einbauen?
          DANKE!

          Gruß
          Henry
          Neustes Projekt: Ubutu als VM (Parallels) auf einem MacMini
          Raspberry Pi - MacMini - geoTHERM VWL S

          Kommentar


            #6
            Lt. Anleitung in die Beschreibung, habe es aber auch noch nicht ausprobiert.
            Code:
            DESCRIPTION:Beschreibung des Termines

            Kommentar


              #7
              Zitat von hilknx Beitrag anzeigen
              Halo Yoshi,
              danke für das Programm.
              Ich habe mir den Abfallkalender 2015 runtergelassen.
              Hier ein Auszug:
              Code:
               BEGIN:VEVENT
              UID:20141212T202012CET-4208OuiuZo@avea.info
              DTSTAMP:20141212T191212Z
              CATEGORIES:Abfuhrkalender
              DTSTART;VALUE=DATE:20150105
              LOCATION:Schützenweg
              SUMMARY:Restmülltonne
              END:VEVENT
              An welcher Stelle kann ich denn
              §icon icons/ws/message_garbage.png und
              §color #333399
              einbauen?
              DANKE!

              Gruß
              Henry
              Wie Sandmann60 schon schrieb bei DESCRIPTION. Wenn du aber einen "echten" Abfallkalender hast würde ich das PHP etwas pimpen und anhand des SUMMARY-Textes die Icons anzeigen.
              Solange dein "Abfallkalenderlieferant" nichts am ICS ändert würde der einfach so funktionieren.
              Konkret würde ich um diese Logik:
              PHP-Code:
               if (strpos($icsevent['DESCRIPTION'],'§') !== false) {
                                      
              $treffer explode('§'$icsevent['DESCRIPTION']);
                                      foreach(
              $treffer as $versenkt) {                
                                              
              $felder explode(' 'trim($versenkt' \n')); 
                                              if (!empty(
              $felder['1'])) {                     
                                                      
              $this->data[$eventid][$felder['0']] = stripslashes($felder['1']);
                                              }                                               
                                      }                                               
                              } else {                                        
                                      
              $this->data[$eventid]['content'] = $icsevent['DESCRIPTION'];
                              } 
              durch dieses ersetzen:
              PHP-Code:
              switch ($icsevent['SUMMARY']) {
                      case 
              "Restmülltonne":                           
                              
              $this->data[$eventid][icon] = "icons/ws/message_garbage.png";
                              
              $this->data[$eventid][color] = "#333399";       
                      break;                                          
                      case 
              "Biomülltonne":                            
                              
              $this->data[$eventid][icon] = "icons/ws/message_garbage.png";
                              
              $this->data[$eventid][color] = "#cc00cc";       
                      break;                                          
                      case 
              "Papiertonne":                             
                              
              $this->data[$eventid][icon] = "icons/ws/message_garbage.png";
                              
              $this->data[$eventid][color] = "#0000ff";       
                      break;                                          
                      case 
              "Gelber Sack":                             
                              
              $this->data[$eventid][icon] = "icons/ws/message_garbage.png";
                              
              $this->data[$eventid][color] = "#ffff00";       
                      break;                                          
                      default:                                        
                              if (
              strpos($icsevent['DESCRIPTION'],'§') !== false) {
                                      
              $treffer explode('§'$icsevent['DESCRIPTION']);
                                      foreach(
              $treffer as $versenkt) {                
                                              
              $felder explode(' 'trim($versenkt' \n')); 
                                              if (!empty(
              $felder['1'])) {                     
                                                      
              $this->data[$eventid][$felder['0']] = stripslashes($felder['1']);
                                              }                                               
                                      }                                               
                              } else {                                        
                                      
              $this->data[$eventid]['content'] = $icsevent['DESCRIPTION'];
                              }                                               
                      break;                                          

              Dann wird vor dem Einfügen der Bilder geschaut ob in der Zusammenfassung eines der genannten Wörter (oben: Restmülltonne, Biomülltonne, Papiertonne, Gelber Sack) steht und die passenden Icons gesetzt.
              Sind die Worte nicht vorhanden, dann wertet das Script nach wie vor das Beschreibungsfeld aus.
              Natürlich musst du die Farben der Tonnen und die Texte anpassen.

              Yoshi

              Kommentar


                #8
                Und noch ein ical-Parser

                Mahlzeit,

                nachdem die verwendete Bibliothek class.iCalReader.php doch einige Nachteile hat, hab ich versucht sabreDAV zu verwenden.
                Das Resultat ist im Anhang.
                Ihr müsst dazu php-sabredav installieren. Auf dem Raspberry PI und unter Debian gehts mit "apt-get install php-sabredav" und dem neustarten des Webservers.

                Mit dem SabreDAV-php sollten auch die Abfallkalender funktionieren.

                Yoshi

                P.S. einen Schönheitsfehler hats noch: Im php_log kommt: PHP Warning: json_encode(): recursion detected in /var/www/smartvisu/lib/service.php on line 101
                Aber den Fehler find ich auch noch.
                Angehängte Dateien

                Kommentar


                  #9
                  @Yoshi

                  Da ich auch einen reinen Abfallkalender verwende, habe ich deine Erweiterung für einen reinen Abfallkalender direkt mit eingebaut.

                  Funktioniert super, vielen Dank.

                  Eine Frage habe ich noch, dadurch das ich den als reinen Abfallkalender verwende, ist bei mir die Uhrzeit überflüssig und eher störend, siehe angehängten screenshot.

                  Was müsste ich ändern um nur das Datum anzeigen zu lassen, idealerweise auch als switch case Konstrukt?

                  Vielen Dank schon mal.

                  Gruß,
                  Henning
                  Angehängte Dateien

                  Kommentar


                    #10
                    Hallo Yoshi,

                    auch von mir ein Danke. Hatte gestern schon mal damit rumgespielt, aber irgendwie habe ich bzgl. der Dateiablage noch ein Thema (oder es ist doch was ganz anderes). Könntest Du bitte noch kurz ein Beispiel posten wo Du die Datei ablegst und was dann als Eintrag auf der Configseite stehen sollte.

                    Wäre klasse!

                    VG,
                    Oliver

                    Kommentar


                      #11
                      Hi Oliver,

                      einfach deine Datei z.B. Abfallkalender2014.ics in

                      Code:
                      /var/www/smartvisu/
                      ablegen und auf der smartvisu config Seite dann den absoluten Pfad eintragen:

                      Code:
                      /var/www/smartvisu/Abfallkalender2014.ics
                      Gruß,
                      Henning

                      Kommentar


                        #12
                        Hi Henning,

                        danke für die schnelle Rückmeldung.

                        Das www hat gestern gefehlt.

                        Supi, na dann werd ich doch gleich mal wieder testen!

                        Cheers,
                        Oliver

                        Kommentar


                          #13
                          @ratzi82: Das Datum/Zeitformat steht in der calendar.php ein Verzeichnis höher.
                          Wenn du da dran schraubst und du machst ein Update dürften deine Änderungen weg sein.

                          @Sandman60: Entweder du nimmst einen absoluten lokalen Dateipfad wie von ratzi82 geschrieben, oder du trägst die komplette URL ein. Zum Beispiel: http://recycling.gonam.de/kalender/Wuestenrot.ics

                          Yoshi

                          Kommentar


                            #14
                            Hallo,
                            irgendwie war am WE bei mir der Wurm drinnen, kurzum, nach dem Install von SABRE-DAV inkl. der abhängigen Paketen hat es mir kurzerhand die halbe PI-Config zerschossen, angefangen das der Webserver nicht mehr auf die Beine gekommen ist bis hin zum Verlust meiner Sudo-Rechte (was dann nicht besonders viel Spass macht wenn man kein Root-PW gesetzt hat und demnach dann auch nicht mehr ohne Rescue rankommt).
                            Daher die Empfehlung an alle auf jedem Fall das Root-PW auf dem PI-Image zu setzen für den Notfall.

                            Bin mir nicht sicher ob es nur am SABRE-DAV-Install lag oder was sonst schief gelaufen ist, aber als Linux-DAU kann ich nur sagen, Finger weg wenn man nicht weiß was man tut...

                            Ich werde daher mich auf die erste Version konzentrieren.
                            Zwischenzeitlich läuft wieder alles, Backup- und Standbymaschine sei Dank.

                            Ach ja, hier noch eine Karikatur welche so ein bischen die Situation am WE bei mir beschreibt, aber das hat wohl schon jeder von uns mal erlebt.

                            Cheers,
                            Oliver

                            Kommentar


                              #15
                              Problem

                              Halo Yoshi,
                              danke für das Programm.
                              Ich habe eine neue Installation unter Ubuntu Server 14.04.1 LTS angelegt.
                              Dann habe ich mir von der ASTO in Gummersbach den Abfallkalender 2015 runtergeladen.
                              Nach deinem Beitrag Nr. 4 den yoshi-ical.zip installiert.
                              SmartVISU zeigt mir keinen einzigen Eintrag an.
                              Im Debug-Modus zeigt mir das LOG-File auch keine Fehler an.
                              Der Kalender im OFFLINE-Modus funktioniert.
                              Muss ich von https://github.com/johngrogg/ics-parser. noch etwas installieren oder ist im yoshi-ical.zip alles enthalten?
                              Was kann ich noch testen?


                              Gruß
                              Henry
                              Neustes Projekt: Ubutu als VM (Parallels) auf einem MacMini
                              Raspberry Pi - MacMini - geoTHERM VWL S

                              Kommentar

                              Lädt...
                              X