Ergebnis 1 bis 7 von 7

Thema: Backend Erweiterung ohne DCA mit FileTree Widget

  1. #1
    Contao-Nutzer Avatar von dominik.zogg@gmail.com
    Registriert seit
    12.04.2011.
    Ort
    Walzenhausen
    Beiträge
    72

    Standard Backend Erweiterung ohne DCA mit FileTree Widget

    Hallo Zusammen

    Ich versuche gerade ein BackendModul zu schreiben, welches unabhängig vom DCA Array arbeitet und einen FileTree Widget nutzt. Leider habe ich noch keine Lösung gefunden ohne den DCA um ein pseudo Element (ohne Datenquelle) dieses Ziel zu erreichen.

    Wenn ich die FileTree.php richtig interpretiere, werden da die Radios bzw. Checkboxen nur basierend vom dca erstellt.

    Auschnitt aus der FileTree.php, Methode (renderFiletree, ab Zeile 342 Contao 2.9.5):
    PHP-Code:
    // Add checkbox or radio button
    else
    {
        switch (
    $GLOBALS['TL_DCA'][$this->strTable]['fields'][$this->strField]['eval']['fieldType'])
        {
            case 
    'checkbox':
                
    $return .= '<input type="checkbox" name="'.$this->strName.'[]" id="'.$this->strName.'_'.md5($currentFolder).'" class="tl_tree_checkbox" value="'.specialchars($currentFolder).'" onfocus="Backend.getScrollOffset();"'.$this->optionChecked($currentFolder$this->varValue).' />';
                break;

            case 
    'radio':
                
    $return .= '<input type="radio" name="'.$this->strName.'" id="'.$this->strName.'_'.md5($currentFolder).'" class="tl_tree_radio" value="'.specialchars($currentFolder).'" onfocus="Backend.getScrollOffset();"'.$this->optionChecked($currentFolder$this->varValue).' />';
                break;
        }

    Mein Lösungsansatz funktioniert, aber scheint mir ziemlich gegen die "Vorgaben" zu verstossen:
    PHP-Code:
        /**

         * generateDCAforWidgets

         */

        
    protected function generateDCAforWidgets() {

            
    $GLOBALS['TL_DCA'][$this->strTable]['fields'] = array

            (

                
    'file' => array

                (

                    
    'label' => $GLOBALS['TL_LANG'][$this->strTable]['file'],

                    
    'inputType' => 'FileTree',

                    
    'eval' => array

                    (

                        
    'fieldType' => 'radio',

                        
    'files' => true,

                        
    'filesOnly' => true,

                        
    'extensions' => 'mm',

                    ),

                ),

            );

            foreach(
    $GLOBALS['TL_DCA'][$this->strTable]['fields'] as $strFieldname => $field)

            {

                
    $strPropertyname 'freemindimport' $strFieldname;

                
    $this->Template->$strPropertyname $this->generateWidget($strFieldname);

            }

        }



        
    /**

         * generateWidget

         * @param string $strFieldname fieldname

         * @return obj widget

         */

        
    protected function generateWidget($strFieldname)

        {

            
    $widget = new $GLOBALS['TL_DCA'][$this->strTable]['fields'][$strFieldname]['inputType']

            (

                
    $this->prepareForWidget

                
    (

                    
    $GLOBALS['TL_DCA'][$this->strTable]['fields'][$strFieldname],

                    
    $strFieldname,

                    
    $this->Input->post($strFieldname),

                    
    $strFieldname,

                    
    $this->strTable

                
    )

            );

            return 
    $widget;

        } 
    Hat da jemand eine Lösung, die Sauber gelösst ist?

  2. #2
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.621
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Oder schau die mal an wie das beim StyleSheet Import gemacht wird. Allerdings stellt sich natürlich auch die Frage warum du ohne DCA arbeitest?
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  3. #3
    Contao-Nutzer Avatar von dominik.zogg@gmail.com
    Registriert seit
    12.04.2011.
    Ort
    Walzenhausen
    Beiträge
    72

    Standard

    Hallo Leo, Hallo Andreas

    Das Beispiel vom Stylesheet Import hat mir aufgezeigt, dass dieses Widget den DCA zwingend benötigt (Zeile 679, Stylesheets.php), dass dieser im DCA aber nicht auf ein Feld in der Tabelle gemappt werden muss. Das Feld "source" in diesem Fall ist kein Feld der Tabelle, kann ich den DCA ganz normal verwenden. Ich werde das nun dementsprechend korrigieren und den DCA von tl_page nutzen, da ich aus einer Datei (xml) einen Baum in der Seitenstruktur erstelle.

    Ich werde auf jeden Fall Feedback geben ob es geklappt hat.

    Vielen Dank euch.

  4. #4
    Contao-Nutzer Avatar von dominik.zogg@gmail.com
    Registriert seit
    12.04.2011.
    Ort
    Walzenhausen
    Beiträge
    72

    Standard

    Ich bin nun doch beim Konzept des dynamischen generieren des DCA Array für das Backendmodul geblieben.

    Funktioniert gut. Falls jemand den Code lesen will und/oder konkrete Vorschläge hat findet das Modul unter freemindimport

  5. #5
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Genau fuer solche Dinge habe ich den DC_Memory geschrieben. Laesst sich wie ein normaler DCA nutzen, benoetigt aber keine Table, da du dich selbst um die Datenhaltung kuemmern musst.
    Kleines Beispiel hier : http://contao-forge.org/projects/c3f...wiki#DC_Memory
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  6. #6
    Contao-Nutzer Avatar von dominik.zogg@gmail.com
    Registriert seit
    12.04.2011.
    Ort
    Walzenhausen
    Beiträge
    72

    Standard

    Danke Stefan

    Ich muss zugeben, dass ich anfangs überhaupt nicht weiter gekommen bin mit deinem Link (lag wohl an mir ;-)).

    Doch dann habe ich mir deine Erweiterung "translationhelper" angeschaut und habe festgestellt, dass ich alles was nicht den Import selbst betrifft, dh. die Seitenstruktur und die Artikel abzufüllen, von Grund auf neu geschrieben werden musste an meinem "freemindimport".

    Trotzdem habe ich das in die Hand genommen und dieses Ding neu geschreiben und bin froh wieder etwas gelernt zu haben.

    Danke an alle die zur Lösung beigetragen haben.

  7. #7
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Die Idee mit FreeMind und der mit der Seitenstruktur ist ja genial !

    Muss ich mir mal dringend anschauen.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

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
  •