Ankündigung

Einklappen
Keine Ankündigung bisher.

nextCloud (ownCloud) Kalender per CalDAV einbinden

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

    #76
    Dann bin wohl ich schuld - ich weiss nur noch nicht, weshalb.

    Kommentar


      #77
      Ok, ich habe den Fehler gefunden und gefixt.
      Eingebaut hatte ich ihn am 7. März, ihr habt aber lange gebraucht, das zu merken.

      Kommentar


        #78
        Zitat von smai Beitrag anzeigen
        Ok, ich habe den Fehler gefunden und gefixt.
        jepp super danke funktioniert.

        Zitat von smai Beitrag anzeigen
        Eingebaut hatte ich ihn am 7. März, ihr habt aber lange gebraucht, das zu merken.
        Hehe ich war da super schnell
        Am 15.10. die Develop installiert und sofort den Bug gemeldet.

        Meine Installation: VM Debian Jessie SH NG 1.4, SmartVISU 2.9, KNX, DMX, 1-wire, Cisco ASA 5512X IPS, VMware vSphere 6

        Kommentar


          #79
          Jupp, geht wieder - vielen Dank, Stefan!
          /tom

          Kommentar


            #80
            hallo ,
            muß das thema mochmal aufgreifen,
            bei dieser Debag anweisung muß was oder wie ist die Antwort die ich erhaltem muß,
            so das alles geht.
            http://localhost/smartVISU/lib/calen...Family&debug=1

            jetzt sagt er mir
            principle_url

            Kommentar


              #81
              Bei mir sieht es folgendermassen aus (Kalender ohne Termine), aber das hängt natürlich vom System ab.

              Code:
              /*******************************************************************************
              principle_url
              --------------------------------------------------------------------------------
              /owncloud/remote.php/caldav/principals/smai/
              *******************************************************************************/
              
              /*******************************************************************************
              calendar_home_url
              --------------------------------------------------------------------------------
              /owncloud/remote.php/caldav/calendars/smai/
              *******************************************************************************/
              
              /*******************************************************************************
              calendar_url of 'personal'
              --------------------------------------------------------------------------------
              /owncloud/remote.php/caldav/calendars/smai/personal/
              *******************************************************************************/
              
              /*******************************************************************************
              calendar_url of 'k2'
              --------------------------------------------------------------------------------
              /owncloud/remote.php/caldav/calendars/smai/k2/
              *******************************************************************************/
              
              /*******************************************************************************
              calendar_url of 'waste'
              --------------------------------------------------------------------------------
              /owncloud/remote.php/caldav/calendars/smai/mll/
              *******************************************************************************/
              
              /*******************************************************************************
              calendar_url of 'personal(rene)'
              --------------------------------------------------------------------------------
              /owncloud/remote.php/caldav/calendars/smai/personal_shared_by_rene/
              *******************************************************************************/
              
              /*******************************************************************************
              data
              --------------------------------------------------------------------------------
              Array
              (
              )
              
              *******************************************************************************/
              
              []
              Ich nehme mal nicht an, dass bei dir nur ein blankes   principle_url  steht, mindestens ein paar Sterne und Striche müssten vorhanden sein.
              Kopier also bitte die exakte Ausgabe.


              P.S.: Lies bitte das nächste Mal deine Frage nochmal durch, bevor du sie abschickst. Ich musste diese etwa 5 mal lesen, bis ich halbwegs verstanden hatte, was du wissen willst.

              Kommentar


                #82
                also wäre das so OK

                principle_url -------------------------------------------------------------------------------- /spica-calendar/caldav/principals/edwin.lars@t-online.de/ ************************************************** *****************************/ /************************************************** ***************************** calendar_home_url -------------------------------------------------------------------------------- /spica-calendar/caldav/principals/edwin.lars@t-online.de/calendars/ ************************************************** *****************************/ /************************************************** ***************************** calendar_url of 'feiertage nordrhein-westfalen' -------------------------------------------------------------------------------- /spica-calendar/caldav/principals/edwin.lars@t-online.de/calendars/INFO_CHANNEL-2-512/ ************************************************** *****************************/ /************************************************** ***************************** calendar_url of 'mein kalender' -------------------------------------------------------------------------------- /spica-calendar/caldav/principals/edwin.lars@t-online.de/calendars/USER_CALENDAR-MAIN/ ************************************************** *****************************/ /************************************************** ***************************** calendar_url of 'geburtstage' -------------------------------------------------------------------------------- /spica-calendar/caldav/principals/edwin.lars@t-online.de/calendars/ADDRESS_BOOK/ ************************************************** *****************************/ /************************************************** ***************************** calendar_url of 'feiertage rheinland-pfalz' -------------------------------------------------------------------------------- /spica-calendar/caldav/principals/edwin.lars@t-online.de/calendars/INFO_CHANNEL-2-1024/ ************************************************** *****************************/ /************************************************** ***************************** data -------------------------------------------------------------------------------- Array ( ) ************************************************** *****************************/ [] Oder ist halt t-online

                Kommentar


                  #83
                  Ja, könnte etwa hinkommen.
                  So richtig gut lesen kann ich es aber nicht, weil du es nicht als Code markiert hast.

                  Jetzt müsstest du statt "Family" noch einen deiner tatsächlichen Kalender abfragen.

                  Vielleicht solltest du aber auch einfach erst erzählen, was denn bei dir genau nicht funktioniert.

                  Kommentar


                    #84
                    Ich bekomme ihn nicht angezeigt und ich kann die Daten ( Müll , ( ferien )) nicht weiter verarbeiten.

                    Kommentar


                      #85
                      Hallo,

                      ich habe mich mit dem Service nextcloud.php beschäftigt und einen Fehler gefunden!

                      Original:
                      PHP-Code:
                      public function run()
                           {
                               
                      $srcurl $this->url;
                               if (
                      strpos(config_calendar_name",") > 0)
                              {
                                  
                      $snippets explode(","config_calendar_name);
                              }
                              else
                              {
                                  
                      $snippets[] = config_calendar_name;
                              } 
                      In dieser Version greift der Kalender nur auf die Standardeinstellungen zurück.
                      Die Einstellungen im Sourcecode werden nicht akzeptiert.
                      Mit den nachfolgenden Änderungen werden alle Kompinationen berücksichtig und man kann damit auch den Müllkalender extra aufrufen.
                      HTML-Code:
                      {{ calendar.list( 'calendarlist', 'Kalender', 10, [ '#A8C2E1', '#FF0000', '#FFFF80', '#FFFF80'] ,'', ['personal','feiertage','div-geburtstage','contact_birthdays'] ) }}
                      HTML-Code:
                      {{ calendar.waste( 'calendarwaste', 'Müllabfuhr', 'abfall', 10) }}
                      PHP-Code:
                      public function run()
                          {
                               
                      $srcurl $this->url;
                               
                      $calendarnames $this->calendar_names;
                               if (
                      strpos($calendarnames",") > 0)
                              {
                                  
                      $snippets explode(","$calendarnames);
                              }
                              else
                              {
                                  
                      $snippets $this->calendar_names;
                              } 
                      Vielleicht kann das ja jemand gebrauchen

                      Johann

                      PS: noch die komplette nextcloud.php

                      PHP-Code:
                      <?php
                      /**
                       * -----------------------------------------------------------------------------
                       * @package     smartVISU
                       * @author      Johannes Willnecker, Sebastian Helms
                       * @copyright   2015
                       * @license     GPL [http://www.gnu.de]
                       * -----------------------------------------------------------------------------
                       */


                      require_once '../../../lib/includes.php';
                      require_once 
                      const_path_system.'calendar/calendar.php';

                      /**
                       * This class reads a caldav calendar
                       */
                      class calendar_caldav extends calendar
                      {

                          private function 
                      startElement($element)
                          {
                              if(
                      strcmp($element,"VEVENT") == 0)
                              {
                                  
                      $this->vevent = array(
                                      
                      'start' => date('y-m-d'0).' '.gmdate('H:i:s'0),
                                      
                      'end' => date('y-m-d'0).' '.gmdate('H:i:s'0),
                                      
                      'title' => (string)(""),
                                      
                      'content' => (string)(""),
                                      
                      'where' => (string)(""),
                                      
                      'link' => (string)("")
                                  );
                                  
                      $this->startts 0;
                                  
                      $this->inVEVENT true;
                              }
                          }

                          private function 
                      endElement($element)
                          {
                              if(
                      $element == 'VEVENT')
                              {
                                  
                      $this->startdatearray[] = $this->startts;
                                  
                      $this->data[] = $this->vevent;
                                  
                      $this->inVEVENT false;
                              }
                          }

                          private function 
                      Value($name$value)
                          {
                              if(
                      $this->inVEVENT == true)
                              {
                                  if(
                      $name == 'SUMMARY')
                                  {
                                      
                      $this->vevent['title'] = (string)($value);
                                  }
                                  if(
                      $name == 'DESCRIPTION')
                                  {
                                      
                      $this->vevent['content'] = (string)($value);
                                      foreach (
                      explode("\\n"$value) as $line)
                                      {
                                          
                      preg_match_all('/@([^ ]+) +(.*)$/'$line$items);
                                          if (
                      $items[1][0] == "icon" or $items[1][0] == "color")
                                          {
                                              
                      $this->vevent[$items[1][0]] = (string)$items[2][0];
                                          }
                                      }
                                  }
                                  if(
                      $name == 'LOCATION')
                                  {
                                      
                      $this->vevent['where'] = (string)($value);
                                  }
                                  if(
                      $name == 'DTSTART')
                                  {
                                      
                      preg_match('/((.*)=(.*):)?(.*)/'$value$matches);
                                      
                      //TODO TZID handling
                                      
                      date_default_timezone_set('Europe/Berlin');
                                      
                      $ts strtotime($matches[4]) + date("Z"strtotime($matches[4]));
                                      
                      $this->startts $ts;
                                      
                      $this->vevent['start'] = date('y-m-d'$ts).' '.gmdate('H:i:s'$ts);
                                  }
                                  if(
                      $name == 'DTEND')
                                  {
                                      
                      preg_match('/((.*)=(.*):)?(.*)/'$value$matches);
                                      
                      //TODO TZID handling
                                      
                      date_default_timezone_set('Europe/Berlin');
                                      
                      $ts strtotime($matches[4]) + date("Z"strtotime($matches[4]));
                                      
                      $this->vevent['end'] = date('y-m-d'$ts).' '.gmdate('H:i:s'$ts);
                                  }
                              }
                          }


                          private function 
                      get_caldav_calendar($url)
                          {

                              
                      $calStart gmdate("Ymd\THis\Z");
                              
                      $calEnd gmdate("Ymd\THis\Z"strtotime("+4 weeks"));

                              
                      $postdata "<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
                       <D:prop>
                         <C:calendar-data>
                           <C:expand start="".
                      $calStart.""
                                     end="".
                      $calEnd.""/>
                         </C:calendar-data>
                       </D:prop>
                       <C:filter>
                         <C:comp-filter name="
                      VCALENDAR">
                           <C:comp-filter name="
                      VEVENT">
                             <C:time-range start="".
                      $calStart.""
                                           end="".
                      $calEnd.""/>
                           </C:comp-filter>
                         </C:comp-filter>
                       </C:filter>
                      </C:calendar-query>"
                      ;

                              
                      $ctxopts =  array(
                                              
                      'ssl' =>
                                                  array ( 
                      'verify_peer' => false,
                                                          
                      'verify_peer_name' => false
                                                      
                      ),
                                              
                      'http' =>
                                                  array(    
                      'method' => 'REPORT',
                                                          
                      'header' => "Depth: 1\r\n",
                                                                      
                      "Content-Type: application/xml\r\n",
                                                          
                      'content' => $postdata
                                                  
                      )
                                          );
                              
                      $context stream_context_create($ctxopts);

                              
                      $content file_get_contents($urlfalse$context);

                              return 
                      $content;
                          }

                          public function 
                      run()
                          {

                              
                      $srcurl $this->url;
                              
                      $calendarnames $this->calendar_names;

                              if (
                      strpos($calendarnames",") > 0)
                              {
                                  
                      $snippets explode(","$calendarnames);
                              }
                              else
                              {
                                  
                      $snippets $this->calendar_names;
                              }

                              if (
                      substr($srcurl,-1) !== "/" and $snippets[0] !== "")
                              {
                                  
                      $srcurl .= "/";
                              }

                              foreach (
                      $snippets as $snippet)
                              {
                                  
                      $urls[] = $srcurl $snippet;
                              }

                              foreach (
                      $urls as $url)
                              {
                                  
                      $content $this->get_caldav_calendar($url);
                                  
                      $this->debug($content);

                                  if (
                      $content !== false)
                                  {
                                      
                      $xmls[] = simplexml_load_string($content);
                                  }
                              }

                              foreach(
                      $xmls as $xml)
                              {
                                  if (
                      $xml !== false)
                                  {

                                      
                      $this->1;
                                      foreach (
                      $xml->children('d'true) as $entry)
                                      {
                                          foreach (
                      $entry->propstat->prop->children('cal',true) as $cal)
                                          {
                                              if(
                      $cal->getName() == 'calendar-data')
                                              {
                                                  
                      $cal str_replace (array("\r\n ""\n ""\r "), ''$cal);
                                                  
                      preg_match_all('/(.[^;|:]*)?(;|:)(.*)/'$cal$matchesPREG_SET_ORDER);

                                                  foreach(
                      $matches as $values)
                                                  {
                                                      if(
                      $values[1] == 'BEGIN')
                                                      {
                                                          
                      $this->startElement(trim($values[3]));
                                                      }
                                                      else if(
                      $values[1] == 'END')
                                                      {
                                                          
                      $this->endElement(trim($values[3]));
                                                      }
                                                      else
                                                      {
                                                          
                      $this->Value($values[1], trim($values[3]));
                                                      }
                                                  }
                                              }
                                          }
                                      }
                                  }
                                  else
                                  {
                                      
                      $this->error('Calendar: caldav''caldav: Calendar read request failed!');
                                  }
                              }

                              
                      //order events:
                              
                      array_multisort($this->startdatearraySORT_ASC$this->data);
                              
                      $i 1;
                              foreach(
                      $this->data as $key => $value)
                              {
                                  
                      $this->data[$key]['pos'] = $i++;
                              }

                              
                      $this->data array_slice($this->data0$this->count);
                          }
                      }


                      // -----------------------------------------------------------------------------
                      // call the service
                      // -----------------------------------------------------------------------------

                      $service = new calendar_caldav(array_merge($_GET$_POST));
                      echo 
                      $service->json();

                      ?>
                      Angehängte Dateien
                      Zuletzt geändert von Beobachter; 21.08.2019, 20:36.

                      Kommentar


                        #86
                        Hallo,

                        mit den Veränderungen in der nextcloud.php bekomme ich alle Kalender richtig angezeigt!
                        Jetzt wollte ich auch noch die Kalenderfarbe richtig angezeigt bekommen!
                        Ich komme aber nicht dahinter wie dass geht, es wird immer nur die erste Farbe verwendet:
                        Code:
                        {{ calendar.list( 'calendarlist', 'Kalender', 10, [ '#A8C2E1', '#FF0000', '#FFFF80', '#FFFF80'] ,'', ['personal','feiertage','div-geburtstage','contact_birthdays'] ) }}
                        ergibt bei allen Kalender #A8C2E1.

                        Kann mir jemand weiterhelfen?

                        Gruß
                        Johann

                        PS: hänge da jetzt schon ziemlich drann

                        Kommentar


                          #87
                          Wenn ihr calendar.waste habt, scheint ihr 2.9 (develop) zu nutzen.
                          In dieser solltet ihr anstelle einer veralteten nextcloud.php besser den integrierten generischen CalDav-Provider nutzen.

                          Kommentar

                          Lädt...
                          X