Ergebnis 1 bis 16 von 16

Thema: Stundenplan - Zeiten immer anzeigen

  1. #1
    Contao-Nutzer Avatar von Hagen
    Registriert seit
    23.06.2009.
    Ort
    Leipzig
    Beiträge
    140

    Frage Stundenplan - Zeiten immer anzeigen

    Liebe Contao-Gemeinde,

    ist es möglich beim Stundenplan in der Spalte Zeit, immer alle Stunden - oder z.B. die Zeiten 08:00, 09.00, ... ,22:00 - anzuzeigen, auch wenn da gerade keine Veranstaltung eingetragen ist? Ich möchte die Erweiterung als Belegungsplan einsetzen und da wäre es für die Übersicht gut, wenn auch die "freien" Zeiten zu sehen sind.

    Kann man das im Template irgendwie einrichten? Ich habe dazu bisher leider nichts gefunden.

    Vielen Dank schonmal fürs Mitdenken!
    Hagen

  2. #2
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Im Pinzip kannst du anstelle von
    PHP-Code:
    <?php foreach ($this->times as $i => $time): ?>
    <div class="time <?php echo $time['class']; ?>" style="<?php echo $time['style']; ?>"><?php echo $time['label']; ?></div>
    <?php endforeach; ?>
    sowas hier nehmen
    PHP-Code:
    <?php
      $hours 
    range(1241);
      foreach(
    $hours as $hour)
      {
        echo 
    '<div class="time time_'.$hour.'" >'.sprintf('%02d:00'$hour).'</div>';
      }
    ?>
    Aber die vertikale Anordnung kann tricky werden. Ich würde das wahrscheinlich im FE mit JS berechnen. Das inline-Style in der Ausgabe finde ich ziemlich abenteuerlich.

    JS-Berechnung: Analysieren, welche Events gerendert werden, welche Start und Endzeiten sie haben, welche Höhe die Events haben. Anhand dessen dann die Abstände der Events und der Stunden einstellen.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  3. #3
    Contao-Nutzer Avatar von Hagen
    Registriert seit
    23.06.2009.
    Ort
    Leipzig
    Beiträge
    140

    Standard

    Hallo Andreas,

    danke für deine Antwort und den Code-Schnipsel. Das mit der vertikalen Anordnung klingt wirklich kompliziert...

    Vielleicht könne man auch so ansetzen: Wenn es eine Veranstaltung geben würde, die von 08:00 - 22:00 Uhr geht, dann würden in der Spalte Zeit auch die Stunden von 8 - 22:00 Uhr angezeigt werden. Und andere Veranstaltungen werden je nach Zeit vertikal automatisch korrekt angeordnet. Man bräuchte also so eine Art "Blindveranstaltung" damit alle Stunden angezeigt werden.

    Gibt es eine Möglichkeit, wie man sowas umsetzen könnte?

  4. #4
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    $this->times gibt ein Array mit den Zeiten aus. Es könnte gehen, wenn du dieses Array fakest.
    PHP-Code:
    <?php
    $times 
    = array();
    $start 8;
    $stop  20;
    $top   0;
    while(
    $start <= $stop)
    {
      
    $key sprintf('%02d'$start);

      
    $times[$key]['top']   = $top;
      
    $times[$key]['label'] = sprintf('%02d:00'$start);
      
    $times[$key]['class'] = $start&'odd' 'even';
      
    $times[$key]['style'] = 'height:60px;top:'.$top.'px;';

      
    $start++;
      
    $top += 60;
    }

    #var_dump($this->times);
    #var_dump($times);

    $this->times $times;
    ?>
    Also ein Array mit den gewünschten Stunden nachbilden ($times) und dann der Variable $this->times zuweisen.
    Geändert von Andreas (02.05.2016 um 15:45 Uhr)
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  5. #5
    Contao-Nutzer Avatar von Hagen
    Registriert seit
    23.06.2009.
    Ort
    Leipzig
    Beiträge
    140

    Standard

    Hallo Andreas,

    nochmal herzlichen Dank für deine Hilfe! Ich habe deinen Code in das Template eingefügt (gleich nach <div class="timetable">). Die Zeiten werden jetzt alle angezeigt, wunderbar! Allerdings stimmt die vertikale Anordnung der Veranstaltungen nicht mehr, sie sind um zwei Stunden verschoben - siehe hier.

    Kann man das noch irgendwie anpassen?

  6. #6
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.173

    Standard

    Hallo Hagen,

    ich werde das mal konfigurierbar einbauen. Für's erste kannst du die wie folgt selber helfen. Alle Änderungen im Template wieder zurücksetzen (speichern für evtl. später).

    Im der PHP Datei calendar_extended/modules/ModuleTimeTable.php

    vor der Zeile ca. 354
    PHP-Code:
                $arrListTimes = array();
                
    $counter 0
    folgendes einfügen. Hier dann deine Wunschzeiten einsetzen.

    PHP-Code:
                $arrTimes['start'] = '08';
                
    $arrTimes['stop'] = '22'
    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  7. #7
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    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&'odd' 'even';
      
    $times[$key]['style'] = 'height:60px;top:'.$top.'px;';

      
    $i++;
      
    $top += 60;
    }

    $this->times $times;
    ?>
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  8. #8
    Contao-Nutzer Avatar von Hagen
    Registriert seit
    23.06.2009.
    Ort
    Leipzig
    Beiträge
    140

    Standard Danke

    Hallo kmielke, Hallo Andreas,

    vielen Dank für eure Hilfe! Ich werde das Template nach den Anleitungen anpassen und morgen berichten. Außerdem sehe ich mir Wunschlisten an . Ich bin immer wieder begeistert über die Unterstützung hier im Forum und weiß, dass das nicht selbstverständlich ist.

    Danke und einen schönen Abend noch!
    Hagen

  9. #9
    Contao-Nutzer Avatar von Hagen
    Registriert seit
    23.06.2009.
    Ort
    Leipzig
    Beiträge
    140

    Standard

    Hallo Andreas,

    nach deiner Anleitung sind nun auch die Veranstaltungen vertikal auf der richtigen Höhe. Vielen Dank noch einmal für deine Hilfe und die detailierte Anleitung!

    Noch eine letzte Frage: im Moment hat 1 h ( = td) die Höhe von 60 px. Das ist für meine Zwecke eigentlich zu viel, 40 px würden völlig ausreichen. Ich habe das für die Spalte "Zeit" und auch für den Startpunkt der Veranstaltung dank deiner Codebeispiele auch schon hinbekommen - siehe hier. Nur die Höhe des Veranstaltungsblocks selbst konnte ich noch nicht anpassen. Auch hier wird ja ein Inlinstyle berechnet und eingefügt. Kannst du mir da einen Tipp geben, welche Variablen ich dazu benutzen kann?

    Herzlichen Dank und schöne Grüße!
    Hagen

  10. #10
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.173

    Standard

    Hallo Hagen,

    im der PHP Datei calendar_extended/modules/ModuleTimeTable.php gibt es 2 Stellen wo die 60 gesetzt werden. Du kannst das in der Datei auf den gewünschten Wert ändern. So ca. Zeile 358 und 363...
    Auch diesen Wert werde ich konfigurierbar machen, so das man es in der Modul-Konfiguration einstellen kann.

    Eine weitere Alternative ist, diese Werte via JavaScript zu ändern, wenn die Seite fertig geladen ist.

    Gruß Kester
    Geändert von kmielke (03.05.2016 um 17:16 Uhr)
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  11. #11
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.173

    Standard

    Hallo Hagen,

    ich habe jetzt eingebaut, dass man im Modul sowohl die Zeiten, als auch die Höhe der Zellen (in PX) eingeben kann. Es funktioniert auch gut. Ich habe noch ein Feature, dass ich fertig stellen will, aber dann wird das mit der kommenden Version drin sein. Wenn alles gut klappt am Sonntag.

    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  12. #12
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Hagen Beitrag anzeigen
    Kannst du mir da einen Tipp geben, welche Variablen ich dazu benutzen kann?
    Wenn kmielke die neue Version rausbringt, dann brauchst du das von mir ja alles nicht mehr.

    Wenn du neugierig bist, wie es per Template gehen würde, dann müsstest du erstmal an der richtigen stelle den Event debuggen.
    PHP-Code:
    print_r($event); 
    Dann die berechnete Höhe des Events in eine Variable ablegen, durch 60 teilen, mit 40 multiplizieren und als inline-Style neu zuweisen.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  13. #13
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Oder wie kmielke sagt im FE mit JS. Du hast jQuery geladen, also:
    PHP-Code:
    $('.timetable .event').each(function(){
      $(
    this).height($(this).height() / 60 40);
    }); 
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  14. #14
    Contao-Nutzer Avatar von Hagen
    Registriert seit
    23.06.2009.
    Ort
    Leipzig
    Beiträge
    140

    Daumen hoch Danke - Problem gelöst

    Hallo Kester,

    danke für deinen Hinweis und dafür, dass du die Erweiterung erweiterst Ich habe mein Problem mit der Höhe des Event-Blocks jetzt erst einmal so gelöst, dass ich die ModuleTimeTable.php angepasst habe, so wie du es vorgeschlagen hast.

    Hallo Andreas,

    Dank auch dir für die Lösungsansätze im Template oder per jQuery!

    Generell finde ich, der Stundenplan ist eine gute Sache. Und nach dem Update der Erweiterung, lässt er sich noch einfacher als Belegungsplan einsetzen. Und sicher gibt es auch noch viele andere Möglichkeiten und Ideen

    Beste Grüße und morgen einen schönen Feiertag!
    Hagen

  15. #15
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.173

    Standard

    Hallo Hagen,

    bitte bitte. Ist kein Problem. Die Erweiterung lebt davon, dass ich Feedback der Nutzer einfliessen lassen kann, wenn es wirklich Sinn macht.

    Wenn du weitere gute Ideen hast: https://community.contao.org/de/show...ature-Requests
    Ich schaue dann, ob und wie das gut umsetzbar ist.

    Euch ebenfalls einen schönen Feiertag.

    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  16. #16
    Alter Contao-Hase Avatar von kmielke
    Registriert seit
    21.06.2009.
    Beiträge
    1.173

    Standard

    Hallo Hagen,

    es hat etwas gedauert, aber die neue Version ist raus. Du kannst jetzt im Modul Stundenplan die Angaben wie gewünscht vornehmen.

    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •