Search the FirstSpirit Knowledge Base
Hallo, ist es möglich alle Texte zu den GUI-Elementen, die sich in einem CMS-Projekt (Seitenvorlagen, Absatzvorlagen, Linkvorlagen, etc) befinden, zu exportieren?
Beispiel:
<CMS_INPUT_TEXT name="st_title" hFill="yes" length="40" singleLine="no" useLanguages="yes">
<LANGINFOS>
<LANGINFO lang="*" label="Title for picture" description="Please enter the picture title."/>
<LANGINFO lang="DE" label="Bildtitel" description="Bitte tragen Sie hier einen Titel ein."/>
</LANGINFOS>
</CMS_INPUT_TEXT>
Hier möchte ich folgende Texte erhalten:
- * = Title for picture
- DE = Bildtitel
Gibt es hier eine Funktion von FirsSpirit oder ist das per Script möglich?
Hallo,
wenn es nur um das Formular-XML geht, könnte man das per Skript lösen, das über die entsprechenden Vorlagen läuft und sich deren XML holt.
Hinweis:
de.espirit.firstspirit.access.store.templatestore.GomSourceProvider#getGomSource()
[Edit]
Ich sehe gerade, dass es nur um die Labels geht und gar nicht um die komplette XML-Definition. In diesem Fall muss man natürlich nicht das XML parsen sondern kommt direkt über die API an die Labels. Mal ein Beispiel für ein entsprechendes Kontextmenüskript (ausführen mit Rechtsklick auf ein Template):
import de.espirit.firstspirit.agency.OperationAgent;
import de.espirit.firstspirit.agency.LanguageAgent;
import de.espirit.firstspirit.ui.operations.RequestOperation;
showInfo(String message){
opAgent=context.requireSpecialist(OperationAgent.TYPE);
reqOp=opAgent.getOperation(RequestOperation.TYPE);
reqOp.setKind(RequestOperation.Kind.INFO);
reqOp.perform(message);
}
e=context.getStoreElement();
langAgent=context.requireSpecialist(LanguageAgent.TYPE);
sb=new StringBuilder();
sb.append("\n\n====== Explizite Namen ======");
for(gomFormElement:e.getGomProvider().forms()){
sb.append("\n+++")
.append(gomFormElement.getName())
.append("+++\n");
for(langinfo:gomFormElement.getLangInfos()){
sb.append(langinfo.getLang())
.append(":")
.append(langinfo.getLabel())
.append("\n");
}
}
sb.append("\n\n====== Alle Sprachen (inkl. Fallback-Namen) ======");
for(gomFormElement:e.getGomProvider().forms()){
sb.append("\n\n---")
.append(gomFormElement.getName())
.append("---\n");
for(lang:langAgent.getLanguages()){
sb.append(lang.abbreviation)
.append(":")
.append(gomFormElement.label(lang.abbreviation))
.append("\n");
}
}
showInfo(sb.toString());
Hier kann man natürlich dann eine Iteration über die diversen Templates drum herum bauen und das Ganze beliebig weiterverarbeiten.
Wichtig ist der Unterschied, ob man an den explizit definierten Labels oder an allen Labels interessiert ist (also inkl. des Fallbacks):
GomFormElement#label(String langAbbreviation)
vs.
GomLangInfos#get(String langAbbreviation)
Hallo,
wenn es nur um das Formular-XML geht, könnte man das per Skript lösen, das über die entsprechenden Vorlagen läuft und sich deren XML holt.
Hinweis:
de.espirit.firstspirit.access.store.templatestore.GomSourceProvider#getGomSource()
[Edit]
Ich sehe gerade, dass es nur um die Labels geht und gar nicht um die komplette XML-Definition. In diesem Fall muss man natürlich nicht das XML parsen sondern kommt direkt über die API an die Labels. Mal ein Beispiel für ein entsprechendes Kontextmenüskript (ausführen mit Rechtsklick auf ein Template):
import de.espirit.firstspirit.agency.OperationAgent;
import de.espirit.firstspirit.agency.LanguageAgent;
import de.espirit.firstspirit.ui.operations.RequestOperation;
showInfo(String message){
opAgent=context.requireSpecialist(OperationAgent.TYPE);
reqOp=opAgent.getOperation(RequestOperation.TYPE);
reqOp.setKind(RequestOperation.Kind.INFO);
reqOp.perform(message);
}
e=context.getStoreElement();
langAgent=context.requireSpecialist(LanguageAgent.TYPE);
sb=new StringBuilder();
sb.append("\n\n====== Explizite Namen ======");
for(gomFormElement:e.getGomProvider().forms()){
sb.append("\n+++")
.append(gomFormElement.getName())
.append("+++\n");
for(langinfo:gomFormElement.getLangInfos()){
sb.append(langinfo.getLang())
.append(":")
.append(langinfo.getLabel())
.append("\n");
}
}
sb.append("\n\n====== Alle Sprachen (inkl. Fallback-Namen) ======");
for(gomFormElement:e.getGomProvider().forms()){
sb.append("\n\n---")
.append(gomFormElement.getName())
.append("---\n");
for(lang:langAgent.getLanguages()){
sb.append(lang.abbreviation)
.append(":")
.append(gomFormElement.label(lang.abbreviation))
.append("\n");
}
}
showInfo(sb.toString());
Hier kann man natürlich dann eine Iteration über die diversen Templates drum herum bauen und das Ganze beliebig weiterverarbeiten.
Wichtig ist der Unterschied, ob man an den explizit definierten Labels oder an allen Labels interessiert ist (also inkl. des Fallbacks):
GomFormElement#label(String langAbbreviation)
vs.
GomLangInfos#get(String langAbbreviation)
Hallo Yvonne,
hat dir Michaels Antwort geholfen und kann deine Frage damit als beantwortet markiert werden?
Grüße
Jan
Ja, die Antwort hat mir erstmal geholfen. Vielen Dank!