[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Metainfo-Addon: unterschlägt "fremde" Metafelder - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Christoph Böcker
Beiträge: 6
Registriert: 1. Dez 2014, 23:19

Metainfo-Addon: unterschlägt "fremde" Metafelder

1. Dez 2014, 23:48

Hallo Zusammen

ich wollte in einem eigenen Addon im Medienpool-Formular eigene Meta-Felder einschleusen. Eigentlich hatte ich den Extension-Point "MEDIA_FORM_EDIT" für geeignet gehalten; der Source-Code des Formulars legte das auch nahe, denn die Rückgabe aus der aufgerufenen Funktion wird in das Formular geechot.

Dummerweise klappt es nicht. Der einzuschleusende Code kommt im Formular nicht an. Nach mehr oder weniger langer Suche habe ich dann gemerkt, dass der Extension-Point von einem anderen Addon, nämlich "metainfo", gekapert ist. Das wäre auch noch ok, denn tatsächlich werden beide eingehängten Funktionen aufgerufen. Meine zuerst und dann die von "metainfo" (rex_a62_metainfo_form aus der Datei addons/metainfo/extensions/extension_med_metainfo.inc.php). Als Resultat kommt aber nur der von rex_a62_metainfo_form erzeugte Code im Formular an.

Weitere Recherche und insbesondere Analyse des übergebenen $params ergab, dass mein Formular-HTML als $params['subject'] weitergetragen wurde. Er kommt also in rex_a62_metainfo_form an! Aber er wird nicht weitervearbeitet - man könnte auch sagen: er wird unterschlagen :-)

Die Gegenprobe war einfach: das Return-Statement von rex_a62_metainfo_form ändern

Code: Alles auswählen

function rex_a62_metainfo_form($params)
{
    ....
    return _rex_a62_metainfo_form('med_', $params, '_rex_a62_metainfo_med_handleSave') . $params['subject'];
}
und schon war das Formular auch mit meinen Erweiterungen versehen. So soll es sein!

Dabei könnnte ich es jetzt bewenden lassen ... aber ich ändere ungerne Core-Code. Vieleicht könnte ihr mal prüfen, ob das wirklich so gewollt ist (Feature) oder ob es evtl doch eine wünschenswerte Eigenschaft sein könnte. So ist der Extension-Point jedenfalls nur die Hälfte wert.

(ach ja: aktuelle Version 4.6.1)

Danke und Gruß
Christoph

Ingo
Beiträge: 782
Registriert: 24. Jun 2010, 00:34

Re: Metainfo-Addon: unterschlägt "fremde" Metafelder

2. Dez 2014, 14:20

Was spricht denn dagegen, deine Metainfos über das Metainfo Addon anzulegen? Dafür ist es gedacht...

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: Metainfo-Addon: unterschlägt "fremde" Metafelder

2. Dez 2014, 18:46

Hej,

du könntest entweder dein AddOn so umbenennen, dass es hinter Metainfo auftaucht oder beim Aufruf des EP das Flag "REX_EXTENSION_LATE" setzen

Code: Alles auswählen

rex_register_extension('MEDIA_FORM_EDIT', 'deine_function', REX_EXTENSION_LATE);
vg Thomas

Christoph Böcker
Beiträge: 6
Registriert: 1. Dez 2014, 23:19

Re: Metainfo-Addon: unterschlägt "fremde" Metafelder

3. Dez 2014, 00:19

Hallo Ingo, hallo Thomas,

die Idee mit REX_EXTENSION_LATE hatte ich noch nicht. Danke! Funktioniert sogar - wenn man es als vierten Parameter setzt :-)

Code: Alles auswählen

rex_register_extension('MEDIA_FORM_EDIT', 'deine_function', null, REX_EXTENSION_LATE);
Ist dennoch nur ein Workaround für das eigentliche Problem. Ich mach mal eins, zwei, drei :-)

1) Ja, man kann mit dem metainfo-Addon eigene Felder nutzen, aber das Ding kommt irgendwann an Grenzen. Was ich haben will klappt damit nach meiner Einschätzung nicht. Code Injection ist Mittel der Wahl. Also Schwamm drüber.

2) Mit meinem oben beschriebenen Workaround bzw. REX_EXTENSION_LATE komme ich auf jeden Fall ans Ziel. Richtig schön ist das halt nicht, weil ich mir den Trick merken muss. Aber das ist ein überschaubares Thema angesichts der Tatsache, dass ich - wenn doch irgendwann mal R5 kommt - noch ganz andere Probleme kriege :wink: . Also Schwamm drüber.

Zwischenfazit: mein konkretes Problem kriege ich gelöst. Workaround statt Bugfix, aber gelöst.

3) Es geht mir um das Problem dahinter! Wenn sich mehrere AddOns auf den Extensionpoint hängen und alle schön brav ihren HTML-Code zusammen mit dem über $params['subject'] erhaltenen Code weitergeben, ist trotzdem spätestens bei metainfo schluss. Der unterbricht die Kette. Und das ist das Problem bzw. der Bug. Ok, wenn der Extension-Point eigentlich und überhaupt und sowieso nur dazu da ist, dass metainfo funktioniert, kann ich es verstehen. Dann hat der EP aber auch nichts verloren in EP-Übersichten (Cheat-Sheets etc.). Der Bug wäre dann im Cheat-Sheet etc. :-)

Mal angesehen davon, dass man überhaupt erst mal rausbekommen muss, dass der Mechanismus der Ergebniskaskadierung so funktioniert :-)

Lösungen gibt es drei:
1) Scheißt der Hund drauf.
2) metainfo beibringen, den eigenen Code mit $params['subject'] weiterzugeben
3) Die Ablaufsteuerung für Extensionpoints übernimmt die Ergebniskonsolidierung, was eigentlich die beste Lösung wäre. (z.B. mit R5 und Umstellung auf rex_extension)

Nehmt es bitte als Anregung für eine Verbesserung. Mehr will ich nicht.

Danke und Gruß
Chris

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

Re: Metainfo-Addon: unterschlägt "fremde" Metafelder

3. Dez 2014, 10:39

Hi!

danke für deinen Input. Wir werden dazu weiter auf github diskutieren
https://github.com/redaxo/redaxo4/issues/374

Grüße,
Markus


Zurück zu „Sonstiges“