rbaerisc
I'm new here

Abhängigkeiten von Formular-Komponenten zu anderen Vorlagen auslesen

Jump to solution

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

0 Kudos
1 Solution

Accepted Solutions
broszeit
I'm new here

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

View solution in original post

0 Kudos
2 Replies
broszeit
I'm new here

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

0 Kudos

Hey Rouven,

diese Möglichkeit habe ich glatt überlesen in der API Smiley Happy

Die Lösung gefällt mir, vielen Dank für deine Hilfe!

Gruß Rico

0 Kudos