Open thenickless opened 3 years ago
Lösung https://github.com/RRZE-Webteam/rrze-rsvp/commit/89a2c9a91f891ae827a0bd0a04d38752f20cfdea ist fehlerfrei, zeigt die richtigen Zeiten an (und valid nach https://icalendar.org/validator.html) ABER kann User verwirren, da auf Klick im Kalender Zeiten als GMT angezeigt werden.
Generiertes .ICS : userid-test-raum-202110071300.txt (muss von .txt zu .ics umgenannt werden, weil Github kein .ics zulässt)
Anzeige iCal:
Infos zum Thema:
Warum nicht einfach UTC? => siehe Screenshot oben
Wir brauchen unbedingt VTIMEZONE Gründe:
Vorschlag: VObject library nutzen https://packagist.org/packages/sabre/vobject Denn es ist einfacher, als wie zB https://wordpress.org/plugins/ics-calendar/ es macht: das mühsam nachzubauen. Anleitung / Snippets dafür: https://stackoverflow.com/questions/6682304/generating-an-icalender-vtimezone-component-from-phps-timezone-value
Wir können es in diversen Plugins nutzen => in https://github.com/RRZE-Webteam/rrze-wp packen
Mit Version 2.6.23 wurde ein Quickfix eingespielt, das folgende Fehler behebt:
https://icalendar.org/validator.html Errors Invalid TZID value or missing VTIMEZONE component (Europe/Amsterdam) near line # 4 Reference: 3.2.19. Time Zone Identifier Invalid TZID value or missing VTIMEZONE component (Europe/Amsterdam) near line # 4 Reference: 3.2.19. Time Zone Identifier
Aber nun ist die Timezone mit Europe/Berlin hardcoded und das ist nicht gut.
TZURL:http://tzurl.org/zoneinfo-outlook/Europe/Berlin reicht nicht aus. D.h. "TZURL:http://tzurl.org/zoneinfo-outlook/" . get_option('timezone_string') würde nicht ausreichen. Es müsste explizit mindestens STANDARD oder DAYLIGHT angegeben werden.
Errors At least one STANDARD or DAYLIGHT property must be defined here near line # 5 Reference: RFC 5545 3.6.5. Time Zone Component
CALSCALE:GREGORIAN BEGIN:VTIMEZONE TZID:Europe/Berlin TZURL:http://tzurl.org/zoneinfo-outlook/Europe/Berlin X-LIC-LOCATION:Europe/Berlin BEGIN:DAYLIGHT TZOFFSETFROM:+0100 TZOFFSETTO:+0200 TZNAME:CEST DTSTART:19700329T020000 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:+0200 TZOFFSETTO:+0100 TZNAME:CET DTSTART:19701025T030000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU END:STANDARD END:VTIMEZONE
Fazit: Entweder get_option('gmt_offset') für TZOFFSETFROM und ..TO für DAYLIGHT und STANDARD nutzen (= umständlich) oder auf Zulu Time Zone (entspricht UTC) setzen (= ideal)