Ergebnis 1 bis 15 von 15

Thema: Kalender: Ganzes Jahr darstellen

  1. #1
    Contao-Nutzer
    Registriert seit
    08.07.2010.
    Beiträge
    11

    Standard Kalender: Ganzes Jahr darstellen

    Hallo zusammen,

    ich habe mir aus diversen Posts u.a. https://community.contao.org/de/show...ate-darstellen und https://community.contao.org/de/show...ne-Erweiterung einen Belegungskalender erstellt.

    Leider funktioniert das Ganze seit dem Update auf 4.13.16 nicht mehr.

    Da ich kein Programmierer bin, kann mir hier jemand helfen?

    Vielen Dank für Eure Unterstützung!

    VG
    Thomas

    PHP-Code:
    <?php 
    // current year and month
      
    $nowDate date('Y',strtotime("01 January now"));
      
    $actualDate1 $nowDate;
      
    // given year and month
      
    if ($inputMonth = \Input::get('month')) {
        
    $actualDate1 $inputMonth;
      }
      
    $currentYear intval(substr($actualDate104));
      echo 
    '<div class="nav_cal"><ul>';
      for (
    $i=$nowDate;$i<$nowDate+3;$i++) {
        if (
    $i!=$currentYear) {
          echo 
    '<li><a href="'.$this->replaceInsertTags('{{link_url::{{page::id}}}}').'?month='.$i.'01">'.$i.'</a></li>';
        } else {
          echo 
    '<li><span>'.$i.'</span></li>';
        }
      }
      echo 
    '</ul></div>';


    // ID of calendar module
    $intModuleId 19

    // current year and month
    $actualDate date('Ym',strtotime("01 January now"));

    // given year and month
    if ($inputMonth = \Input::get('month'))
    {
        
    $actualDate $inputMonth;
    }

    // extract year and month
    $currentYear intval(substr($actualDate04));
    $currentMonth intval(substr($actualDate, -2));

    for( 
    $i 0$i <= 11; ++$i )
    {
        
    $nextYear $currentYear;
        
    $nextMonth $currentMonth $i;

        
    // next month output
        
        
    if ($i%== 0) echo '<div class="row">';
        
        echo 
    '<div class="col-xs-12 col-sm-4">';
        
        \
    Input::setGet('month'$nextYear.str_pad($nextMonth2'0'STR_PAD_LEFT)); 
        echo \
    Controller::getFrontendModule($intModuleId);
        
        echo 
    '</div>';
        
        if (
    $i%== 2) echo '</div>';
    }


    echo 
    '<div class="nav_cal_mobile"><ul>';
      for (
    $i=$nowDate;$i<$nowDate+3;$i++) {
        if (
    $i!=$currentYear) {
          echo 
    '<li><a href="'.$this->replaceInsertTags('{{link_url::{{page::id}}}}').'?month='.$i.'01">'.$i.'</a></li>';
        } else {
          echo 
    '<li><span>'.$i.'</span></li>';
        }
      }
      echo 
    '</ul></div>';
    ?>

  2. #2
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.714
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von simon_77 Beitrag anzeigen
    Leider funktioniert das Ganze seit dem Update auf 4.13.16 nicht mehr.
    Mit der Info kann keiner was anfangen - kommt ein Fehler, weiße Seite, nichts, ..?

  3. #3
    Contao-Nutzer
    Registriert seit
    08.07.2010.
    Beiträge
    11

    Standard

    Sorry, der Webserver gibt den Statuscode "404 Not Found" aus. Ich vermute es liegt an der "Berechnung" des Monats.

  4. #4
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.714
    User beschenken
    Wunschliste

    Standard

    404 kommt, wenn die Seite nicht gefunden wird - da ein möglicher Startmonat per GET kommt, kann es auch nicht an Routing liegen

    kannst Du die Seite aufrufen, wenn du das CE ausblendest?

    btw: das ist ja wirklich ein Höllen-Code

  5. #5
    Contao-Nutzer
    Registriert seit
    08.07.2010.
    Beiträge
    11

    Standard

    Ich habe das Template mit dem Inserttag {{file::*}} eingebunden. Wenn ich das CE offline nehme, dann funktioniert die Seite.

    Der Code stammt in Teile von Spooky (siehe meine verlinkten Posts).

    Der obere und untere Teil ist Navigation zwischen aktuellem Jahr und zwei folgende Jahre, also 2023, 2024 und 2025.

    Selbst wenn die nur den mittleren Teil im Template belasse, kommt ein 404.

    PHP-Code:
    // ID of calendar module
    $intModuleId 19

    // current year and month
    $actualDate date('Ym',strtotime("01 January now"));

    // given year and month
    if ($inputMonth = \Input::get('month'))
    {
        
    $actualDate $inputMonth;
    }

    // extract year and month
    $currentYear intval(substr($actualDate04));
    $currentMonth intval(substr($actualDate, -2));

    for( 
    $i 0$i <= 11; ++$i )
    {
        
    $nextYear $currentYear;
        
    $nextMonth $currentMonth $i;

        
    // next month output
        
        
    if ($i%== 0) echo '<div class="row">';
        
        echo 
    '<div class="col-xs-12 col-sm-4">';
        
        \
    Input::setGet('month'$nextYear.str_pad($nextMonth2'0'STR_PAD_LEFT)); 
        echo \
    Controller::getFrontendModule($intModuleId);
        
        echo 
    '</div>';
        
        if (
    $i%== 2) echo '</div>';


  6. #6
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.942

    Standard

    Welche Antwort erhältst Du denn, wenn Du die PHP-Datei direkt aufrufst? Vielleicht sieht man da Details zum Fehler.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  7. #7
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.714
    User beschenken
    Wunschliste

    Standard

    hmm..??

    mach mal die \ bei Input und Controller weg - kann dann eigentlich nur an einem der beiden liegen

    - - - Aktualisiert - - -

    Zitat Zitat von fiedsch Beitrag anzeigen
    Welche Antwort erhältst Du denn, wenn Du die PHP-Datei direkt aufrufst? Vielleicht sieht man da Details zum Fehler.
    wie soll er die aufrufen? die liegt doch in templates/

  8. #8
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.714
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von simon_77 Beitrag anzeigen
    Ich habe das Template mit dem Inserttag {{file::*}} eingebunden.
    Mit inserttags sollte man sparsam umgehen...

    * benenne die Datei in ce_html_fullyearcalendar.html5
    * leg ein CE HTML an
    * schreib in das Feld "<!-- Jahreskalender mit Monatsnavigation -->" (ohne Anführungszeichen...)
    * wähle bei Template das ce_html_fullyearcalendar aus

  9. #9
    Contao-Nutzer
    Registriert seit
    08.07.2010.
    Beiträge
    11

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    Mit inserttags sollte man sparsam umgehen...

    * benenne die Datei in ce_html_fullyearcalendar.html5
    * leg ein CE HTML an
    * schreib in das Feld "<!-- Jahreskalender mit Monatsnavigation -->" (ohne Anführungszeichen...)
    * wähle bei Template das ce_html_fullyearcalendar aus
    Das habe ich gemacht und auch die \ rausgenommen, leider keine Änderung.

  10. #10
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.714
    User beschenken
    Wunschliste

    Standard

    die Änderung zu CE ändert ja nix am Code...

    tja... musst Du mal die einzelnen Zeilen auskommentieren und gucken - ich würde bei Input und Controller mal anfangen

  11. #11
    Contao-Nutzer
    Registriert seit
    08.07.2010.
    Beiträge
    11

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    die Änderung zu CE ändert ja nix am Code...

    tja... musst Du mal die einzelnen Zeilen auskommentieren und gucken - ich würde bei Input und Controller mal anfangen
    Das ist mir klar.

    Ich werde es morgen mal versuchen, wobei ich das glaube ich schon versucht habe.

    Das verwunderliche ist nur, dass es mit 4.13.15 noch funktioniert hat. Meine Hoffnung war, dass sich diesbezüglich etwas am Core geändert hat und hier jemand eine Idee zur Korrektur hat.

    Ich danke Dir ganz herzlich für Deine Zeit, die Du hierfür investiert hast. Vielleicht hat ja noch irgendwer eine Idee...

  12. #12
    Contao-Urgestein Avatar von tblumrich
    Registriert seit
    25.06.2009.
    Ort
    Feldberger Seenlandschaft
    Beiträge
    2.225
    Partner-ID
    7979
    User beschenken
    Wunschliste

    Standard

    Ich benutze den Code derzeit auch in einem Projekt und habe Ähnliches festgestellt:

    Ich konnte herausfinden, das es immer mindestens einen Termin / eine Belegung geben muss, der weit in der Zukunft liegt… derzeit (Test heute) ist es mindestens der 1.2.2024. Klingt komisch, ist aber tatsächlich so… gibt es diesen Termin nicht, wird ein 404 erzeugt! Egal was sonst noch so an Terminen drin steht.

    Liegt das irgendwie an der Art der Berechnung? Vielleicht hilft das weiter bzw. Sieht jemand warum das so sein könnte?

    Mein Code
    PHP-Code:
    <?php 

    // ID of calendar module
    $intModuleId 7;

    // current year and month
    $actualDate date('Ym');

    // given year and month
    if ($inputMonth = \Input::get('month'))
    {
        
    $actualDate $inputMonth;
    }

    // extract year and month
    $currentYear intval(substr($actualDate04));
    $currentMonth intval(substr($actualDate, -2));

    // iterate through months
    for( $i 0$i <= 11; ++$i )
    {
        
    $nextYear $currentYear;
        
    $nextMonth $currentMonth $i;

        if( 
    $nextMonth 12 )
        {
            
    $nextYear++;
            
    $nextMonth $nextMonth 12;
        }

        
    // month output
        
    \Input::setGet('month'$nextYear.str_pad($nextMonth2'0'STR_PAD_LEFT)); 
        echo \
    Controller::getFrontendModule($intModuleId);
    }
    Geändert von tblumrich (21.03.2023 um 22:45 Uhr)
    blucomp | Webdesign & Onlinelösungen

  13. #13
    Contao-Fan Avatar von Webstylerin
    Registriert seit
    24.08.2009.
    Ort
    Schlüsselfeld, Bayern
    Beiträge
    403
    Partner-ID
    6232
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallöchen,

    hat hier jemand etwas herausgefunden?

    Ich stehe gerade vor dem selben Problem nach einem Update von 3.5 auf 4.13.20.

    Wenn ich via
    PHP-Code:
    Input::setGet('month'$nextYear.str_pad($nextMonth2'0'STR_PAD_LEFT)); 
    das Startdatum der Liste ändern will bekomme ich für alles was nicht "202301" ist eine 404-Meldung.

    Ach ja, ein Termin in der Zukunft bringt bei mir keinen Unterschied. Für 2024 sind Termine eingetragen und zum Test habe ich noch einen Termin für 2030 erstellt, die 404-Meldung bleibt davon unberührt.

    LG
    Nicole
    Geändert von Webstylerin (21.04.2023 um 10:00 Uhr)

  14. #14
    Contao-Nutzer
    Registriert seit
    08.07.2010.
    Beiträge
    11

    Standard

    Hallo Nicole,

    37tblumrich hat mir in seinem Post
    Ich konnte herausfinden, das es immer mindestens einen Termin / eine Belegung geben muss, der weit in der Zukunft liegt… derzeit (Test heute) ist es mindestens der 1.2.2024. Klingt komisch, ist aber tatsächlich so… gibt es diesen Termin nicht, wird ein 404 erzeugt! Egal was sonst noch so an Terminen drin steht.
    den entscheidenden Hinweis/Ansatz gegeben.

    Ich habe mein Problem mit den folgenden Änderungen gelöst:

    1. einen weiteren Kalender unter Events angelegt z. B. "Blocker"
    2. dort Termine bis 2030 angelegt, immer der 01.01. z. B. 01.01.2024, 01.01.2025, usw. und ganz wichtig: die Evens sind hervorgehoben
    3. den "Blocker" Kalender in mein Frontend-Modul vom Typ Kalender hinzugefügt und hier auch ganz wichtig die Einstellung: Hervorgehobene Events überspringen

    Vielleicht konnte ich Dir damit helfen?

    VG
    Thomas

  15. #15
    Contao-Fan Avatar von Webstylerin
    Registriert seit
    24.08.2009.
    Ort
    Schlüsselfeld, Bayern
    Beiträge
    403
    Partner-ID
    6232
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hey Thomas!

    1000 Dank für den Workaround. Habe es genauso eingerichtet und die Navigation funktioniert wieder! Danke!

    LG
    Nicole

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
  •