Search the FirstSpirit Knowledge Base
Hallo,
ich möchte in einem Script folgende FS_Referenz erzeugen:
<FS_REFERENCE name="st_dok_tmp" allowEmpty="yes" hFill="yes" upload="yes" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="neues Regelungsdokument" description="Suchen Sie das Regelungsdokument"/>
</LANGINFOS>
<PROJECTS>
<LOCAL name="." uploadFolder="0_upload">
<SOURCES>
<FOLDER name="empty" store="mediastore"/>
</SOURCES>
</LOCAL>
</PROJECTS>
</FS_REFERENCE>
folgendes habe ich bereits "geschafft":
Script sc = context.getScript();
GomEditorProvider gp = sc.getGomProvider();
GomReference gomReference = new GomReference();
d = ValueOfContractor.Invoke.valueOf(Designator.class, "st_tmp_file");
gomReference.setName(d);
gomReference.setAllowEmpty(YesNo.NO);
gomReference.setUpload(YesNo.YES);
gomReference.setLabel("neues Regelungsdokument:");
gp.add(gomReference);
Allerdings:
- kann ich noch eine bestehende Seite auswählen (soll/darf nicht sein)
- muss der Speicher-Ordner noch ausgewählt werden (soll/darf nicht sein)
- gomReference.setLabel(..) ist deprecated - wie kann es richtig gesetzt werden
Wer kann mir helfen?
Der Grund wurde in
Arbeitsablauf mit unterschiedlichen Datenmasken
beschrieben.
Grüße
Andreas
setLabel ....Deprecated since 4.0.17 - use getLangInfos().get(String).setLabel(String) instead
Since:
4.0.17
-----------------
vielleicht hilft folgendes weiter:
GomReference#filter#allow / #hide
GomReference#projectConstraints#setUploadFolder
das sind allerdings non-API-Methoden und koennen sich auch mal ändern, allerdings ist dieses unwahrscheinlich
getLangInfos() ist null. Ich vermute mal, dass ich vorher überhaupt erst mal ne Sprache setzen muss.
Da hab ich
gomText.getLangInfos().add(GomLangInfo); gefunden.
Da hab ich allerdings das Problem mit der Sprachesetzen (.setLang(LanguageAbbreviation.valueOf("*")), dass will er nicht tun).
Das mit den Filtern hat zwar geklappt, aber ich möchte eigentlich, dass mir nur der Ordner "empty" angezeigt wird.
Das mit dem Upload-VZ hat auch nicht wirklich geholfen
final GomReference form = new GomReference();
form.setName(Designator.valueOf("fs_reference"));
form.setUpload(YesNo.YES);
final DefaultGomLangInfos langInfos = form.getLangInfos();
langInfos.add(new DefaultGomLangInfo("*", "any label", "any description"));
form.filter().add(new GomFilterAllowEntry(FilterType.PICTURE));
form.filter().add(new GomFilterAllowEntry(FilterType.FILE));
// dot means local project else this is the symbolic remote project name
final ProjectConstraint with = ProjectConstraint.with(Type.LOCAL, ".", "myUploadFolder", Collections.singletonMap(Store.Type.MEDIASTORE.name(), Collections.singletonList("empty")));
form.projectConstraints().add(with);
> Das mit den Filtern hat zwar geklappt, aber ich möchte eigentlich, dass mir nur der Ordner "empty" angezeigt wird.
De Filter allow/hide defnieren, welche Typen angezeigt und selektierbar sind oder ebend nicht angezeigt werden. Die eigentlichen Quellen werden ueber die ProjectConstraint definiert
>> das sind allerdings non-API-Methoden und koennen sich auch mal ändern, allerdings ist dieses unwahrscheinlich
Das
form.setName(Designator.valueOf("fs_reference"));
funktioniert nicht. Da kommt eine:
de.espirit.firstspirit.access.script.ExecutionException: Method Invocation Designator.valueOf
Dafür funktioniert:
form.setName(ValueOfContractor.Invoke.valueOf(Designator.class, "fs_reference"));
Der Label wird nun gesetzt => DANKE!
Allerdings der UploadOrdner funktioniert nicht. Ich habe den Eindruck, dass der ProjectConstraint nicht richtig gespeichert wird:
...
form.projectConstraints().add(with);
Iterator it = form.projectConstraints().iterator();
while(it.hasNext()) {
ProjectConstraint pc = (ProjectConstraint) it.next();
context.logInfo("\tName: " + pc.getName());
context.logInfo("\tUF: " + pc.getUploadFolder());
}
...
liefert
Name: .
UF: null
Das with scheint aber richtig gesetzt zu sein:
...
context.logInfo("\tName: " + with.getName());
context.logInfo("\tUF: " + with.getUploadFolder());
...
Name: .
UF: 0_upload
>> das sind allerdings non-API-Methoden und koennen sich auch mal ändern, allerdings ist dieses unwahrscheinlich
Das ist mir bewußt, aber das Risiko werde ich eingehen.
Grüße
Andreas
hat form.projectConstraints() jetzt size == 2 ?
dann muss man vermutl. den schon bestehenden Type.LOCAL aus den ProjectConstraints entfernen und mit dem neuen "with" ersetzten bzw. form.projectConstraints().add(0, with);
oder ueber form.getProjects() gehen
hat form.projectConstraints() jetzt size == 2 ?
leider nein.
dann muss man vermutl. den schon bestehenden Type.LOCAL aus den ProjectConstraints entfernen und mit dem neuen "with" ersetzten bzw. form.projectConstraints().add(0, with);
das mit add(0,with) hatte nichts gebracht. Auch ein form.projectConstraints().remove(0) und dann ein add(with) nicht
oder ueber form.getProjects() gehen
werd ich mal versuchen
Über form.getProjects() allein hat auch nicht geklappt.
Aber es funktioniert, wenn gleichzeitig über form.projectConstraints() und form.getProjects() die Werte gesetzt werden.
Hier mal der Code, der nun das gewünschte Ergebnis liefert.
final GomReference form = new GomReference();
form.setName(ValueOfContractor.Invoke.valueOf(Designator.class, "fs_reference"));
form.setUpload(YesNo.YES);
form.projectConstraints().remove(0);
DefaultGomLangInfos langFsRef = form.getLangInfos();
langFsRef.add(new DefaultGomLangInfo("*", "Neue Regelungsdatei", "Wählen Sie aus dem Filesystem die neue Datei aus."));
form.filter().add(new GomFilterHideEntry(FilterType.ALL));
final ProjectConstraint with = ProjectConstraint.with(Type.LOCAL, ".", "0_upload", Collections.singletonMap(Store.Type.MEDIASTORE.name(), Collections.singletonList("empty")));
form.projectConstraints().add(0, with);
GomStorableProjectList gspl = form.getProjects();
context.logInfo("Anzahl: " + gspl.size());
GomStorableLocalProjectEntry gslpe = (GomStorableLocalProjectEntry) gspl.get(0);
gslpe.setUploadFolder("0_upload");
GomStoreFolder gsf = new GomStoreFolder();
gsf.setName("empty");
gsf.setStore(Store.Type.MEDIASTORE.name());
gslpe.getSources().add(gsf);
Besten Dank für die Hilfestellungen
Grüße
Andreas