Hallo zusammen, das Problem ist schon gelöst, wollte es nur noch hier posten, damit andere das nicht selber lösen müssen.
Also, wenn man ein ics-File downloadet, dann ist im ICS-File folgender Content...
Code:
<div class="event layout_full block" itemscope itemtype="http://schema.org/Event">
<h1 class="title">Testevent</h1>
<div class="info">
<time datetime="2021-08-01" itemprop="startDate">2021-08-01</time>
</div>
<div class="clear"></div>
testeventBEGIN:VCALENDAR
VERSION:2.0
PRODID:https://domainname.at
BEGIN:VEVENT
UID:6549f22312345
DTSTART:20210801T000000
SEQUENCE:0
TRANSP:OPAQUE
DTEND:20210801T235959
SUMMARY:Testevent
CLASS:PUBLIC
DTSTAMP:20210415T075827Z
END:VEVENT
END:VCALENDAR
Alte Hasen werden sofort sehen das der HTML-Code, der da nicht rein gehört und das ICS-File zerstört, vom event_full.html5 Template kommt. Ich habe vorher die ganze Erweiterung debugged bis ich das kapiert hatte
. Lösen konnte ich das, indem ich das Template um eine If-Schleife außen rum erweitert habe wie folgt....
Code:
<?php if (!isset($_GET['ics'])): ?>
<div class="event layout_full block<?= $this->class ?>" itemscope itemtype="http://schema.org/Event">
<h1 class="title"><?= $this->title ?></h1>
<div class="info">
<time datetime="<?= $this->datetime ?>" itemprop="startDate"><?= $this->date ?><?php if ($this->time): ?>, <?= $this->time ?><?php endif; ?></time>
<?php if ($this->location): ?>
<p class="location"><?= $this->locationLabel ?>: <?= $this->location ?></p>
<?php endif; ?>
</div>
<div class="clear"></div>
<?php if ($this->recurring): ?>
<p class="recurring"><?= $this->recurring ?><?php if ($this->until) echo ' ' . $this->until; ?>.</p>
<?php endif; ?>
<?php if ($this->hasDetails): ?>
<?= $this->details ?>
<?php else: ?>
<div class="ce_text block" itemprop="description">
<?= $this->teaser ?>
</div>
<?php endif; ?>
<?php if ($this->enclosure): ?>
<div class="enclosure">
<?php foreach ($this->enclosure as $enclosure): ?>
<p><?= Image::getHtml($enclosure['icon'], '', 'class="mime_icon"') ?> <a href="<?= $enclosure['href'] ?>" title="<?= $enclosure['title'] ?>" itemprop="url"><?= $enclosure['link'] ?> <span class="size">(<?= $enclosure['filesize'] ?>)</span></a></p>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
<?php else: ?>
<?= trim($this->details) ?>
<?php endif; ?>
Wichtig: diese Zeile "<?= trim($this->details) ?>" muss genau so, mit trim() und ganz links, stehen. Ansonsten hat man Leerzeichen vor "BEGIN:VCALENDAR" und dann funktioniert das ICS-File nicht im Thunderbird.
Ich weiß, echte Lösung ist das nicht, das sollte in der Erweiterung gefixt werden, aber für einen Pullrequest blicke ich zu wenig durch warum da das HTML gerendert wird.
LG Mike
Lesezeichen