Ich habe nun selbst eine Lösung gefunden, aber wirklich befriedigend ist es nicht, weil ich es als kompliziert ansehe, das es keine direkte Möglichkeit gibt, sich die Informationen zu holen.
Die elementId ist das erste Element aus dem FS_CATALOG Feld, welches ich an den FS_BUTTON als Parameter übergebe.
// Gibt die Ebenentiefe der aktuellen Sektion zurück
getSectionDepth(section, elementId, depth) {
FormData formData = depth == 1 ? section.getFormData() : section.getItem();
String sectionName = formData.get(language, "st_headline").get();
SectionTemplateImpl sectionTemplate = section.getTemplate();
sectionDepth = null;
if(sectionTemplate.getUid().equals("contentarea")) {
CatalogImpl elements = formData.get(language, "st_elements").get();
if(elements.size() > 0) {
breakforloop;
for(el : elements) {
// Element gefunden?
if(elementId.equals(el.getId())) {
sectionDepth = depth;
return sectionDepth;
} else { // Ansonsten in der Ebene tiefer suchen...
sectionDepth = getSectionDepth(el, elementId, depth + 1);
if(sectionDepth != null) {
break breakforloop;
}
}
}
}
}
return sectionDepth;
}
int sectionDepth = 1;
int sectionId = element.getId();
// Absatz laden und Ebenentiefe bestimmen
QueryAgent queryAgent = context.requireSpecialist(QueryAgent.TYPE);
Iterable<IDProvider> iterable = queryAgent.answer("fs.id=" + sectionId);
Iterator<IDProvider> iterator = iterable.iterator();
if(iterator.hasNext()) {
IDProvider idProvider = iterator.next();
FormData formData = idProvider.getFormData();
// Sektion gefunden?
if(idProvider != null) {
sectionDepth = getSectionDepth(idProvider, elementId, sectionDepth);
}
}
// message.append("\nEbenentiefe: " + sectionDepth);