Ergebnis 1 bis 6 von 6

Thema: list operations in Abhängigkeit anzeigen lassen?

  1. #1
    Contao-Nutzer
    Registriert seit
    25.02.2010.
    Beiträge
    89

    Standard list operations in Abhängigkeit anzeigen lassen?

    Hallo, ist es möglich im dca unter list / operations einige Icons nur in einer gewissen Abhängigkeit anzeigen zu lassen, oder werden diese immer global auf alle Elemente angewandt?

    Danke

  2. #2
    Contao-Fan Avatar von Bandyt
    Registriert seit
    22.04.2010.
    Ort
    Bremen
    Beiträge
    808

    Standard

    Ich habe es noch nicht ausprobiert, aber mit dem onload_callback für den DCA müsstest du auch die Operations anpassen können. Die würde dann immer gelten, wenn diese Daten bearbeitet würden.
    Meine Erweiterungen: League Manager | Forum

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

    Support Contao

    Standard

    Mit dem onload_callback kannst du nur global für alle Datensätze anpassen, und nicht für jeden einzelnen. Du benötigst das button_callback. Schau dir am besten die system/modules/backend/dca/tl_article.php an. So werden auch die Zugriffsrechte (graue Icons) kontrolliert.
    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

  4. #4
    Gesperrt
    Registriert seit
    02.12.2009.
    Ort
    Berlin
    Beiträge
    103

    Standard

    Andreas hat Recht. Das mit den Button-Callbacks klappt sehr gut, das mache ich auch gerade. Ich habe mit eine Methode geschrieben, die ich je nach aktiv/inaktiv dann den Button erzeugen lasse:
    PHP-Code:
        public function editButtonCallback($row$href$label$title$icon$attributes$strTable$top$child$dont_know$level_prev$level_next)
        {
            return 
    $this->buttonCallback($row['id'], $href$label$title$icon$attributes, ($row['pid']!=&& $row['id']!=1));
        }
        public function 
    deleteButtonCallback($row$href$label$title$icon$attributes$strTable$top$child$dont_know$level_prev$level_next)
        {
            return 
    $this->buttonCallback($row['id'], $href$label$title$icon$attributestrue);
        }
        protected function 
    buttonCallback($id$href$label$title$icon$attributes$active true)
        {
            if (
    $active == true)
                return 
    '<a href="'.$this->addToUrl($href.'&amp;id='.$id).'" title="'.specialchars($title).'"'.$attributes.'>'.$this->generateImage($icon$label).'</a> ';
            else
                return 
    $this->generateImage(preg_replace('/\.gif$/i''_.gif'$icon)).' ';
        } 
    Du siehst, ich schleife die Parameter einfach an die Methode die die Buttons baut durch und gebe den zusätzlichen Parameter (true/false) mit rein, der sagt ob der Button aktiv oder inaktiv ist...

    Ich wüsste jetzt noch zu gerne, was der Parameter Nr. 10 ist, den ich $dont_know genannt habe. Die anderen Parameter habe ich mir erschlossen:
    1. $row ist die aktuelle DB Tabellen-Zeile, sozusagen zuständig für diesen Button
    2. $href ist die URL des Buttons
    3. $label das Standard-Label für den Button
    4. $title auch wie der Name sagt
    5. $icon das Standard-Icon
    6. $attributes weitere Attribute für das HTML (aus der DCA)
    7. $strTable Name der verwendeten Tabelle
    8. $top alle IDs der Einträge auf oberster Ebene (achja, ich bin in Mode 5 TreeView)
    9. $child alle IDs der Child-Elemente des aktuellen Knotens
    10. $dont_know <-- das wüsste ich gerne
    11. $level_prev ID vom vorhergehenden Eintrag auf gleicher Hierarchie-Ebene!
    12. $level_next ID vom nächsten Eintrag auf gleicher Hierarchie-Ebene!


    Vielleicht (oder fast schon ziemlich sicher) hat so ein button_callback weniger Einträge, wenn man nicht in Mode 5 ist...
    Zur Analyse empfehle ich ein:
    PHP-Code:
        public function editButtonCallback($row$href$label)
        {
            return 
    print_r(func_get_args(), true);
        } 
    ps. ich dachte, mehr als 5-7 Parameter sind "schlechter Stil"?

  5. #5
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    PHP-Code:
    /**
     * @param array $arrRow the current row
     * @param string $href the url of the embedded link of the button
     * @param string $label label text for the button
     * @param string $title title value for the button
     * @param string $icon url of the image for the button
     * @param array $attributes additional attributes for the button (fetched from the array key "attributes" in the DCA)
     * @param string $strTable the name of the current table
     * @param $arrRootIds array of the ids of the selected "page mounts" (only in tree view)
     * @param $arrChildRecordIds ids of the childs of the current record (only in tree view)
     * @param boolean $blnCircularReference determines if this record has a circular reference (used to prevent pasting of an cutted item from an tree into any of it's childs).
     * @param string $strPrevious id of the previous entry on the same parent/child level. Used for move up/down buttons. Not for root entries in tree view.
     * @param string $strNext id of the next entry on the same parent/child level. Used for move up/down buttons. Not for root entries in tree view.
     */
    public function button_callback($arrRow$href$label$title$icon$attributes$strTable$arrRootIds$arrChildRecordIds$blnCircularReference$strPrevious$strNext);
        {
            
    // do something
        

    Der von dir gesuchte Parameter ist der, der bei Baeumen bestimmt, ob eine zirkulaere Referenz vom aktuell im Clipboard enthaltenen Item zu dem "aktuell betrachteten" item des button_callbacks besteht.
    Somit kann man (und sollte man auch), das pasten des Items innerhalb eines seiner subitems verhindern.

    Gruss
    Chris

    PS: obige Doku habe ich nirgendwo geklaut sondern selbst aus dem code abgeschrieben, ich veroeffentlich demnaechst wohl mal ein paar mehr solche Schnippsel die ich mir selbst zusammengeschrieben habe.
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  6. #6
    Gesperrt
    Registriert seit
    02.12.2009.
    Ort
    Berlin
    Beiträge
    103

    Standard

    Hallo xtra,

    ja, das ist super! Ich denke, wir haben alle inzwischen eine solche kleine Sammlung zusammen...

    Ich bin etwas erleichert, da es bei mir nur 2 Hierarchie-Ebenen hat und somit zirkuläre Verknüpfungen perse nicht vorkommen.

    Gruß,
    matths

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Eigene ['list']['operations']
    Von gzocker im Forum Entwickler-Fragen
    Antworten: 2
    Letzter Beitrag: 10.03.2010, 20:06
  2. Download Archiv anzeigen lassen
    Von ernie im Forum Bilder/Dateien
    Antworten: 4
    Letzter Beitrag: 18.12.2009, 19:58
  3. PHP-Hinweise anzeigen lassen
    Von franks im Forum Entwickler-Fragen
    Antworten: 5
    Letzter Beitrag: 29.11.2009, 21:28
  4. Antworten: 3
    Letzter Beitrag: 18.08.2009, 08:23

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •