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
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
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
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
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:
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...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']!=1 && $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, $attributes, true);
}
protected function buttonCallback($id, $href, $label, $title, $icon, $attributes, $active = true)
{
if ($active == true)
return '<a href="'.$this->addToUrl($href.'&id='.$id).'" title="'.specialchars($title).'"'.$attributes.'>'.$this->generateImage($icon, $label).'</a> ';
else
return $this->generateImage(preg_replace('/\.gif$/i', '_.gif', $icon)).' ';
}
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:
- $row ist die aktuelle DB Tabellen-Zeile, sozusagen zuständig für diesen Button
- $href ist die URL des Buttons
- $label das Standard-Label für den Button
- $title auch wie der Name sagt
- $icon das Standard-Icon
- $attributes weitere Attribute für das HTML (aus der DCA)
- $strTable Name der verwendeten Tabelle
- $top alle IDs der Einträge auf oberster Ebene (achja, ich bin in Mode 5 TreeView)
- $child alle IDs der Child-Elemente des aktuellen Knotens
- $dont_know <-- das wüsste ich gerne
- $level_prev ID vom vorhergehenden Eintrag auf gleicher Hierarchie-Ebene!
- $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:
ps. ich dachte, mehr als 5-7 Parameter sind "schlechter Stil"?PHP-Code:
public function editButtonCallback($row, $href, $label)
{
return print_r(func_get_args(), true);
}
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.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
}
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.
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 in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Lesezeichen