Contao-Camp 2024
Ergebnis 1 bis 26 von 26

Thema: DC Driver

  1. #1
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard DC Driver

    hallo,

    habe gerade festgestellt das in einer 4.4.55 Installtion mein eigener DC Driver nicht mehr funktioniert bzw es mir jetzt auf einmal folgende Meldung bringt:

    Attempted to load class "DC_Travel_Dates" from the global namespace. Did you forget a "use" statement?

    Log dazu:

    PHP-Code:
    [2021-04-11 17:39:26app.CRITICALAn exception occurred. {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\ClassNotFoundException(code: 0): Attempted to load class \"DC_Travel_Dates\" from the global namespace.\nDid you forget a \"use\" statement? at /var/www/domain/vendor/contao/core-bundle/src/Resources/contao/classes/Backend.php:401)"} [] 
    Die Driver-Datei:
    PHP-Code:
    <?php
     
    namespace Contao;

    class 
    DC_Travel_Dates extends DC_Table {


    ....
    Hat sich da was geändert von der Registirerung oder so?
    Liebe Grüße
    WebRoxx


  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.901
    Partner-ID
    10107

    Standard

    Siehe https://docs.contao.org/dev/framewor...custom-drivers - der Driver muss im global Namespace sein. Ab Contao 4.11 jedoch nicht mehr: https://github.com/contao/contao/pull/2706
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Siehe https://docs.contao.org/dev/framewor...custom-drivers - der Driver muss im global Namespace sein. Ab Contao 4.11 jedoch nicht mehr: https://github.com/contao/contao/pull/2706
    Ist das so nicht korrekt bzw ist Contao nicht der global Namespace?

    PHP-Code:
    <?php
     
    namespace Contao;

    class 
    DC_Travel_Dates extends DataContainer  {
    Liebe Grüße
    WebRoxx


  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.901
    Partner-ID
    10107

    Standard

    Nein, Contao ist nicht der Root Namespace.
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Nein, Contao ist nicht der Root Namespace.
    Nicht? ok.
    Liebe Grüße
    WebRoxx


  6. #6
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    Also weder mit noch ohne namespace funktioniert es.

    Die Datei liegt doch aber an der richtigen Stelle:

    src/WebRoxx/MyBundle/Resources/contao/drivers
    PHP-Code:
    /* Table tl_travel_dates */
    $GLOBALS['TL_DCA']['tl_travel_dates'] = array
    (
        
    // Config
        
    'config' => array
        (
            
    'dataContainer'               => 'Travel_Dates'
    Liebe Grüße
    WebRoxx


  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.901
    Partner-ID
    10107

    Standard

    Wie lässt du die Klasse \DC_Travel_Dates laden?
    » sponsor me via GitHub or PayPal or Revolut

  8. #8
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Wie lässt du die Klasse \DC_Travel_Dates laden?
    Wie meinst du das? musste man nicht diese nicht nur im DCA angeben und Contao weiß dann wo die liegt?
    Liebe Grüße
    WebRoxx


  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.901
    Partner-ID
    10107

    Standard

    Im DCA gibst du ja nur die Klasse an. Die Klasse wird dann versucht vom PHP Class Loader zu laden (welcher wiederum entweder den Contao Class Loader oder den Composer Class Loader heranzieht).
    » sponsor me via GitHub or PayPal or Revolut

  10. #10
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    Habe alles was ich habe gepostet, ging ja vorher auch so entweder habe ich irgendwann mal was gelöscht was nicht hätte sein dürfen aber bei der umstellung von 3 auf 4 gings ja
    Liebe Grüße
    WebRoxx


  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.901
    Partner-ID
    10107

    Standard

    Zitat Zitat von WebRoxx Beitrag anzeigen
    Habe alles was ich habe gepostet
    Alles kann das nicht sein. Poste die composer.json, die contao/config.php der Extension und in welchem Pfad der Driver liegt.
    » sponsor me via GitHub or PayPal or Revolut

  12. #12
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Alles kann das nicht sein. Poste die composer.json, die contao/config.php der Extension und in welchem Pfad der Driver liegt.
    Code:
    {
        "type": "project",
        "require": {
            "contao/calendar-bundle": "4.4.*",
            "contao/conflicts": "*@dev",
            "contao/manager-bundle": "4.4.*",
            "contao/news-bundle": "4.4.*",
            "dklemmt/contao_dk_mmenu": "2.1.1",
            "madeyourday/contao-rocksolid-antispam": "^2.0",
            "madeyourday/contao-rocksolid-columns": "^2.0",
            "madeyourday/contao-rocksolid-custom-elements": "^2.2",
            "menatwork/contao-multicolumnwizard-bundle": "^3.4",
            "terminal42/contao-conditionalformfields": "^2.3",
            "terminal42/contao-mp_forms": "^4.1",
            "terminal42/contao-pageimage": "^3.4",
            "terminal42/notification_center": "^1.5",
            "trilobit-gmbh/contao-cookiebar-bundle": "^1.0"
        },
        "extra": {
            "contao-component-dir": "assets"
        },
        "scripts": {
            "post-install-cmd": [
                "Contao\\ManagerBundle\\Composer\\ScriptHandler::initializeApplication"
            ],
            "post-update-cmd": [
                "Contao\\ManagerBundle\\Composer\\ScriptHandler::initializeApplication"
            ]
        },
        "autoload": {
            "psr-4": {
                "": "src/"
            }
        }
    }
    PHP-Code:
    $GLOBALS['TL_CRON']['daily'][] = array('WebRoxx\\MyBundle\\Classes\\TravelCron','checkDates');

    /* models */
    $GLOBALS['TL_MODELS']['tl_travel_continent']     = 'WebRoxx\\MyBundle\\Model\\TravelContinentModel';
    $GLOBALS['TL_MODELS']['tl_travel_countries']     = 'WebRoxx\\MyBundle\\Model\\TravelCountriesModel';
    $GLOBALS['TL_MODELS']['tl_travel_categories']     = 'WebRoxx\\MyBundle\\Model\\TravelCategoriesModel';
    $GLOBALS['TL_MODELS']['tl_travel_org']             = 'WebRoxx\\MyBundle\\Model\\TravelOrgModel';
    $GLOBALS['TL_MODELS']['tl_travels']             = 'WebRoxx\\MyBundle\\Model\\TravelsModel';
    $GLOBALS['TL_MODELS']['tl_travel_dates']        = 'WebRoxx\\MyBundle\\Model\\TravelDatesModel';

    /* backend modules */
    array_insert($GLOBALS['BE_MOD']['travel-bundle'], 6, array(
        
    'travel_countries'        => array('tables' => array('tl_travel_continent','tl_travel_countries')),
        
    'travel_categories'        => array('tables' => array('tl_travel_categories')),
        
    'travel_org'            => array('tables' => array('tl_travel_org')),
        
    'travels'                 => array('tables' => array('tl_travels','tl_travel_dates','tl_travel_countries')),     
        
    'travel_settings'        => array('tables' => array('tl_travel_settings'))    
    ));
     
    /* frontend modules */
    array_insert($GLOBALS['FE_MOD']['travel-bundle'], 6, array(
        
    'travel_list'         => 'WebRoxx\\MyBundle\\Module\\ModuleTravels',
        
    'travel_search'     => 'WebRoxx\\MyBundle\\Module\\ModuleTravelsSearch',
        
    'travel_countries'     => 'WebRoxx\\MyBundle\\Module\\ModuleTravelCountries',
        
    'travel_details'    => 'WebRoxx\\MyBundle\\Module\\ModuleTravelDetails',
        
    'travel_form'        => 'WebRoxx\\MyBundle\\Module\\ModuleTravelForm',
    )); 
    Liebe Grüße
    WebRoxx


  13. #13
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.901
    Partner-ID
    10107

    Standard

    + die contao/autoload.php

    Oder wenn du es dir einfacher machen willst am besten gleich alles
    » sponsor me via GitHub or PayPal or Revolut

  14. #14
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    + die contao/autoload.php

    Oder wenn du es dir einfacher machen willst am besten gleich alles
    Die Autoload gibt es nicht (mehr) habe ich noch nie bei einer 4er gebraucht und dachte das die wegfällt, war da nicht was? also höre ich jetzt zum ersten mal
    Liebe Grüße
    WebRoxx


  15. #15
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.901
    Partner-ID
    10107

    Standard

    Wie gesagt musst du deine Driver Klasse im global Namespace laden lassen. Das geschieht entweder über eine autoload Definition in deiner composer.json - oder was auch noch funktioniert ist der Legacy Weg über die autoload.php von Contao (ClassLoader von Contao).
    » sponsor me via GitHub or PayPal or Revolut

  16. #16
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Wie gesagt musst du deine Driver Klasse im global Namespace laden lassen. Das geschieht entweder über eine autoload Definition in deiner composer.json - oder was auch noch funktioniert ist der Legacy Weg über die autoload.php von Contao (ClassLoader von Contao).
    ist es aber nicht genau das, was das tun sollte?
    Code:
        "autoload": {
            "psr-4": {
                "": "src/"
            }
        }
    Liebe Grüße
    WebRoxx


  17. #17
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.901
    Partner-ID
    10107

    Standard

    Das ist autoloading nach PSR-4. Damit das damit funktioniert müsste sich dein Driver direkt im Ordner src/ befinden - dort wäre es dann in deinem Fall im global Namespace.
    Geändert von Spooky (12.04.2021 um 11:01 Uhr)
    » sponsor me via GitHub or PayPal or Revolut

  18. #18
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das ist autoloading nach PSR-4. Damit das damit funktioniert müsste sich dein Driver direkt im Ordner src/ befinden dort wäre es dann in deinem Fall im global Namespace.
    mh okay, wieso ist das beim Container so komisch, ich kann doch sonst auch belieblige klassen unterhalb von src/webroxx/mybundle/ordner ablegen

    hatte da noch nie irgendwelche Probleme damit
    Liebe Grüße
    WebRoxx


  19. #19
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.901
    Partner-ID
    10107

    Standard

    Ist halt leider so und ist erst ab Contao 4.11 wie gesagt anders
    » sponsor me via GitHub or PayPal or Revolut

  20. #20
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Ist halt leider so und ist erst ab Contao 4.11 wie gesagt anders
    okay, habs einfach in den src geschoben da erhalte ich aber

    Code:
    Error: Class DC_Travel_Dates contains 2 abstract methods and must therefore be declared abstract or implement the remaining methods (Contao\DataContainer::getPalette, Contao\DataContainer::save)

    kann man im psr-4 auch noch ein Pfad angeben wo er die Datei findet? so das man das ne außerhalb des bundles legen muss
    Liebe Grüße
    WebRoxx


  21. #21
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.901
    Partner-ID
    10107

    Standard

    Zitat Zitat von WebRoxx Beitrag anzeigen
    okay, habs einfach in den src geschoben da erhalte ich aber

    Code:
    Error: Class DC_Travel_Dates contains 2 abstract methods and must therefore be declared abstract or implement the remaining methods (Contao\DataContainer::getPalette, Contao\DataContainer::save)
    Die Methoden musst du natürlich implementieren.
    » sponsor me via GitHub or PayPal or Revolut

  22. #22
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.901
    Partner-ID
    10107

    Standard

    Zitat Zitat von WebRoxx Beitrag anzeigen
    kann man im psr-4 auch noch ein Pfad angeben wo er die Datei findet? so das man das ne außerhalb des bundles legen muss
    Du hast folgende Möglichkeiten über Composer: https://getcomposer.org/doc/04-schema.md#autoload

    Du könntest classmap oder files verwenden.
    » sponsor me via GitHub or PayPal or Revolut

  23. #23
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    Bin noch am verzweifeln, jetzt kommt "User Error: The current data container is not editable"

    Liebe Grüße
    WebRoxx


  24. #24
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    Okay habs soweit hinbekommen
    Code:
        "autoload": {
            "psr-4": {
                "": "src/"
            },
    		"files": ["src/WebRoxx/myBundle/Classes/DC_TravelDates.php"]
        }
    das funktioniert leider nicht. Es funktioniert nur solange die unter src direkt liegt
    Liebe Grüße
    WebRoxx


  25. #25
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.901
    Partner-ID
    10107

    Standard

    Zitat Zitat von WebRoxx Beitrag anzeigen
    Bin noch am verzweifeln, jetzt kommt "User Error: The current data container is not editable"

    Dazu muss dein Driver das \editable Interface implementieren.

    - - - Aktualisiert - - -

    Zitat Zitat von WebRoxx Beitrag anzeigen
    Code:
        "autoload": {
            "psr-4": {
                "": "src/"
            },
    		"files": ["src/WebRoxx/myBundle/Classes/DC_TravelDates.php"]
        }
    das funktioniert leider nicht. Es funktioniert nur solange die unter src direkt liegt
    Poste den Code deines Drivers.
    Geändert von Spooky (12.04.2021 um 12:23 Uhr)
    » sponsor me via GitHub or PayPal or Revolut

  26. #26
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.137

    Standard

    das \editable konnte ich umgehen wie folgt:

    PHP-Code:
    <?php
     

    class DC_TravelDates extends \DC_Table {
    #class DC_TravelDates extends DataContainer implements \editable, \listable  { // das und das in /**/ war nicht mehr nötigt wenn man \DC_Table nimmt

        
    public function __construct($strTable$arrModule=array()){
            
    parent::__construct($strTable$arrModule=array());
        }
        
    /*
        public function save($varValue){
            parent::save($varValue);
        }
        
        public function getPalette(){
            parent::getPalette();
        }
            
        public function cut($blnDoNotRedirect=false){
            parent::cut($blnDoNotRedirect);
        }
        
        public function copy($blnDoNotRedirect=false){
            parent::copy($blnDoNotRedirect);
        }
        
        public function move(){
            parent::move();
        }
        
        public function delete($blnDoNotRedirect=false){
            parent::delete($blnDoNotRedirect);
        }
            
            
        public function show(){
            parent::show();
        }
            
        
        public function showAll(){
            parent::showAll();
        }
        */
            
        
    public function undo(){
            
    parent::undo();
        }
        
        
        public function 
    edit($intID=null$ajaxId=null){
            
    $this->import('Database'); 
            
    $pid $this->Database->prepare("SELECT * FROM tl_travel_dates WHERE id=?")->execute($this->Input->get('id'));    
            
    $data $this->Database->prepare("SELECT * FROM tl_travel_dates WHERE pid=? ORDER BY dateBeg ASC")->execute($pid->pid);    

            
    $content '<div id="tl_buttons">
                        <a class="header_back" onclick="Backend.getScrollOffset()" accesskey="b" title="" href="contao/main.php?do=travels&table=tl_travel_dates&id='
    .$pid->pid.'&rt='.RequestToken::get().'">'.$GLOBALS['TL_LANG']['tl_travel_dates']['back'].'</a>
                    </div>'
    ;    
                    
            
    $content .= '<form action="'.ampersand(\Environment::get('request'), true).'" class="tl_form tl_edit_form" method="post">
                <div class="tl_formbody_edit">
                    <input type="hidden" name="FORM_SUBMIT" value="tl_filters_limit">
                    <input type="hidden" name="REQUEST_TOKEN" value="'
    .REQUEST_TOKEN.'">
                </div>
                
                <fieldset id="pal_title_legend" class="tl_tbox">
                    <legend onclick="AjaxRequest.toggleFieldset(this,\'title_legend\',\'tl_travel_dates\')">Termine verwalten</legend>
                    <div class="widget">'
    ;
                        
                        
            
    $content.= '<table class="tl_listing">
                         <tr>
                          <td width="100" class="tl_file_list"><strong>'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_daily'].'</strong></td>
                          <td width="150" class="tl_file_list"><strong>'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_beg'].'</strong></td>
                          <td width="150" class="tl_file_list"><strong>'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_end'].'</strong></td>
                          <td width="100" class="tl_file_list"><strong>'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_cost'].'</strong></td>
                          <td width="200" class="tl_file_list"><strong>'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_info'].'</strong></td>
                         </tr>'
    ;
            
    $i=0;             
            while(
    $data->next()){
                if(
    $data->dateDaily == 1) { $check ' checked="checked"'; } else { $check =""; }
                    
    $content .= '<tr>
                                  <td class="tl_file_list"><input type="hidden" name="id['
    .$i.']" value="'.$data->id.'">
                                  <input type="checkbox" name="daily['
    .$i.']"'.$check.' value="1"></td>
                                  <td class="tl_file_list"><input type="text" class="tl_text" name="terbeg['
    .$i.']" value="'.date("d.m.Y"$data->dateBeg).'"></td>
                                  <td class="tl_file_list"><input type="text" class="tl_text" name="terend['
    .$i.']" value="'.date("d.m.Y"$data->dateEnd).'"></td>
                                  <td class="tl_file_list"><input type="text" class="tl_text" name="preis['
    .$i.']" value="'.$data->dateCost.'"></td>
                                  <td class="tl_file_list"><input type="text" class="tl_text" name="info['
    .$i.']" value="'.$data->dateInfo.'"></td>
                                 </tr>'
    ;
                
    $i++;                     
            }
            
    $content.= '</table>';    

                        
            
    $content .= '<p class="tl_help tl_tip" title="">'.$GLOBALS['TL_LANG']['tl_travel_dates']['form_hinweis'].'</p>
                    </div>
                </fieldset>'
    ;
                    
            
    $content .= '<div class="tl_formbody_submit">
                <div class="tl_submit_container">
                        <button type="submit" name="save" id="save" class="tl_submit" accesskey="s">'
    .specialchars($GLOBALS['TL_LANG']['MSC']['save']).'</button>
                    </div>
                </div>'
    ;
            
    $content .= '</form>';

        
            
            if(
    $this->Input->post('FORM_SUBMIT') == 'tl_filters_limit') {
                
    $beg     $this->Input->post('terbeg');
                
    $end     $this->Input->post('terend');
                
    $cost     $this->Input->post('preis');
                
    $info     $this->Input->post('info');
                
    $daily     $this->Input->post('daily');
                
    $every    $this->Input->post('every');
                
    $id     $this->Input->post('id');
                
                
    $this->import('Database''db');
                for(
    $i=0;$i<=count($this->Input->post('terbeg'));$i++) {    
                    if(
    $beg[$i] != "") {
                        
    $von     explode(".",$beg[$i]);
                        
    $von_db mktime(0,0,0,$von[1],$von[0],$von[2]);
                        if(
    $every[$i]!='') {
                            
    $bis     explode(".",$end[$i]);
                            
    $bis_db mktime(0,0,0,$bis[1],$bis[0],$bis[2]);
                            while(
    $von_db<$bis_db){
                                if(
    strcmp($every[$i],strftime('%a',$von_db))==0){
                                    
    $data $this->db->prepare("UPDATE tl_travel_dates SET tstamp = ?,dateBeg = ?,dateEnd = ?,dateCost = ?,dateInfo = ? WHERE id = ?")
                                    ->
    execute(time(),$von_db,$von_db,$cost[$i],$info[$i],$id[$i]);
                                }
                                
    $von_db=strtotime("+1 day",$von_db);
                            }
                        } else  {
                            
    //prüfen ob Endtermin eine Zahl ist
                            
    if(strlen($end[$i])>=3) {
                                
    $bis    explode(".",$end[$i]);
                                
    $bis_db mktime(0,0,0,$bis[1],$bis[0],$bis[2]);
                            } else {
                                
    $start     $von[2]."-".$von[1]."-".$von[0];
                                
    $bis     date('d.m.Y',strtotime($start." +".($end[$i]-1)." days")); 
                                
    $bis     explode(".",$bis);
                                
    $bis_db mktime(0,0,0,$bis[1],$bis[0],$bis[2]);
                            }
                            
    //tägliche Reise
                            
    if(isset($daily[$i])) {
                                
    $daily_db 1;
                            } else  {
                                
    $daily_db 0;
                            }                
                            
    $data $this->db->prepare("UPDATE tl_travel_dates SET tstamp = ?,dateBeg = ?,dateEnd = ?,dateCost = ?,dateInfo = ?,dateDaily = ? WHERE id = ?")
                            ->
    execute(time(),$von_db,$bis_db,$cost[$i],$info[$i],$daily_db,$id[$i]);
                        }
                    }
                } 
    //for end
                
    $this->log('Edit '.count($this->Input->post('terbeg')).' entrys in "'.$this->strTable.'".pid='.$pid->pid'DC_Table_Dates edit()'TL_GENERAL);
                
    //Weiterleiten
                
    $this->redirect("contao/main.php?do=travels&table=tl_travel_dates&id=".$pid->pid."&rt=".RequestToken::get());                                    
            }        
            return 
    $content;
        }

        public function 
    create($set=array()) {
            
            
    $content '<div id="tl_buttons">
                        <a class="header_back" onclick="Backend.getScrollOffset()" accesskey="b" title="" href="contao/main.php?do=travels&table=tl_travel_dates&id='
    .$pid->pid.'&rt='.RequestToken::get().'">'.$GLOBALS['TL_LANG']['tl_travel_dates']['back'].'</a>
                    </div>'
    ;    
                    
            
    $content .= '<form action="'.ampersand(\Environment::get('request'), true).'" class="tl_form tl_edit_form" method="post">
                <div class="tl_formbody_edit">
                    <input type="hidden" name="FORM_SUBMIT" value="tl_filters_limit">
                    <input type="hidden" name="REQUEST_TOKEN" value="'
    .REQUEST_TOKEN.'">
                </div>
                
                <fieldset id="pal_title_legend" class="tl_tbox">
                    <legend onclick="AjaxRequest.toggleFieldset(this,\'title_legend\',\'tl_travel_dates\')">Termine verwalten</legend>
                    <div class="widget">'
    ;
                    
            
    $content.= '<table class="tl_listing">
                         <tr>
                          <td width="100" class="tl_file_list"><strong>'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_daily'].'</strong></td>
                          <td width="150" class="tl_file_list"><strong>'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_beg'].'</strong></td>
                          <td width="150" class="tl_file_list"><strong>'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_end'].'</strong></td>
                          <td width="80" class="tl_file_list"><strong>'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_cost'].'</strong></td>
                          <td width="180" class="tl_file_list"><strong>'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_info'].'</strong></td>
                          <td width="100" class="tl_file_list"><strong>'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_every'].'</strong></td>
                         </tr>'
    ;
            
    $max=$i+25;
            for(
    $i=0;$i<$max;$i++) {
                
    $content .= '<tr>
                              <td class="tl_file_list"><input type="checkbox" name="daily['
    .$i.']" value="1"></td>
                              <td class="tl_file_list"><input type="text" class="tl_text" name="terbeg['
    .$i.']" value=""></td>
                              <td class="tl_file_list"><input type="text" class="tl_text" name="terend['
    .$i.']" value=""></td>
                              <td class="tl_file_list"><input type="text" class="tl_text" name="preis['
    .$i.']" value="0"></td>
                              <td class="tl_file_list"><input type="text" class="tl_text" name="info['
    .$i.']" value=""></td>
                              <td class="tl_file_list"><select name="every['
    .$i.']" class="tl_select" style="width:110px;">
                                    <option value="">-----------------</option>
                                    <option value="'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_mon_val'].'">'.$GLOBALS['TL_LANG']['tl_travel_dates']['form_mon'].'</option>
                                    <option value="'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_tue_val'].'">'.$GLOBALS['TL_LANG']['tl_travel_dates']['form_tue'].'</option>
                                    <option value="'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_wed_val'].'">'.$GLOBALS['TL_LANG']['tl_travel_dates']['form_wed'].'</option>
                                    <option value="'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_thu_val'].'">'.$GLOBALS['TL_LANG']['tl_travel_dates']['form_thu'].'</option>
                                    <option value="'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_fri_val'].'">'.$GLOBALS['TL_LANG']['tl_travel_dates']['form_fri'].'</option>
                                    <option value="'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_sat_val'].'">'.$GLOBALS['TL_LANG']['tl_travel_dates']['form_sat'].'</option>
                                    <option value="'
    .$GLOBALS['TL_LANG']['tl_travel_dates']['form_sun_val'].'">'.$GLOBALS['TL_LANG']['tl_travel_dates']['form_sun'].'</option>
                                    </select></td>
                             </tr>'
    ;
            }                
                    
            
    $content.= '</table>';    
                    
            
    $content .= '<p class="tl_help tl_tip" title="">'.$GLOBALS['TL_LANG']['tl_travel_dates']['form_hinweis'].'</p>
                    </div>
                </fieldset>'
    ;
                    
            
    $content .= '<div class="tl_formbody_submit">
                <div class="tl_submit_container">
                        <button type="submit" name="save" id="save" class="tl_submit" accesskey="s">'
    .specialchars($GLOBALS['TL_LANG']['MSC']['save']).'</button>
                    </div>
                </div>'
    ;
            
    $content .= '</form>';
        
                                    
            if(
    $this->Input->post('FORM_SUBMIT') == 'tl_filters_limit') {
                
    $beg     $this->Input->post('terbeg');
                
    $end     $this->Input->post('terend');
                
    $cost     $this->Input->post('preis');
                
    $info     $this->Input->post('info');
                
    $daily     $this->Input->post('daily');
                
    $every    $this->Input->post('every');
                
    $pid     $this->Input->get('pid');
                
    $cnt     0;            
                
    $this->import('Database''db');
                for(
    $i=0;$i<=count($this->Input->post('terbeg'));$i++) {    
                    if(
    $beg[$i] != "") {
                        
    $von     explode(".",$beg[$i]);
                        
    $von_db mktime(0,0,0,$von[1],$von[0],$von[2]);
                        if(
    $every[$i]!='') {
                            
    $bis     explode(".",$end[$i]);
                            
    $bis_db mktime(0,0,0,$bis[1],$bis[0],$bis[2]);
                            while(
    $von_db<$bis_db) {
                                if(
    strcmp($every[$i],strftime('%a',$von_db))==0) {
                                    
    $data $this->db->prepare("INSERT INTO tl_travel_dates (pid,tstamp,dateBeg,dateEnd,dateCost,dateInfo) VALUES (?, ?, ?, ?, ?, ?)")
                                    ->
    execute($pid,time(),$von_db,$von_db,$cost[$i],$info[$i]);
                                    
    $insertID $data->insertId;
                                }
                                
    $von_db=strtotime("+1 day",$von_db);
                            }
                        } else {
                            
    //prüfen ob Endtermin eine Zahl ist
                            
    if(strlen($end[$i])>=3) {
                                
    $bis    explode(".",$end[$i]);
                                
    $bis_db mktime(0,0,0,$bis[1],$bis[0],$bis[2]);
                            } else {
                                
    $start     $von[2]."-".$von[1]."-".$von[0];
                                
    $bis     date('d.m.Y',strtotime($start." +".($end[$i]-1)." days")); 
                                
    $bis     explode(".",$bis);
                                
    $bis_db mktime(0,0,0,$bis[1],$bis[0],$bis[2]);
                            }
                            
                            
    //tägliche Reise
                            
    if(isset($daily[$i])) {
                                
    $daily_db 1;
                            }  else  {
                                
    $daily_db 0;
                            }                
                            
    $data $this->db->prepare("INSERT INTO tl_travel_dates (pid,tstamp,dateBeg,dateEnd,dateCost,dateInfo,dateDaily) VALUES (?, ?, ?, ?, ?, ?, ?)")
                            ->
    execute($pid,time(),$von_db,$bis_db,$cost[$i],$info[$i],$daily_db);
                            
    $insertID $data->insertId;
                        }
                        
    $cnt++;
                    }
                } 
    //for end
                
    $this->log('New entrys ('.$cnt.') in "'.$this->strTable.'" has been created '.$this->getParentEntries($this->strTable$insertID), 'DC_Table_Dates create()'TL_GENERAL);
                
    //Weiterleiten
                
    $this->redirect("contao/main.php?do=travels&table=tl_travel_dates&id=".$pid."&rt=".RequestToken::get());    
            }
            return 
    $content;
        }
    }
    Liebe Grüße
    WebRoxx


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
  •