Hook-Handling in der Erweiterungsverwaltung #2448
Comments
Könnten wir das am konkreten Beispiel diskutieren? --- Originally created on September 4th, 2010, at 12:51am |
Ich vermute er meinte den OutputBackendTemplate Hook. Im Backend kann durchaus bei jeglichem HOOK eine race condition entstehen, wenn sich die "gehookten" Funktionen geaendert haben. Bsp.:
Das ER sollte daher am Ende seiner compile() Routine am Besten ein unset($GLOBALS['TL_HOOK']); oder vergleichbares machen. English: --- Originally created by xtra on September 4th, 2010, at 09:38am |
Kann ich übrigens bestätigen. Hatte das Problem bei den easy_themes und so gelöst:
--- Originally created on September 4th, 2010, at 01:11pm |
Hier nochmal ausführlicher das konkrete Beispiel von mir: InputCount definiert in Version < 1.4.0 die Funktion "injectJavascript" und setzt diese in den outputFrontendTemplate-Hook. Ab Version 1.4.0 heißt die Funktion (der restlichen Erweiterungslogik folgend, die nun auch für das Frontend "aufgebohrt" wurde) aber "injectJavascriptBE". Nun passiert bei der Modulaktualisierung folgendes:
--- Originally created on September 6th, 2010, at 03:17pm |
Nur zur Info, dieses Problem tritt beispielsweise auch beim deinstallieren meiner Erweiterung "fastedit" auf. Diese registriert einen outputBackendTemplate Hook, die entsprechende Klassen-Daten existiert nach der Deinstallation natürlich nicht mehr. --- Originally created on September 26th, 2010, at 10:14pm |
Behoben in c231caf. --- Originally created on November 29th, 2010, at 11:57am |
--- Originally completed on November 29th, 2010, at 11:57am |
Problem:
Für die Erweiterungsverwaltung werden die Hooks vor dem Update eines Moduls eingelesen. Nachdem dessen Dateien ausgetauscht wurden, wird der outputFrontendTemplate-Hook aufgerufen. Dabei passt durch die alte Version der Erweiterung definierte Hook unter Umständen nicht mehr zu den neuen Dateien. Dies ist insbesondere der Fall, wenn die Funktion, die der Hook aufrufen soll, umbenannt wurde. (Aktuelles Beispiel: Die Erweiterung inputcount ist nun auch im Frontend nutzbar. Um die Benennung dabei klar zu gestalten wurde die Funktion injectJavascriptFE hinzugefügt und die bestehende injectJavascript in injectJavascriptBE umbenannt.)
Lösungsvorschläge:
--- Originally created on August 18th, 2010, at 11:06am (ID 2448)
The text was updated successfully, but these errors were encountered: