Ergebnis 1 bis 2 von 2

Thema: options callback für tags feld in backend (item edit mode)

  1. #1
    Contao-Nutzer
    Registriert seit
    24.11.2009.
    Ort
    Fläsch
    Beiträge
    248

    Frage options callback für tags feld in backend (item edit mode)

    Hallo

    Ich suche nach einer Möglichkeit, die Optionen eines Tag Feldes einzuschränken. Also wenn ich ein Katalogeintrag editiere sollten die anwählbaren Checkboxen des Tagfeldes eingeschränkt werden, abhängig von einer Callback Funktion die ich selbst definieren kann. Mit load_callback oder options_callback hab ich das nicht hinbekommen (obwohl der load_callback catalog intern auch verwendet wird, aber keinen Effekt hat, siehe Catalog.php->tagsConfig Funktion).

    Über Lösungsvorschläge würd ich mich freuen
    http://www.ideadapt.net - where ideas become code

  2. #2
    Contao-Nutzer
    Registriert seit
    24.11.2009.
    Ort
    Fläsch
    Beiträge
    248

    Standard

    Mit Hilfe des outputFrontendTemplate Hooks hab ich jetzt etwas gebastelt. Der Vollständigkeit wegen möcht ich das hier veröffentlichen:

    PHP-Code:
    if ($strTemplate == 'be_main'){
                
                
    // only apply in catalog edit mode
                
    if(false === (
                
    Input::getInstance()->get('do') === 'catalog' 
                
    && Input::getInstance()->get('table') === 'tl_catalog_items' 
                
    && Input::getInstance()->get('act') === 'edit'))
                {
                    return 
    $strContent;   
                }
                
                
    /*
                 * load dom
                 * getKurstypenWithKursart
                 * addKursartToLabels
                 * */
                
                
    $dom = new DOMDocument();
                
    // @ supresses parser warnings
                
    @$dom->loadHTML(utf8_decode($strContent));
                
    $rel $dom->getElementById("ctrl_kurstypen");
                
                if(!
    $rel){
                    return 
    $strtContent;
                }
                
                
    $x = new DOMXPath($dom);
                
    $inputs $x->query("input[@value]"$rel);
                
                if(
    count($inputs) > 0){
                    
                    
    $dbKurstypen Database::getInstance()
                               ->
    prepare("
                               SELECT t.id as kurstyp_id, a.name as kursart_name FROM cat_kurstyp t 
                               INNER JOIN cat_kursart a ON t.kursart = a.id
                               ORDER BY kursart_name"
    )
                               ->
    execute();
                               
                    
    $kurstypen = array();
                    if(
    $dbKurstypen->numRows 0){
                        
    $kurstypenAssoc $dbKurstypen->fetchAllAssoc();
                        foreach(
    $kurstypenAssoc as $kurstyp){
                            
    $kurstypen[$kurstyp['kurstyp_id']] = htmlentities($kurstyp['kursart_name']);
                        }
                    }                
                
                    foreach(
    $inputs as $i => $input){
                        
    $label      $input->nextSibling;
                        
    $kurstyp_id $input->getAttribute("value");
                        
    $label->nodeValue .= " (".$kurstypen[$kurstyp_id].")";
                    }
                    
    $strContent $dom->saveHTML();
                }
            }
         
            return 
    $strContent;
        } 
    http://www.ideadapt.net - where ideas become code

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
  •