Danke für ein interessantes Contao Camp am 03. & 04. November 2018 & Contao College am 02. November 2018 im Basislager Leipzig, Deutschland
Ergebnis 1 bis 6 von 6

Thema: fileTree - Unterscheidung Ist Auswahl Verzeichnis oder Datei

  1. #1
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    795
    Partner-ID
    6122

    Standard fileTree - Unterscheidung Ist Auswahl Verzeichnis oder Datei

    Hallo,
    teste mit dieser Config:

    Code:
    <?php 
    // rsce_my_element_config.php 
    return array( 
        'label' => array('Custom: Bildergalerie', ''), 
        'types' => array('content'), 
        'contentCategory' => 'Inhalte: Custom', 
        'standardFields' => array('cssID'), 
        'wrapper' => array( 
            'type' => 'none', 
        ), 
        'fields' => array( 
            'multiSRC' => array 
            ( 
                'label'                   => array('Bildeauswahl', 'Beschreibung'), 
                'inputType'               => 'fileTree', 
                'eval'                    => array('multiple'=>true, 'fieldType'=>'checkbox', 'orderField'=>'orderSRC', 'files'=>true, 'mandatory'=>true), 
                'load_callback' => array 
                ( 
                    array('tl_content', 'setMultiSrcFlags') 
                ) 
            ), 
        ), 
    );
    Dabei hat man nun die Möglichkeit entweder nur ein Verzeichnis oder mehrere/einzelne (in diesem Fall Fotos) auszuwählen.
    Wähle ich nur ein Verzeichnis kriege ich die Ausgabe hin.

    Wählt man aber ein Verzeichnis und zusätzlich darin weitere einzelne Fotos aus - sollen ja nur die ausgewählten Fotos ausgegeben werden.

    Wie kann ich das im template unterscheiden? Über $this->multiSRC erhalte ich ja nur ein Array mit den ID's ...
    Carpe diem ...

  2. #2
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    795
    Partner-ID
    6122

    Standard

    Hm,
    sehe gerade, das das Inhaltselement "Galerie" da auch nicht unterscheidet. Wenn ich hier zwei Fotos auswähle UND das Verzeichnis werden alle Fotos aus dem Verzeichnis herangezogen.
    War das nicht mal anders? Erwarten würde ich das dann NUR die beiden Fotos genutzt werden ...
    Carpe diem ...

  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    18.149
    User beschenken
    Wunschliste

    Standard

    Du musst dir ansehen was tl_content::setMultiSrcFlags genau macht. Das ändert das DCA, aber nur wenn der Typ des Elements der richtige ist. Du hast in deinem Fall ja kein Inhaltselement vom Typ gallery.

    Du solltest es so machen:
    PHP-Code:
    <?php 

    return array( 
        
    'label' => array('Custom: Bildergalerie'''), 
        
    'types' => array('content'), 
        
    'contentCategory' => 'Inhalte: Custom'
        
    'standardFields' => array('cssID'), 
        
    'wrapper' => array( 
            
    'type' => 'none'
        ), 
        
    'fields' => array( 
            
    'multiSRC' => array 
            ( 
                
    'inputType' => 'standardField'
                
    'eval'      => array(
                    
    'multiple'   => true
                    
    'fieldType'  => 'checkbox'
                    
    'orderField' => 'orderSRC'
                    
    'files'      => true
                    
    'mandatory'  => true,
                    
    'isGallery'  => true,
                    
    'extensions' => \Config::get('validImageTypes')
                )
            ), 
        ), 
    );

  4. #4
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    795
    Partner-ID
    6122

    Standard

    Hi,
    ich habe es bei 'inputType' => 'fileTree' belassen.

    Das mit den Auswahlen funktioniert soweit. Ich erhalte im FE identische Angaben wie im BE/Gallery, egal ob ich einzelne Dateien und/oder deren Order auswähle.
    Allerdings spiegelt die FE Ausgabe nicht die BE Sortierung wieder - Wenn jemand hierzu Vorschläge hat o. für den unteren Code weitere Vereinfachungen kennt - bin offen ...

    Danke
    Frank


    rsce_my_testing_config.php:

    PHP-Code:
    <?php 
    // rsce_my_testing_config.php 
    return array( 
      
    'label' => array('bxSlider''Inhalte über den bxSlider darstellen.'), 
      
    'types' => array('content'), 
      
    //'contentCategory' => ' Eigene Elemente', 
      
    'standardFields' => array('cssID'), 
      
    'wrapper' => array ( 
        
    'type' => 'none'
      ), 
      
    'fields' => array ( 
      
        
    'NoteInfo' => array (
          
    'label' => array( 'Hinweis: '''),
          
    'inputType' => 'text',
          
    'default' => 'Das "j_bxslider" Template muss im Seitenlayout eingebunden sein.',      
           
    'eval' => array ( 
            
    'disabled' => true'readonly' => truestyle => 'margin-top: 0px; margin-bottom: 18px; color: #000; background: #e9f0f7; border: 0px; ',
          ),             
         ),      
      
        
    'multiSRC' => array ( 
          
    'label' => array('Bilder und Ordner''Bitte wählen Sie ein oder mehrere Bilder oder einen Ordner aus. Wenn Sie einen Ordner auswählen, werden alle darin enthaltenen Bilder eingefügt.'), 
          
    'inputType' => 'fileTree'
          
    'eval' => array ( 
            
    'isGallery' => true'multiple' => true'fieldType' => 'checkbox''orderField' => 'orderSRC''files' => true'mandatory' => true'extensions' => \Config::get('validImageTypes'), 
          ),             
        ),
        
        
    'size' => array ( 
          
    'label' => array('Bildgröße''Hier können Sie die Abmessungen des Bildes und den Skalierungsmodus festlegen.'), 
          
    'inputType' => 'imageSize'
          
    'options' => \System::getImageSizes(),
          
    'eval' => array ( 
            
    'rgxp' => 'digit''includeBlankOption' => true'tl_class' => 'w50 clr',
          ), 
        ),       

      ), 
    );
    rsce_my_testing.html5:

    PHP-Code:
    <?php  

    $tmpArray 
    = array();
    $data $this->multiSRC;

    foreach (
    $data as $dataIndex) {

        
    $tmpArray[] = $dataIndex;

        
    $dataType = \FilesModel::findByPk($dataIndex)->type;
        
    $dataPid = \StringUtil::binToUuid(\FilesModel:: findByPk($dataIndex)->pid);

        if ( 
    $dataType == 'file' ) {
      
            if (!
    in_array($dataPid$tmpArray)) {

                 if (
    $image $this->getImageObject($dataIndex$this->size)) {
                    
    $this->insert('picture_default'$image->picture);
                }  
            }    
        }
      
        if ( 
    $dataType == 'folder' ) {
          
              
    $files = \FilesModel::findByPid(\StringUtil::uuidToBin($dataIndex));
          
            foreach(
    $files as $file) {
        
                if (
    $image $this->getImageObject(\StringUtil::binToUuid($file->uuid), $this->size)) {
                    
    $this->insert('picture_default'$image->picture);
                }
            }      
        }

    }

    $tmpArray $tmpArray = array();

    ?>
    Geändert von Franko (16.06.2018 um 14:58 Uhr)
    Carpe diem ...

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    18.149
    User beschenken
    Wunschliste

    Standard

    Ich würde an deiner Stelle 'inputType' => 'standardField' benutzen, da dann tatsächlich tl_content.multiSRC verwendet wird.

    Du berücksichtigst bei der Ausgabe die Sortierung schlicht und einfach gar nicht . Sieh dir den Code des eigentlichen Galerie Inhaltselementes an: https://github.com/contao/core-bundl....php#L183-L212

  6. #6
    Contao-Fan Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    795
    Partner-ID
    6122

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Ich würde an deiner Stelle 'inputType' => 'standardField' benutzen, da dann tatsächlich tl_content.multiSRC verwendet wird.

    Du berücksichtigst bei der Ausgabe die Sortierung schlicht und einfach gar nicht . Sieh dir den Code des eigentlichen Galerie Inhaltselementes an: https://github.com/contao/core-bundl....php#L183-L212
    Mann O Mann, da wühlt man sich durch Google/Forum und testet alles Mögliche anstatt gleich auf Dich zu hören:

    Auszug rsce_my_testing_config.php:

    PHP-Code:
        'multiSRC' => array ( 
          
    'label' => array('Bilder und Ordner''Bitte wählen Sie ein oder mehrere Bilder oder einen Ordner aus. Wenn Sie einen Ordner auswählen, werden alle darin enthaltenen Bilder eingefügt.'), 
          
    'inputType' => 'standardField'
          
    'eval' => array ( 
            
    'isGallery' => true'multiple' => true'fieldType' => 'checkbox''orderField' => 'orderSRC''files' => true'mandatory' => true'extensions' => \Config::get('validImageTypes'), 
          ),    
        ), 
    rsce_my_testing.html5:
    PHP-Code:
    <?php  

    $dataSorted 
    array_map('\StringUtil::binToUuid'deserialize($this->orderSRCtrue)); 

    foreach ( 
    $dataSorted as $data ) {

        if (
    $image $this->getImageObject($data$this->size)) {
            
    $this->insert('picture_default'$image->picture);
        }  

    }
    ?>
    That's all - Funktioniert!!

    Dank
    Carpe diem ...

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
  •