Hallo Tril,
wunderbar, das hat geklappt. Leider wird bei mir das Datum
nicht richtig geparst. Ich habe mir ein kleines Chaos zusammengeschrieben,
um auf verschiedene Möglichkeiten verschieden zu reagieren:
PHP-Code:
<?php if (!$event['recurring']): ?>
<p class="Eventdatum">
<?php $this->future = $event['cssClass']; ?>
<?php if ($this->future=='future'): ?>
<?php echo $this->parseDate('F Y', $event['startDate']); ?>
<?php else: ?>
<?php if (!$event['endDate']): ?>
<?php echo $this->parseDate('j. F Y', $event['startDate']); ?>
<?php else: ?>
<?php if ($event['endDate']): ?>
<?php $this->span = $this->parseDate('F', $event['startDate']); ?>
<?php if ($this->span==$event['month']): ?>
<?php echo $this->parseDate('j.', $event['startDate']); ?>
<?php echo ' - '.$this->parseDate('j. F Y', $event['endDate']); ?>
<?php else: ?>
<?php echo $this->parseDate('j. F', $event['startDate']); ?>
<?php echo ' - '.$this->parseDate('j. F Y', $event['endDate']); ?>
<?php endif; ?>
<?php endif; ?>
<?php endif; ?>
<?php if ($event['time']): ?>
<?php echo ', '.$event['time'].' Uhr'; ?>
<?php endif; ?>
<?php endif; ?>
</p>
<?php endif; ?>
<?php if ($event['recurring']): ?>
<p class="Eventdatum">
<?php $this->start_month = $this->parseDate('F', $event['startDate']); ?>
<?php $this->end_month = $this->parseDate('F', $event['repeatEnd']); ?>
<?php if ($this->start_month==$this->end_month): ?>
<?php echo $this->parseDate('j.', $event['startDate']); ?>
<?php echo ' - '.$this->parseDate('j. F Y\, ', $event['repeatEnd']); ?>
<?php else: ?>
<?php echo $this->parseDate('j. F', $event['startDate']); ?>
<?php echo ' - '.$this->parseDate('j. F Y\, ', $event['repeatEnd']); ?>
<?php endif; ?>
<?php echo $event['recurrences']+1; ?>
<?php echo $this->parseDate(' \T\e\r\m\i\n\e l\s\, ', $event['startDate']); ?>
<?php echo $this->parseDate('G:i\ ', $event['startTime']); ?>
<?php echo $this->parseDate(' \- G:i\ \U\h\r', $event['endTime']); ?>
</p>
<?php endif; ?>
Es wird also zunächst mal geprüft, ob es sich um eine ungenaue Terminangabe handelt (cssClass = future), wenn ja,
wird einfach nur der Monat und das Jahr, in dem der Termin auf jeden Fall stattfinden wird, ausgegeben. Wenn nicht, wird
als nächstes geprüft, ob es ein "am"-Event oder ein "von-bis"-Event (sprich endDate 1/0) ist. Darüber hinaus wird überprüft, ob
sich der Monat, in dem das "von-bis"-Event stattfindet, ein und derselbe ist. Wenn ja, wird das Datum mit nur einfachem Monat ausgegeben, wenn nicht, mit den beiden verschiedenen Monaten. Dies alles passiert nur, wenn sich das Event nicht wiederholt.
Wiederholt es sich, wird zunächst wiederum überprüft, ob es sich im gleichen Monat wiederholt oder mehrere Monate "in Anspruch nimmt". Genau genommen müsste man das auch noch mit den Jahren machen, um die Ausgabe im Zweifelsfall so kurz und übersichtlich wie möglich zu halten..
Dann wird die Anzahl der Wiederholungen+1 ausgegeben und über parseDate('... l\s, ', $event['startDate']); ausgegeben. Das " l " steht hierbei für den ausgeschriebenen Wochentag, an den dann ein "s" gehängt wird.
Was das nle_html_events.tpl nicht liefert sind Variablen wie firstDay, month, day, ... Klar könnte ich die selbst definieren, aber z.B. $start_month und $end_month habe ich ja selbst definiert und in Abhänigkeit von $startDate und $repeatEnd gesetzt, also Variablen, die ja offenkundig existieren. Und scheinbar bleiben meine definierten Variablen trotzdem leer.
Was mache ich falsch bzw. fehlt da etwas?
Edit: Es scheint offensichtlich Probleme zu geben, den Monat über parseDate('F', $event['startDate']); zu parsen. Entweder das "F" ist problematisch oder es muss irgendwie an der Tabelle liegen?
Lesezeichen