Ergebnis 1 bis 6 von 6

Thema: repeat weekday

  1. #1
    Contao-Nutzer
    Registriert seit
    14.01.2013.
    Beiträge
    26

    Standard repeat weekday

    Moin in die Runde,
    ich schlage mich augenblicklich mit dieser wirklich hilfreichen Erweiterung in einem Punkt herum. Vermutlich habe ich einen Denkfehler bzw. sehe den Wald vor lauter Bäumen nicht.

    In meinem Projekt möchte ich im Eventreader für einen Event die kommenden z.B. 10 Termine darstellen. Das event_full Template habe ich dahingehend angepaßt und es funktioniert inklusive Exceptions und Fixed Dates inzwischen erfolgreich.
    Wo ich augenblicklich am kauen bin, ist die Darstellung bei sich wiederholenden Terminen unterteilt nach Wochentagen. Ist die Auswahl Bsp.: 1 Tage - 14 Mal wiederholen Mitwoch/Donnerstag, so erhalte ich als Liste jeden Tag ab Startdate -> 14 Tage später.
    In der Darstellung im Kalender arbeitet calendar_extended die Termine richtig ab, aber im Eventreader komme ich nicht so recht weiter.
    Beiliegend der Codeschnipsel aus dem modifizierten Template für die Darstellung der Wiederholungen:
    Code:
    if ($key > $yesterday) {
                                $dat_start= date('d.m.Y',strtotime($value['str_start']));
                                $dat_end = date('d.m.Y',strtotime($value['str_end']));
                                $time_start = date('H:i',strtotime($value['str_start']));
                                $time_end = date('H:i',strtotime($value['str_end']));
                                if ($this->addTime != 1)$time_start = '';
                                if ($this->addTime == 1 && $this->ignoreEndTime != 1 ){
                                    $time_end = ' - '.date('H:i',strtotime($value['str_end']));
                                }else {$time_end = '';}
                                if ($dat_start == $dat_end) $dat_end = '';
                                $extraKey = array_search($dat_start, array_column($extraDates, 'new_repeat'));
                                if (strlen($extraKey)) $reason = $extraDates[$extraKey]['reason'];
                                // Move Exception integrieren
                                if (array_key_exists($key,$exc)){
                                    if ($exc[$key]['action'] == 'move'){
                                        $newStartDate = new DateTime($value['str_start']);
                                        $newStartDate->modify($exc[$key]['new_exception']);
                                        $dat_start = $newStartDate->format('d.m.Y');
                                        $diff = $this->endDate-$this->startDate;
                                        if ($this->endDate && $this->ignoreEndTime != 1)$dat_end =date('d.m.Y',(strtotime($dat_start)+$diff));
                                        $reason = $exc[$key]['reason'];
                                        
                                    }
                                    if ($exc[$key]['action'] == 'hide'){
                                        $dat_hide[$a]['date'] = $dat_start;
                                        $dat_hide[$a]['css'] = $exc[$key]['cssclass'];
                                        $dat_hide[$a]['reason'] = $exc[$key]['reason'];
                                        $a++;
                                        $i--;
                                        continue;
                                    }
    Eventuell ist mein Denkansatz falsch, ich wäre über einen Tipp sehr erfreut.

    Mit netten Grüßen
    HUL

    Contao: 3.5.17
    PHP 5.6.x

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

    Standard

    Hallo Hul,

    welche Version von calendar_extended setzt du ein?

    Wie auch immer, ich bin nicht sicher, was du genau möchtest. Bitte versuche es noch was besser zu erklären.

    Danke
    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  3. #3
    Contao-Nutzer
    Registriert seit
    14.01.2013.
    Beiträge
    26

    Standard

    Hallo Kester,
    vielen Dank für deine prompte Antwort.
    Jau, ich vergass die CE Version: 3.6.0.9036

    Am besten beschreiben läßt sich das via der dev Seite: http://dev.familiennetz-bremen.de/te...600,1497958200
    user: inszenario
    pwd: familiennetz

    Nette Grüße
    Hans-Uwe

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

    Standard

    Hallo Hans-Uwe,

    zuerst einmal solltest du die aktuelle Version installieren. die Version 3.6 aus dem Contao ER wird schon länger nicht mehr gepflegt.
    Sieht https://community.contao.org/de/show...-mehr-gepflegt
    und https://community.contao.org/de/show...d-und-Composer.

    Nur Composer und/oder Git. https://github.com/kmielke/calendar_extended/releases

    Danke für den Link, der mir dein Problem nicht wirklich besser erklärt.

    Gruß Kester
    Gruß Kester

    Kein Support via PN ohne vorherige Absprache.

  5. #5
    Contao-Nutzer
    Registriert seit
    14.01.2013.
    Beiträge
    26

    Standard

    Hallo Kester,
    das ist ja wirklich toller Support bei einer ebenso klasse Erweiterung.
    Entschuldige bitte, dass ich mich so unpräzise ausgedrückt habe.

    Kurzer Overhead:
    Ich betreue die Familiennetz Seite. Auf der Seite werden Angebote für Familien veröffentlicht. Aus dem UI/UX Gedanken sollen die Angebote/ Termine nun mittels deiner Erweiterung präsentiert werden (bisher mit Metamodels realisiert).
    Ablauf:
    Der User kommt über eine gefilterte Liste oder Kalender auf den Eventleser, um Details des Angebotes zu erhalten.
    Dazu gehört, dass die nächsten (augenblicklich 15) kommenden Termine /Events eines sich wiederholenden Angebotes (inklusive Extratermine bzw. Sonderfälle) angezeigt werden.

    Dieses funktioniert mit dem umgeschrieben Event Full Template auch soweit(Code siehe oben), solange nicht tägliche Wiederholung z.B nur am Mittwoch und Donnerstag im Backend für das Angebot hinterlegt wird(siehe Screenshot). Der Wochentag Select hat(te) keine Auswirkungen auf das Terminlisting im Eventleser. Alle Termine werden angezeigt, also auch Montag, Dienstag etc.
    Ich habe jetzt eine Quick and Dirty Schleife im Template Code dazu genommen:
    Code:
     if (!in_array(date('w',strtotime($dat_start)),$repeatWeekday) && $unit == '1' && $this->startDate != $value['str_start'])continue;
    ,wobei folgende Arrays
    Code:
    $extraDates = deserialize($this->repeatFixedDates);
                    $exc = deserialize($this->exceptionList);
                    $allRec = deserialize($this->allRecurrences);
                    $repeatWeekday = deserialize($this->repeatWeekday);
                    $repeatEach = deserialize($this->repeatEach);
                    if ($repeatEach['unit'] == 'days' && $repeatEach['value'] == '1')$unit = '1';
    initialisiert werden.
    Im jetzigen Zustand funktioniert die FE Darstellung (Screenshot FE), allerdings werden im BE bei einer Exception nach Datum immer noch alle (nicht gefilterten) Daten zur Auswahl im Dropdown angeboten.

    Ich hoffe, du verstehst nun mein Anliegen. Im Übrigen, ein Extension Update ist immer eine gute Idee, das wird dann als nächstes angegangen.

    Nette Grüße
    Hans-UweFE_Daily_Dates_Eventleser.pngBE_Dropdown_Ausnahme.pngbe_cal_event_repeat.pngFE_Daily_Dates_Eventleser.pngBE_Dropdown_Ausnahme.pngbe_cal_event_repeat.png

  6. #6
    Contao-Nutzer
    Registriert seit
    14.01.2013.
    Beiträge
    26

    Standard

    Moin,
    da ich mich mit meinem Problem immer noch herumschlage und es einfach noch nicht sauber hinbekomme, im Eventleser alle kommenden Daten eines sich wiederholenden Events zu listen, habe ich jetzt zunächst einmal die aktuelle Version der calendar_extended installiert.
    Dabei ist mir aufgefallen, dass es einen kleinen Bug in der aktuellen DCA tl_calendar_events.php gibt.
    Durch folgenden Code ab Zeile 991 wird im BE die Ausgabe des Datums in "Ausnahmen nach Datum" nicht mehr angezeigt.
    Code:
    // we have to remove the excaption dates from array
            if ($arrSet['exceptionList']) {
                $exceptionRows = deserialize($arrSet['exceptionList']);
                if (is_array($exceptionRows)) {
                    foreach ($exceptionRows as $date => $value) {
                        if (is_array($arrDates) && key_exists($date, $arrDates)) {
                            unset($arrDates[$date]);
                        }
                    }
                }
            }
    Die Anweisung an sich macht Sinn. Sobald ich mein anderes Problem gelöst habe, werde ich versuchen, mich mal damit zu beschäftigen, sofern es nicht vorher hier im Forum schon gelöst wird.

    Nette Grüße
    Hans-Uwe

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
  •