Contao Konferenz & College 2019 in Duisburg - JETZT TICKET SICHERN!
Ergebnis 1 bis 13 von 13

Thema: [la_bookingcal] Offizieller Support Thread

  1. #1
    Contao-Nutzer Avatar von aaronl
    Registriert seit
    20.06.2009.
    Beiträge
    111

    Standard [la_bookingcal] Offizieller Support Thread

    Ich möchte hiermit meine Erweiterung la_bookingcal vor.

    https://contao.org/de/extension-list...cal.10029.html

    Eigentlich ist diese schon vor Jahren entstanden. Da ich letztens allerdings Zeit übrig hatte habe ich sie unter Contao 3.x lauffähig gemacht.


    Es ist ein einfach gehaltener Belegungs- / Buchungskalender der einen Jahresüberblick gibt. Er ist für Ferienhäuser und -wohnungen gedacht.
    Es wird zwischen 3 Status die ein Tag haben kann unterschieden:
    • Frei
    • Belegt
    • Wechsel
    Da aber nicht in jeder Situation eine Belegung mit einem Urlauberwechsel beginnt oder endet gibt es die Möglichkeit den Beginn und das Ende jeweils als voll gebuchten Tag zu definieren.

    Die Erweiterung prüft auch auf Terminkollisionen, kann diese, wenn man stur bleibt, momentan aber nicht verhindern.

    Ich hoffe, dass sie für die Eine oder den Anderen nützlich sein kann.


    Feedback ist herzlich willkommen!

  2. #2
    Contao-Nutzer Avatar von baumbaTz
    Registriert seit
    13.01.2011.
    Ort
    Fredenbeck
    Beiträge
    17

    Standard

    Hallo zusammen...

    ...mal ne doofe Frage:

    Gibt es eine Möglichkeit dem Modul die ID für die Ausgabe der Belegungszeiten anhand des Objektnamens zu übergeben (oder so...)? Situation ist, dass ich hier Objekte habe die dynamisch ausgegeben werden und nun würde ich gern den jeweils passenden Belegungsplan dazupacken.

    Habe mich schon versucht durch den Quellcode durchzuwühlen. Musste aber feststellen, dass ich wirklich überhaupt keine Ahnung von Erweiterungen und Co. habe. :-/

    Schonmal Danke für die Mühe

    bisdenndann
    björn

  3. #3
    Contao-Nutzer Avatar von aaronl
    Registriert seit
    20.06.2009.
    Beiträge
    111

    Standard

    Grundsätzlich natürlich ja.

    Ich hab momentan leider keine Zeit da noch ein weiteres Front-End Modul dazu zu machen und vor allem zu testen.

    Wenn es ganz schnell gehen muss schau dir mal die ModuleBookincal.php an. Vor allem wie in der Methode compile $object definiert wird. Wenn du das normale Ausgabemodul nicht brauchst, bzw. es kopieren willst musst du hier statt auf $this->... zu referenzieren eine per POST oder GET übergebene Variable verwenden. Ich verwende hier die ID des Objekts. Was das ganze dann etwas heikel macht ist zu überprüfen obs die ID auch wirklich gibt damit es zu keinen Fehlern kommt.

    Wenn du wirklich den Namen übergeben willst musst du noch einen weiteren Lookup in der DB machen um die ID des Objekts herauszufinden.

  4. #4
    Contao-Nutzer Avatar von baumbaTz
    Registriert seit
    13.01.2011.
    Ort
    Fredenbeck
    Beiträge
    17

    Standard

    Super. Vielen Dank für die Info. Hab mir das jetzt zusammengeprügelt. Nicht hübsch und geht bestimmt auch viel besser, aber scheint ordentlich zu funktionieren

    PHP-Code:
    protected function compile()
        {
            
    $year=date('Y');
            
            
    //Prüfung ob Variable ausschliesslich Zahlen enthält        
            
    if(ctype_digit($_GET["eid"])): $ammonid $_GET["eid"]; endif;
                
    // id des Objektes raussuchen        
                
    $objectid $this->Database->prepare("SELECT id FROM tl_la_bookingcal_objects WHERE name=?"
                                 ->
    execute($ammonid);
            
    // Kalender id in $object Variable übergeben :)
            
    $object $objectid->fetchAllAssoc()[0]['id'];
            
            
    // Ausgabe nur ausführen, wenn es einen Kalender für dieses Objekt gibt        
            
    if($objectid->fetchAllAssoc()[0]['id'] != false): 
            
            for(
    $i=0;$i<=$this->la_bookingcal_years;$i++)
            {    
                
    $objTemplate = new FrontendTemplate($this->la_bookingcal_template);    
        
                
    // Set timestamps to the beginning and end of the year
                
    $yearStart=mktime(0,0,0,1,1,$year);
                
    $yearEnd=mktime(0,0,0,12,31,$year);
                
                
    $objDates $this->Database->prepare("SELECT id,startDate,endDate,startFull,endFull FROM tl_la_bookingcal_dates WHERE pid=? AND (endDate >=? AND startDate <= ?) ORDER BY endDate")
                                 ->
    execute($object,$yearStart,$yearEnd);
                
    $objTemplate->year=$year;
                
                
    $this->arrayYear $objDates->fetchAllAssoc();
                
    $objTemplate->months=$this->generateMonths($year);
                
                
    $strBookings .= $objTemplate->parse();
                
    $year++;
            }
            
            
    $this->Template->bookingcal $strBookings;    
            
            
    // Get object name to include in the CSS classes
            
    $objName $this->Database->prepare("SELECT name FROM tl_la_bookingcal_objects WHERE id=?")
                                 ->
    execute($object);
            
    $this->Template->objectName 'la_'.strtolower(str_replace(' ','-',$objName->fetchAllAssoc()[0]['name']));
            
            endif;
        } 
    Muss nur drauf achten, dass ich das beim Updaten nicht vergesse

  5. #5
    Contao-Nutzer Avatar von aaronl
    Registriert seit
    20.06.2009.
    Beiträge
    111

    Standard

    Ein kleiner Tipp noch. Für den Zugriff auf die GET Variable würde ich die Contao internen Funktionen nehmen die schon viel an Sicherheitsüberprüfungen übernehmen. Sollte ein
    PHP-Code:
    $this->Input->get('varname'
    oder so sein.

  6. #6
    Contao-Fan Avatar von Sahel
    Registriert seit
    20.06.2009.
    Ort
    Cotonou, Benin
    Beiträge
    277

    Standard

    Hallo,
    schöne Erweiterung! Mal ne Frage als Nicht-PHPler: Wäre es sehr aufwendig, dieselben Features darzustellen in einem Wochenkalender mit Tagen, die in Stunden unterteilt sind? Ich denke da an einen Belegungplan für Sitzungsäale.

    Grüße,
    Matthias

  7. #7
    Contao-Nutzer Avatar von baumbaTz
    Registriert seit
    13.01.2011.
    Ort
    Fredenbeck
    Beiträge
    17

    Standard

    Zitat Zitat von aaronl Beitrag anzeigen
    Ein kleiner Tipp noch. Für den Zugriff auf die GET Variable würde ich die Contao internen Funktionen nehmen die schon viel an Sicherheitsüberprüfungen übernehmen. Sollte ein
    PHP-Code:
    $this->Input->get('varname'
    oder so sein.
    Gleich mal gemacht. Danke.

  8. #8
    Contao-Fan
    Registriert seit
    11.06.2013.
    Beiträge
    474

    Standard

    Hallo zusammen

    Habe versucht diese Erweiterung bei mir einzubinden, leider sieht der Kalender aber total verzogen aus. Woran kann dies den bitte liegen ?
    http://www.loeffler-web.ch/testumgeb...ng-whg-85.html

    Ich habe Contao 3.4.4 installiert.

    Vielen Dank und Grüsse
    Michi

  9. #9
    Contao-Nutzer Avatar von aaronl
    Registriert seit
    20.06.2009.
    Beiträge
    111

    Standard

    Zitat Zitat von Michi Löffler Beitrag anzeigen
    Hallo zusammen

    Habe versucht diese Erweiterung bei mir einzubinden, leider sieht der Kalender aber total verzogen aus. Woran kann dies den bitte liegen ?
    http://www.loeffler-web.ch/testumgeb...ng-whg-85.html

    Ich habe Contao 3.4.4 installiert.

    Vielen Dank und Grüsse
    Michi
    Auf den ersten Blick sind das CSS Probleme:
    Der Klasse
    Code:
    .la_bookingcal_year .days li { list-style: none; }
    setzen damit die Buchstaben der Listenpunkte verschwinden. Ist leider nicht im CSS das das Plugin ausliefert drin.

    Dann dem ganzen entweder mehr Platz in der Breite geben oder die Schrift verkleinern so, dass eine ganze Zeile platz hat und nicht umgebrochen wird.

    LG

  10. #10
    Contao-Fan
    Registriert seit
    11.06.2013.
    Beiträge
    474

    Standard

    Hallo aaronl

    Vielen Dank für den Tipp. Ich bin leider noch nicht so css versiert.
    Ich arbeite mit einer Vorlage von Rocksolid. Die bieten da das custom css an, wo man eigenen css Code einbinden kann, dass dann prioritär behandelt wird.
    Muss ich nun genau deinen Code unten dort reinpflegen und dann beim Artikel, wo ich das Modul des Kalenders anzeige mit einer Klasse auf dieses css verweisen ?
    Muss ich den der Klasse noch einen eigenen Namen geben oder wie sollte dies genau aussehen beim css und bei der Klasse beim Modul ?

    Vielen Dank und Grüsse
    Michi

  11. #11
    Contao-Fan
    Registriert seit
    11.06.2013.
    Beiträge
    474

    Standard

    Hallo zusammen

    Das Layout habe ich nun einigermassen hinbekommen, danke für den Tipp.
    Wie kann ich aber die Monate nur mit 3 Buchstaben anzeigen ? Bei mir kommt der ganze Name.
    Ist das auch über css ?

    Danke und Grüsse
    Michi

  12. #12
    Contao-Nutzer Avatar von aaronl
    Registriert seit
    20.06.2009.
    Beiträge
    111

    Standard

    Zitat Zitat von Michi Löffler Beitrag anzeigen
    Hallo zusammen

    Das Layout habe ich nun einigermassen hinbekommen, danke für den Tipp.
    Wie kann ich aber die Monate nur mit 3 Buchstaben anzeigen ? Bei mir kommt der ganze Name.
    Ist das auch über css ?

    Danke und Grüsse
    Michi
    Dafür wirst du das Template anpassen müssen. Siehe http://de.contaowiki.org/Templates_bearbeiten

    Das Template in Frage ist
    Code:
    la_bookingcal_standard.html5
    .

    In Zeile 5 wir der Monat ausgegeben. Ad hoc würde ich die Ausgabe auf 3 Zeichen limitieren.

    Ohne es gestested zu haben dürfte so etwas funktionieren:
    Code:
        <li><span><?php echo mb_substr($GLOBALS['TL_LANG']['MONTHS'][$monthkey-1], 0, 3);?></span>
    Siehe http://php.net/manual/en/function.mb-substr.php

    Dann musst du aber noch
    Code:
    .la_bookingcal_year .months span { width: 100px }
    überschreiben auf eine Breite die dir passt.

    LG

  13. #13
    Contao-Fan
    Registriert seit
    11.06.2013.
    Beiträge
    474

    Standard

    Hallo aaronl

    Super, danke vielmals, hat wunderbar geklappt. habe die Breite noch auf 20px angepasst, dann war es super:
    .la_bookingcal_year .months span { width: 20px }

    Vielen Dank und Grüsse
    Michi

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
  •