Ergebnis 1 bis 8 von 8

Thema: [gelöst] Kalender mit Auswahlfeld für anzuzeigenden Monat

  1. #1
    Contao-Nutzer Avatar von Onkel123
    Registriert seit
    17.05.2014.
    Beiträge
    37

    Standard [gelöst] Kalender mit Auswahlfeld für anzuzeigenden Monat

    Hallo,

    ich habe einen Monatskalender erstellt wo ich einen Trainingsplan hinterlegt habe (aus einem Google-Kalender), was sehr gut funktioniert hat. Hier würde ich gerne in dieser Kalenderansicht ein Auswahlfeld integrieren um in einen bestimmten Monat zu springen, ohne immer Monat für Monat weiter zu gehen.
    Wenn möglich auch noch ein "heute"-Button um wieder in den aktuellen Monat zu kommen.
    Gibt es eine Möglichkeit dieses zu realisieren ?
    Geändert von Onkel123 (10.03.2016 um 19:46 Uhr)

  2. #2
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Interessante Idee!
    Sollte eigentlich durch eine Anpassung vom Kalender-Template zu machen sein (z.B. cal_default.html5) - aber nur beinahe... Welche Monate sollen denn im Auswahlfeld angeboten werden? Nur künftige oder auch vergangene? Bis zum Jahresende oder die nächsten 12 Monate oder ...?

    Gruß, folkfreund

  3. #3
    Contao-Nutzer Avatar von Onkel123
    Registriert seit
    17.05.2014.
    Beiträge
    37

    Standard

    Mir würden die Künftigen reichen für die nächsten 12 Monate.

  4. #4
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Na, dann überlegen wir mal gemeinsam :

    Die erste Tabellenzeile wird hierdurch aufgebaut:
    HTML-Code:
    <tr>
      <th colspan="2" class="head previous"><?php if ($this->prevHref): ?><a href="<?= $this->prevHref ?>" title="<?= $this->prevTitle ?>"><?= $this->prevLink ?></a><?php else: ?>&nbsp;<?php endif; ?></th>
      <th colspan="3" class="head current"><?= $this->current ?></th>
      <th colspan="2" class="head next"><?php if ($this->nextHref): ?><a href="<?= $this->nextHref ?>" title="<?= $this->nextTitle ?>"><?= $this->nextLink ?></a><?php else: ?>&nbsp;<?php endif; ?></th>
    </tr>
    Man könnte jetzt das mittlere Feld durch das Auswahlfeld ersetzen und rechts den Link für 'heute' unterbringen.

    An das Template werden $this->prevHref und $this->nextHref übergeben, um die Links für den vorherigen bzw. den nächsten Monat zu bilden. Diese Links lauten z.B. "kalender.html?month=201604". Aus diesem Link müssten also die Varianten für die nächsten 12 Monate berechnet werden (201604, 201605, .. 201612, 201701, 201702, 201703). Dazu müssen auch die Monatsnamen zugeordnet werden. Der erste ist bereits in $this->nextLink enthalten. Wahrscheinlich ist es aber einfacher, die betreffenden Texte direkt aus den Monatswerten zu berechnen.

    Der Link für 'heute' ist dagegen sehr einfach: er lautet einfach (im obigen Beispiel) "kalender.html" - also ganz ohne Parameter.

    Kommst du damit weiter?

    Gruß, folkfreund

  5. #5
    Contao-Nutzer Avatar von Onkel123
    Registriert seit
    17.05.2014.
    Beiträge
    37

    Standard

    Leidert nein. Habe davon sehr wenig Ahnung. Alles was ich brauche und nicht weiss (was leider nicht viel ist), versuche ich aus dem Internet zu finden um es bei mir einzubauen.
    Den Linkk für "heute" habe ich geschafft.
    Geändert von Onkel123 (08.03.2016 um 00:07 Uhr)

  6. #6
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Heute hab ich keine Zeit.
    Ich werde das in Kürze mal selbst umzusetzen versuchen - kann ich für meine Seite auch gebrauchen...

    Melde mich dann hier wieder.

  7. #7
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    So, hier mal ein erster Entwurf. Kann man bestimmt noch optimieren und per CSS stylen...

    Die erste Tabellenzeile ersetzen durch
    PHP-Code:
      <tr>
        <th colspan="2" class="head previous">
    <?php if ($this->prevHref): ?>
      <select onChange="window.location.href=this.value">
      <?php
        $link 
    utf8_substr($this->prevHref0, -6);
        
    $pMonth utf8_substr($this->prevHref, -2) + 0;
        
    $pYear utf8_substr($this->prevHref, -6, -2);
        for (
    $i=0$i<12$i++)
        {
            
    $linkMonth $pYear;
            if (
    $pMonth 10
            {
                
    $linkMonth .= '0';
            }
            
    $linkMonth .= $pMonth;
            
    $lblMonth $GLOBALS['TL_LANG']['MONTHS'][($pMonth 1)].' '.$pYear;
            echo 
    '<option value="'.$link.$linkMonth.'">'.$lblMonth.'</option>';
            
    $pMonth--;
            if (
    $pMonth == 0)
            {
                
    $pMonth 12;
                
    $pYear--;
            }
        }
      
    ?>
      </select>
      <a href="<?php echo $this->prevHref?>" title="<?php echo $this->prevTitle?>"><</a>
    <?php else: ?>&nbsp;<?php endif; ?> 
        </th>
        <th colspan="3" class="head current"><?= $this->current ?></th>
        <th colspan="2" class="head next">
    <?php if ($this->nextHref): ?>
      <a href="<?php echo $this->nextHref?>" title="<?php echo $this->nextTitle?>">></a>
       <select onChange="window.location.href=this.value">
       <?php
        $link 
    utf8_substr($this->nextHref0, -6);
        
    $pMonth utf8_substr($this->nextHref, -2) + 0;
        
    $pYear utf8_substr($this->nextHref, -6, -2);
        for (
    $i=0$i<12$i++)
        {
            
    $linkMonth $pYear;
            if (
    $pMonth 10
            {
                
    $linkMonth .= '0';
            }
            
    $linkMonth .= $pMonth;
            
    $lblMonth $GLOBALS['TL_LANG']['MONTHS'][($pMonth 1)].' '.$pYear;
            echo 
    '<option value="'.$link.$linkMonth.'">'.$lblMonth.'</option>';
            
    $pMonth++;
            if (
    $pMonth 12)
            {
                
    $pMonth 1;
                
    $pYear++;
            }
        }
       
    ?>
       </select>
    <?php else: ?>&nbsp;<?php endif; ?> 
        </th>
      </tr>
    Das CSS sollte dann vielleicht noch folgendermaßen ergänzt werden:
    Code:
    th.head
    {
        white-space: nowrap;
    }
    Der "Heute"-Knopf ist nicht dabei, aber den hattest du ja schon selbst hinbekommen (falls der jetzt noch nötig sein sollte).

    Gruß, folkfreund

  8. #8
    Contao-Nutzer Avatar von Onkel123
    Registriert seit
    17.05.2014.
    Beiträge
    37

    Standard

    Hallo folkfreund,

    absolut super. Vielen Dank. Funktioniert sehr gut.
    Habe meinen heute button auch noch eingebaut.

    Vielen Dank noch mal !!!

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
  •