Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich bastel gerade an einer Art Dokumentations-Tool, mit dem sich automatisch per client-seitigem Kontextmenü-Skript-Aufruf eine technische PDF-Dokumentation für eine Vorlage generieren lässt.
Das Script liest die Metadaten und die verwendeten Formularkomponenten der Vorlage aus, auf dem das Script ausgeführt wurde und legt dazu in der Inhalte-Verwaltung ein entsprechend vorausgefülltes Dokumentations-Formular an.
Zusätzlich dazu wollte ich jetzt noch versuchen die Abhängigkeiten der verwendeten Formular-Komponenten der Vorlage zu anderen Vorlagen zu ermitteln. Also zum Beispiel: Die Vorlage (auf der das Script ausgeführt wird) besitzt eine Formular-Komponente vom Typ FS_LIST. In dieser dieser FS_LIST werden Absätze verwaltet. Ziel ist es nun herauszufinden, welche Absatzvorlagen in der FS_LIST zulässig sind. Das Ergebnis wäre quasi das gleiche, wie wenn man "Extras" -> "Abhängigkeiten anzeigen" auf der Vorlage aufrufen würde
Die verwendeten Formular-Komponenten erhalte ich im Script über: template.getGomProvider().forms()
Aus den daraus resultierenden GomFormElements sehe ich allerdings über die öffentliche API keine weiteren Möglichkeiten, wie ich an die spezifischen Eigenschaften (und damit vermutlich auch an die gesuchten Abhängigkeiten) der konkreten GomFormElemente gelange.
Eine Möglichkeit, die mir noch einfällt aber ziemlich fricklig ist: per template.getGomSource() den kompletten Text des Formulars auszulesen und diesen nach den entsprechenden Textstellen zu durchsuchen.
Fällt jemanden noch eine weitere Möglichkeit ein, wie man dieses Problem schöner lösen könnte?
Gruß Rico
Hallo Rico,
du kannst den gleichen Mechanismus nutzen, welcher über "Abhängigkeiten anzeigen" auch genutzt wird.
Du kannst auf dem StoreElement die ausgehenden Referenzen holen:
references = storeElement.getOutgoingReferences();
Anschließend kannst du über die Referenzen iterieren, das jeweils referenzierte Element holen und prüfen ob der UidType einer Vorlage entspricht:
referencedTemplates = new ArrayList();
for(ReferenceEntry reference:references){
type = reference.getReferencedElement().getUidType()
if(type == UidType.TEMPLATESTORE || type == UidType.TEMPLATESTORE_FORMATTEMPLATE ||
type == UidType.TEMPLATESTORE_LINKTEMPLATE || type == UidType.TEMPLATESTORE_SCHEMA ||
type == UidType.TEMPLATESTORE_STYLETEMPLATE || type == UidType.TEMPLATESTORE_TABLEFORMATTEMPLATE) {
referencedTemplates.add(reference.getReferencedElement());
}
}
Viele Grüße
Rouven
Hallo Rico,
du kannst den gleichen Mechanismus nutzen, welcher über "Abhängigkeiten anzeigen" auch genutzt wird.
Du kannst auf dem StoreElement die ausgehenden Referenzen holen:
references = storeElement.getOutgoingReferences();
Anschließend kannst du über die Referenzen iterieren, das jeweils referenzierte Element holen und prüfen ob der UidType einer Vorlage entspricht:
referencedTemplates = new ArrayList();
for(ReferenceEntry reference:references){
type = reference.getReferencedElement().getUidType()
if(type == UidType.TEMPLATESTORE || type == UidType.TEMPLATESTORE_FORMATTEMPLATE ||
type == UidType.TEMPLATESTORE_LINKTEMPLATE || type == UidType.TEMPLATESTORE_SCHEMA ||
type == UidType.TEMPLATESTORE_STYLETEMPLATE || type == UidType.TEMPLATESTORE_TABLEFORMATTEMPLATE) {
referencedTemplates.add(reference.getReferencedElement());
}
}
Viele Grüße
Rouven
Hey Rouven,
diese Möglichkeit habe ich glatt überlesen in der API
Die Lösung gefällt mir, vielen Dank für deine Hilfe!
Gruß Rico