Search the FirstSpirit Knowledge Base
Hallo, liebe Community,
Wir haben einen FS-Button der onClick einen Script ausführt.
In der Formular-Definition ist für den Button ein PARAM definiert, welches eine Eingabe-Kmponente übergeben soll.
<PARAM name="textField">#field.st_text</PARAM>
Es handelt sich dabei um ein einfaches CMS_INPUT_TEXT
Der Script der onClick ausgeführt führt wird tut nichts besonderes:
context.logError("test" + textField);
Die so provozierte Fehlermeldung lautet im SiteArchitect: 'test: de.espirit.firstspirit.ApiRemoteFormField@3304385f'
(Das FormField wird also übergeben)
In der integrierten Vorschau und im ContentCreator lautet die Meldung jedoch: 'test: void'
(Das FormField wird also nicht übergeben. Als ob es nicht mittels des PARAMS angegeben würde)
Wir verwenden die FS-Version: 2018-07
Woran kann das liegen?
Hat jemand Ideen?
Danke, für jede Hilfe
Viele Grüße
Mark
"Warum "st_picture" nicht direkt übergeben, wenn ihr später doch eh (nur?) an diesen Wert wollt?"
- Nun im ContentCreator können ja nur Strings übergeben werden und der Referenzname des Feldes reicht nicht.
Man braucht zusätzlich noch die ID der jeweiligen Seite und bei verschachtelten Inhalten ist es noch komplizierter.
"Prinzipiell ist die Interpretation des Rückgabewertes der editorId-Funktion keine gute Idee".
- Vielen Dank für die Auskunft.
Wir haben mittlerweile eine andere Lösung gefunden:
Außer der Element-ID (ID der Seite'#global.id' oder ID des Absatzes '#this.id') übergeben wir bei einfachen Inhalten "st_picture" und bei verschachtelten Inhalten
sozusagen den Pfad, von der Seite / dem Absatz über die FS_CATALOG-Entries bis hin zur Eingabekomponente
(Beispiel: 'st_teaser,2,st_picture', also FS_CATALOG 'st_teaser', 3. Element, Darin die Eingabekomponente 'st_picture').
Über eine FOR-Schleife im Absatz bzw. auf der Seite lässt sich das relativ leicht realisieren.
Viele Grüße
Mark
Hallo Mark,
das ApiRemoteFormField ist ein interne Implementierung des FormFields. Um den Wert im Skript zu erhalten musst du diesen auch aus dem Feld auslesen:
context.logError("test" + textField.get());
Viele Grüße
Thorsten
Hallo Thorsten Marx, Hallo Community
Zunächst einmal vielen Dank für die Antwort.
Jedoch hilft sie uns noch nicht weiter.
Das eigentliche Problem ist, wie oben beschrieben, dass das Feld-Objekt im Falle des ContentCreators (fsbutton, nicht FS_BUTTON) gar nicht übergeben wird.
Uns ist mittlerweile die Ursache bekannt. Bei der Nutzung des fsbuttons (HTML-Ausgabekanal-Definition, nicht die FS_BUTTON-Formular-Definition)
werden nur Strings, aber keine Objekte übergeben.
Die Lösung könnte die Übergabe entsprechender Identifier sein.
Hierzu ein paar Erläuterungen und abschleießend 2 Fragen:
Ziel:
Ziel ist es, nach dem Fallen lassen eines Reports auf den Button, ein im Report enthaltenes Bild in FS zu speichern und anschließend einer FS_REFERENCE zuzuweisen.
Hierfür soll der Redakteuer die Möglichkeit haben, den fsbutton (html) zu verwenden, anstelle des FS_BUTTONS (GOM).
So muss er nicht erst in die Bearbeitung des Absatzes bzw. der Seite wechseln.
Dies soll auch bei Datensätzen und bei verschachtelten Inhalten (Beispiel: fs_catalog) funktionieren.
Lösungsansatz (Der Referenzname der FS_REFERENCE lautet "st_picture", der des Buttons lautet "st_button"):
<span $CMS_VALUE(
fsbutton(
editorName:"st_button",
parameter:{
"targetField" : editorId(editorName:"st_picture")
},
callback:"refreshPage"
)
)$></span>
Anstelle der Übergabe eines Objektes (nicht möglich), wird also der Rückgabe-Wert von editorId(editorName:"st_picture") übergeben.
Wir würden die darin enthaltenen base64-Codes heraus parsen, die daraus resultierenden JSON-Werte ermitteln und so in der ausgeführten Executable das gesuchte FS_REFERENCE-Formular-Feld finden.
Das ist aber nur dann eine gute Idee, wenn die Zeichenfolge bzw. deren Aufbau und Struktur inkl. des Aufbaus des JSON sich nicht bei einem FirstSpirit-Software-Update ändert.
Zu den Fragen:
Vielen Dank für jede Hilfe
Viele Grüße
Mark
Hallo Mark,
bestimmt übersehe ich hier nur irgendetwas, aber wieso verwendet ihr denn überhaupt die editorId? Warum "st_picture" nicht direkt übergeben, wenn ihr später doch eh (nur?) an diesen Wert wollt?
Prinzipiell ist die Interpretation des Rückgabewertes der editorId-Funktion keine gute Idee. Meines Wissens ist dieser Wert nicht durch die API abgdeckt und kann sich jederzeit ändern.
Viele Grüße
Tim
"Warum "st_picture" nicht direkt übergeben, wenn ihr später doch eh (nur?) an diesen Wert wollt?"
- Nun im ContentCreator können ja nur Strings übergeben werden und der Referenzname des Feldes reicht nicht.
Man braucht zusätzlich noch die ID der jeweiligen Seite und bei verschachtelten Inhalten ist es noch komplizierter.
"Prinzipiell ist die Interpretation des Rückgabewertes der editorId-Funktion keine gute Idee".
- Vielen Dank für die Auskunft.
Wir haben mittlerweile eine andere Lösung gefunden:
Außer der Element-ID (ID der Seite'#global.id' oder ID des Absatzes '#this.id') übergeben wir bei einfachen Inhalten "st_picture" und bei verschachtelten Inhalten
sozusagen den Pfad, von der Seite / dem Absatz über die FS_CATALOG-Entries bis hin zur Eingabekomponente
(Beispiel: 'st_teaser,2,st_picture', also FS_CATALOG 'st_teaser', 3. Element, Darin die Eingabekomponente 'st_picture').
Über eine FOR-Schleife im Absatz bzw. auf der Seite lässt sich das relativ leicht realisieren.
Viele Grüße
Mark