Questions & Answers

SOLVED
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

Type a product name