contao / core

Contao 3 → see contao/contao for Contao 4
GNU Lesser General Public License v3.0
492 stars 213 forks source link

label und label_callback sind defekt in Mode 5 (treeview) bei copy&paste Aktion #2915

Closed ghost closed 12 years ago

ghost commented 12 years ago

Wenn eine Erweiterung den Listing mode 5 nutzt und die Tabelle der Erweiterung kein Feld "protected" hat, so wird in Zeile 3022 der DC_Table.php diese Eigenschaft dennoch gesetzt. Das macht aber das Database Result $objRow kaputt bzw. erweitert es so, dass der Aufruf von $objRow->row() nicht das gewünschte Ergebnis liefert. Das tritt nur dann auf, wenn man per copy oder cut eine Zeile in die "Zwischenablage" von Contao überführt hat.

Mögliche Lösung: Der Tabelle das Feld "protected" geben, analog zu tl_page.

Besser: Wenn die Tabelle das Feld nicht hat, dann in Zeile 3022 die Eigenschaft nicht versuchen zu überschreiben.

Eine genauere Herleitung wie ich auf den Fehler gestoßen bin, gibt's im Forum: http://www.contao-community.de/showthread.php?17587

--- Originally created by matths on March 8th, 2011, at 02:20pm (ID 2915)

ghost commented 12 years ago

Die Bugbeschreibung ist falsch. Ich habe weiter recherchiert und es ist ein Problem mit dem Cachen von DB Results. In der onload_callback (die vor der label_callback aufgerufen wird) mache ich bereits einen SELECT auf die Tabelle. Dort nutze ich die Methode ->execute($dc->id), weshalb der Wert irgendwie gecached wird. Später in der LabelCallback hat dann der gecachte Wert den Index 1 statt 0. Der Rest stimmt dann in meiner Beschreibung wieder.

Jetzt habe ich in der onload_callback ein ->executeUncached($dc->id) gemacht und dadurch funktioniert alles wie erwartet. Dieses Ticket kann also geschlossen werden.

Es sei denn, es handelt sich mit dem Caching um einen Fehler. Das kann ich aber gerade nicht beurteilen, da ich zuwenig über das DB Caching von Contao weiß.

--- Originally created by matths on March 8th, 2011, at 03:19pm

aschempp commented 12 years ago

Ich kann den Fehler nicht reproduzieren. Interessant wäre es auch was du in deinem onload_callback mit dem Database_Result machst, denn der Cache-Index müsste bei 0 beginnen und nicht bei 1.

--- Originally created on March 8th, 2011, at 11:05pm

leofeyer commented 12 years ago

Sicherheitshalber habe ich den Aufruf in der eb504516d9bfc9f7d0e47973f8c0c703 mal entsprechend geändert.

--- Originally created on March 22nd, 2011, at 11:41am

leofeyer commented 12 years ago

--- Originally completed on March 22nd, 2011, at 11:41am