-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Nur mal so als Idee:
In den YTemplates ist ein Teil des Code aus den Original-Templates hineinkopiert und wird aufgerufen, wenn kein Accordion-Effekt angefordert ist.
yform_accordion_relation/ytemplates/bootstrap/value.be_manager_inline_relation.tpl.php
Lines 36 to 41 in 3422db2
| // ------------------------------------------------------------------- | |
| // Kein Accordion? → Original-Verhalten 1:1 | |
| // ------------------------------------------------------------------- | |
| if (!$isAccordion) { | |
| $class_group = trim('form-group ' . $this->getHTMLClass()); | |
Es könnte zudem sein, dass über andere Addon ebenfalls modifizierte gleichnamige Scripte vorliegen. In dem Fall könnte es sogar passieren, dass der Fallback eben nicht auf das Originnal erfolgen sollte.
Und man muss bei Änderungen des Originals diese immer korrekt und zeitnah übernehmen.
Mein Vorschlag: Weiterleiten auf das Script, das ohne yform_accordion_relation dran wäre, egal ob Original oder was dazwischen. Freundlicher weise ist die Liste der registrierten YTemplate-Verzeichnisse public verfügbar. Einfach den eigenen Pfadnamen löschen, neu parsen und den vorgerigen Zustand wieder herstellen.
Das Script sähe so aus:
if (!$isAccordion) {
/**
* Den eigenen Pfad aus dem Template-Path entfernen
* Mit den verbliebenen über den internen Mechanismus das Feld rendern
* Pfade wieder auf den vollen Satz zurücksetzen
*/
$originalTemplatePaths = rex_yform::$TemplatePaths;
rex_yform::$TemplatePaths = array_values(array_filter(
$originalTemplatePaths,
function(string $path) { return !str_ends_with($path,'/yform_accordion_relation/ytemplates');},
));
echo $this->parse($template, $params);
rex_yform::$TemplatePaths = $originalTemplatePaths;
return;
} else {
....
}