Der Abstand der Events von oben wird schon im Module berechnet und dann mit den Variablen ausgebeben, z.B. als Wert position:absolute;top:300px;height:45px;. Also nützt die neue Zeitleiste da erstmal nichts.
Bevor der Event gerendert wird, also unter <?php if ($event): ?> kann man den Event analysieren und den Abstand nach oben korrigieren.
PHP-Code:
<?php
$startMinutesHour = date('G', $event['startTime']) * 60;
$startMinutesMinute = date('i', $event['startTime']);
$startMinutes = $startMinutesHour + $startMinutesMinute;
$topPX = $startMinutes - ($start * 60);
$topStyle = 'top:'.$topPX.'px;';
?>
Den $topStyle kannst du dann bei dem Event einfügen
vorher
PHP-Code:
<div class="event<?php if ($event['class']): echo $event['class']; endif; ?>"
style="overflow:hidden;<?php echo $event['bgstyle']; ?><?php if ($event['style']): echo $event['style']; endif; ?>"
title="<?php echo $event['title']; ?>"
>
nachher
PHP-Code:
<div class="event<?php if ($event['class']): echo $event['class']; endif; ?>"
style="overflow:hidden;<?php echo $event['bgstyle']; ?><?php if ($event['style']): echo $event['style']; endif; ?><?= $topStyle ?>"
title="<?php echo $event['title']; ?>"
>
Diese Lösung ist nicht ganz so sauber, weil jetzt im inline-Style zweimal top:npx; drin steht. Kann man ja noch bereinigen, wenn man möchte.
Den Code aus dem vorherigen Post musst du nochmal leicht ändern, weil ich die Variable $start nachher nochmal benötigt habe. Diesen Code kannst du ganz am Anfang des Templates einfügen.
PHP-Code:
<?php
$times = array();
$start = 8;
$stop = 20;
$top = 0;
$i = $start;
while($i <= $stop)
{
$key = sprintf('%02d', $i);
$times[$key]['top'] = $top;
$times[$key]['label'] = sprintf('%02d:00', $i);
$times[$key]['class'] = $i&1 ? 'odd' : 'even';
$times[$key]['style'] = 'height:60px;top:'.$top.'px;';
$i++;
$top += 60;
}
$this->times = $times;
?>
Lesezeichen