phillip_austerf
New Creator

Checkbox per Script erstellen

Hallo zusammen,

ich finde leider keine Informationen darüber, wie ich ein Formularelement des Type CMS_INPUT_CHECKBOX mittels Script dynamisch befüllen kann.

Hintergrund ist folgender:

Ein Script soll auf einem PageFolder ausgeführt werden und dann eine Checkbox erzeugt werden, in welcher die darin enthaltenen Pages als Option zum an-/abwählen enthalten sind.

Ich möchte das Script-Formular jedoch nicht mittels XML im Script selbst erzeugen, sondern eine im Formular bereits existierende Checkbox verwenden.

Wie ist dies möglich?

Ich komme zwar an ein OptionModel etc, jedoch habe ich keine Idee, wie ich eine neue Option erzeugen kann.

final Form pForm = // mein Formular des Scriptes 
final Set vpOptions = new HashSet<>();

final GomFormElement pGomFormField = pForm.getModel().findEditor( "st_checkbox" );

final CheckboxEditorValue pCheckboxDefaultValue = (CheckboxEditorValue) pGomFormField.getDefaultValue();

final OptionFactory pOptionFactory = pCheckboxDefaultValue.getOptionFactory();

final OptionModel pModel = pCheckboxDefaultValue.getOptionModel( getMasterLanguage() );
pOptionFactory.create( "wasauchimmer" ); 

Die OptionFactory scheint mir zwar ein guter Startpunkt, jedoch fehlt hier der letzte Stein...

Vielen Dank,
Phillip.

0 Kudos
3 Replies
StefanSchulz
I'm new here

Hallo Phillip,

über den Default-Wert zu gehen ist eine sehr fragile Variante (muss ja keiner definiert sein). Der aktuell bevorzugte Weg wäre, die Factory direkt über das GomFormElement zu holen:

pOptionFactory = ((OptionFactoryProvider) pGomFormField).getOptionFactory();

Wenn ich das aber richtig verstehe, geht es dir nicht um die Erzeugung von Options-Werten, sondern um die Festlegung der Wertemenge für die Checkbox. Und diese erfolgt bereits über die Formulardefinition. Hier bewegen wir uns leider in einem Nicht-API-Bereich, denn die Werte müssten in das GomFormElement der Checkbox injiziert werden, die entsprechenden Objektklassen sind alle nicht-öffentlich.

Der API-fähige Weg wäre hier wohl, das XML der Formulardefinition im Skript zu erzeugen und die ShowFormDialogOperation unter Zuhilfenahme des FormsAgent zu verwenden.

Beste Grüße

Stefan

Hi Stefan,

Danke, das hatte ich befürchtet... Aber wenn es so gemacht werden muss, dann baue ich das per XML zusammen.

Viele Grüße,
Phillip.

0 Kudos

Du kannst auch gerne einen Feature-Wunsch für die dynamische Definition der Wertemenge für Options-basierte Formularkomponenten schreiben. Smiley Happy

Eventuell könnte man auch über einen GomIncludeValueProvider gehen, dem man das Kontext-Element als GOM-Parameter übergeben kann. Ist allerdings dann etwas aufwändiger. Startpunkt zur Information ist hier: http://helios.e-spirit.de:5100/fs5odfs/Vorlagenentwicklung/Formulare/Datenelemente/OPTIONS/PUBLIC/

Gruß

Stefan

0 Kudos