[mlltext] korrekte Labels in Backend List

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • bubblez
    Contao-Nutzer
    • 24.11.2009
    • 248

    #1

    [mlltext] korrekte Labels in Backend List

    Hallo zusammen
    Ich habe gerade das Modul mltext für contao installiert. Ich verwende es im Gallery Modul, um mehrsprachige Gallery Beschreibungen etc. zu erstellen. Und habe Probleme bei der Listenansicht der Archive im Backend. Die Labels (Archive Titel) werden in der Auflistung base64 encodiert angezeigt. Ich habe also eine label_callback registriert und kann das Label in der Archiv Auflistung nun korrekt anzeigen. Sobald ich aber die Gallerien eines Archiv aufliste, wird mein label_callback nicht mehr verwendet, und dementsprechend ist der Titel wieder falsch (siehe screenshot im Anhang). Wie kann ich diesen zweiten Titel in der Gallerieauflistung ändern?

    Ich denke, dass Problem ist allgemeiner Natur. Also, dass ich für jegliche zweisprachige Felder einen callback registrieren muss... ich habe das bis jetzt so gelöst:

    PHP-Code:
        public function getArchiveLabel($row, $label){
            $langText = deserialize(base64_decode($label));
            if(!is_array($langText)){
                return $label;
            }else{
                $txt = $this->prepareForWidget($GLOBALS['TL_DCA']['tl_gallery_archive']['fields']['title'], 'txtTitle');
                $fieldObj = new MLTextField($txt);
                $fieldObj->label = $langText[$GLOBALS['TL_LANGUAGE']];
                return $fieldObj->generateLabel($GLOBALS['TL_LANGUAGE']);
            }
        } 
    
    gäbe es einen eleganteren Weg mein Problem zu lösen?
    http://www.ideadapt.net - where ideas become code
  • bubblez
    Contao-Nutzer
    • 24.11.2009
    • 248

    #2
    Feldinhalte von mltext automatisch übersetzen

    Habe jetzt in Database.php die Methode fetchAssoc angepasst, damit alle Felder zuerst (einmalig pro request) übersetzt werden, falls es sich denn um Strings handelt, die übersetzt werden sollten:

    PHP-Code:
    public function fetchAssoc()
        {
            if (!$this->arrCache[++$this->intIndex])
            {
                if (($arrRow = $this->fetch_assoc()) == false)
                {
                    --$this->intIndex;
                    return false;
                }
                // kuu, 21. jul 2010
                // translate mltext field values if not in edit mode, once for every cached row
                if(!$_REQUEST['act']){
                    foreach($arrRow as $fName => $fValue){
                        if(is_string($fValue)){
                            $text = deserialize(base64_decode($fValue));
                            if(is_array($text)){
                                $arrRow[$fName] = $text[$GLOBALS['TL_LANGUAGE']];
                            }
                        }
                    }
                }
                // kuu end
                
                $this->arrCache[$this->intIndex] = $arrRow;
            }
    
            return $this->arrCache[$this->intIndex];
        } 
    
    http://www.ideadapt.net - where ideas become code

    Kommentar

    Lädt...