aVogt
Returning Creator

Formular nach Aufruf FS_Button anzeigen

Jump to solution

Hallo,

ich wollte nach Klick auf einen FS_Button ein Script aufrufen. Das Script sollte ein Formular anzeigen, in dem ein paar Schalter gesetzt und eine CVS Datei angegeben (hochladen) werden kann. Dann sollte die Date ausgelesen, verarbeitet und an der Seite wo der Button integriert ist bestimmte Felder (30 Text Felder)  befüllen.

Das funktioniert leider nicht, da kein Formular angezeigt werden kann. (showForm fehlt).

Hat jemand eine Idee, wie es sonst umsetzen kann?

Per Script Aufruf (Extras -> Script ausführen) geht es, ist aber nicht so "schön".

Grüße

Andreas

0 Kudos
1 Solution

Accepted Solutions

Guten Morgen Andreas,

"Den obigen Weg finde ich zu umständlich."

Deshalb die Alternative, dass du das Formular im Skript lässt und statt die Formdefinition in den Code zu schreiben holst du dir lieber das Skript und daraus die Formdefinition.

Habs jetzt einfach mal runtergeschrieben aber nicht getestet. So musst du aber nicht an den Code ran, wenn du etwas am Formular änderst.

import de.espirit.firstspirit.access.editor.EditorValue; 

import de.espirit.firstspirit.agency.StoreElementAgent; 

import de.espirit.firstspirit.agency.OperationAgent; 

import de.espirit.firstspirit.forms.FormData; 

import de.espirit.firstspirit.ui.operations.ShowFormDialogOperation; 

import de.espirit.firstspirit.access.store.templatestore.Script;

import de.espirit.firstspirit.access.store.IDProvider;

   

import java.util.Collections; 

   

final StoreElementAgent storeElementAgent = context.requireSpecialist(StoreElementAgent.TYPE); 

final Script myscript = (Script) storeElementAgent.loadStoreElement("sc_meinscript", IDProvider.UidType.TEMPLATESTORE, false);

   

// GGf. musst du hier auch die FormDefinition holen und dann über den FormAgent wieder eine FormData erzeugen.

final FormData myformdata = myscript.getFormDefaults(); 

   

final OperationAgent opAg = context.requireSpecialist(OperationAgent.TYPE); 

final ShowFormDialogOperation sfdo = opAg.getOperation(ShowFormDialogOperation.TYPE); 

   

sfdo.setTitle("Eingabetest"); 

sfdo.setOkText("Jetzt speichern"); 

sfdo.setModified(false); 

sfdo.setDisabled(false); 

sfdo.setMultiLanguage(false); 

sfdo.setFormData(myformdata); 

   

sfdo.perform(myform, Collections.singletonList(EditorValue.SOLE_LANGUAGE)); 

View solution in original post

0 Kudos
5 Replies
hoebbel
Crownpeak employee

Hallo Andreas,

vielleicht hilft Dir dieses Beispiel weiter (oder kurz gesagt - nimm die ShowFormDialogOperation Smiley Wink)

import de.espirit.firstspirit.access.editor.EditorValue;

import de.espirit.firstspirit.agency.FormsAgent;

import de.espirit.firstspirit.agency.OperationAgent;

import de.espirit.firstspirit.forms.Form;

import de.espirit.firstspirit.forms.FormData;

import de.espirit.firstspirit.ui.operations.ShowFormDialogOperation;

 

import java.util.Collections;

 

final StringBuilder formDefinition = new StringBuilder();

formDefinition.append("<CMS_MODULE>");

formDefinition.append("<CMS_INPUT_TEXT name=\"testtext\" editable=\"yes\">");

formDefinition.append("<LANGINFOS>");

formDefinition.append("<LANGINFO lang=\"*\" label=\"Test Text\"/>");

formDefinition.append("</LANGINFOS>");

formDefinition.append("</CMS_INPUT_TEXT>");

formDefinition.append("<CMS_INPUT_DOM name=\"testdom\">");

formDefinition.append("<LANGINFOS>");

formDefinition.append("<LANGINFO lang=\"*\" label=\"Test RTF\"/>");

formDefinition.append("</LANGINFOS>");

formDefinition.append("</CMS_INPUT_DOM>");

formDefinition.append("</CMS_MODULE>");

 

final FormsAgent formsagent = context.requireSpecialist(FormsAgent.TYPE);

final Form myform = formsagent.getForm(formDefinition.toString());

final FormData myformdata = myform.createFormData();

 

final OperationAgent opAg = context.requireSpecialist(OperationAgent.TYPE);

final ShowFormDialogOperation sfdo = opAg.getOperation(ShowFormDialogOperation.TYPE);

 

sfdo.setTitle("Eingabetest");

sfdo.setOkText("Jetzt speichern");

sfdo.setModified(false);

sfdo.setDisabled(false);

sfdo.setMultiLanguage(false);

sfdo.setFormData(myformdata);

 

sfdo.perform(myform, Collections.singletonList(EditorValue.SOLE_LANGUAGE));

Viele Grüße

Holger

Vllt. noch als kleine Ergänzung: Um solche Strings zu vermeiden füge ich das Formular in solchen Fällen oft ganz normal zum Script hinzu und hole mir die Formdefinition aus dem Script 🙂

0 Kudos
aVogt
Returning Creator

Guten Morgen,

danke für die Infos. Das Formular habe ich im Script als Formular hinterlegt.

Wie geschrieben, kann es ja über Extras -> Script ausführen einfach angezeigt werden, Die Funktion fehlt, wenn das Script über den FS-Button aufgerufen wird. Schade.

Den obigen Weg finde ich zu umständlich. Werde es wohl den Nutzern zumuten über das Menü zu gehen.

Grüße

Andreas

0 Kudos

Guten Morgen Andreas,

"Den obigen Weg finde ich zu umständlich."

Deshalb die Alternative, dass du das Formular im Skript lässt und statt die Formdefinition in den Code zu schreiben holst du dir lieber das Skript und daraus die Formdefinition.

Habs jetzt einfach mal runtergeschrieben aber nicht getestet. So musst du aber nicht an den Code ran, wenn du etwas am Formular änderst.

import de.espirit.firstspirit.access.editor.EditorValue; 

import de.espirit.firstspirit.agency.StoreElementAgent; 

import de.espirit.firstspirit.agency.OperationAgent; 

import de.espirit.firstspirit.forms.FormData; 

import de.espirit.firstspirit.ui.operations.ShowFormDialogOperation; 

import de.espirit.firstspirit.access.store.templatestore.Script;

import de.espirit.firstspirit.access.store.IDProvider;

   

import java.util.Collections; 

   

final StoreElementAgent storeElementAgent = context.requireSpecialist(StoreElementAgent.TYPE); 

final Script myscript = (Script) storeElementAgent.loadStoreElement("sc_meinscript", IDProvider.UidType.TEMPLATESTORE, false);

   

// GGf. musst du hier auch die FormDefinition holen und dann über den FormAgent wieder eine FormData erzeugen.

final FormData myformdata = myscript.getFormDefaults(); 

   

final OperationAgent opAg = context.requireSpecialist(OperationAgent.TYPE); 

final ShowFormDialogOperation sfdo = opAg.getOperation(ShowFormDialogOperation.TYPE); 

   

sfdo.setTitle("Eingabetest"); 

sfdo.setOkText("Jetzt speichern"); 

sfdo.setModified(false); 

sfdo.setDisabled(false); 

sfdo.setMultiLanguage(false); 

sfdo.setFormData(myformdata); 

   

sfdo.perform(myform, Collections.singletonList(EditorValue.SOLE_LANGUAGE)); 

0 Kudos

Besten Dank. ich probiere mal.

Trotzdem noch mehr Scriptzeilen, als einfach aufrufen 😉

Grüße

Andreas

0 Kudos