Questions & Answers

SOLVED
lobanova
Elite Observer

Section mittels Skript ersetzen

Jump to solution

Hallo FirstSpirit Community,

mittels ein Groovy Skript mรถchte ich Sections von einer bestimmten Vorlage mit neu angelegten von einer anderen Vorlage in Page Bodys ersetzen:

Template oldTmpl = ...

Template newTmpl = ...

Section oldSection = ... // ermittelt via oldTmpl.getIncomingReferences()

Body body = oldSection.getParent()

Page page = body.getParent()

try {

     page.setLock(true, true)

     Section newSection = body.createSection("name", newTmpl)

     body.removeChild(newSection)

     body.replaceChild(oldSection, newSection)

     page.save("removed section", true)

     page.release(true)

}

finally {

     page.setLock(false, true)

}

page.refresh()

Nach dem Ausfรผhren des Skriptes stelle ich aber fest, dass obwohl die alte Section ersetzt ist (sie erscheint nicht mehr unter Page Body), "hรคngt" sie immer noch an der Seite, da wenn ich die Usages der alten Template im FS SiteArchitect via Ctrl+U aufrufe, erscheint die alte Section in der Auflistung, und ein Help Skript bestรคtigt auch, dass sie die Page immer noch als Parent hat:

storeAgent = context.requireSpecialist(StoreAgent.TYPE)

pageStore = storeAgent.getStore(Store.Type.PAGESTORE, false)

long id = ... // ID der alten Section

section = pageStore.getStoreElement(id)

println section.getParent().getParent() // hier kommt die Seite, wo eigentlich diese Section ersetzt wurde

Habe ich was vergessen in meinem Skript? Soll ich explizit fรผr die alte Section die Methode delete() aufrufen?

Vielen Dank im voraus.

GruรŸ,

Olga.

0 Kudos
1 Solution

Accepted Solutions

Ein expliziter Aufruf von section.delete() hat das Problem gelรถst.

View solution in original post

0 Kudos
4 Replies
lobanova
Elite Observer

Hallo FS Entwickler,

wie meint ihr, geht es hier um ein FS Bug oder mache ich was in meinem Skript falsch?

Danke.

0 Kudos

Hallo Olga,

ich kรถnnte mir vorstellen, dass removeChild nur die child-node in der XML Reprรคsentation des Bodys lรถscht.

Hast du es denn mit einem expliziten delete() auf der section schon probiert?

Viele GrรผรŸe

Felix

0 Kudos

Hallo Felix.

Ja, expliziter Aufruf von delete() fรผr Section lรถscht diese.

Aber laut FS Backend (fs-server.jar) in AbstractStoreElement.removeChild(StoreElement) sollte das Child-Element schon aus der Liste von Children entfernt werden. Deswegen ist es mir immer noch nicht klar, ob das ein korrektes FS Verhalten beim replace/removeChild() ist, oder nicht?

GruรŸ,

Olga

0 Kudos

Ein expliziter Aufruf von section.delete() hat das Problem gelรถst.

0 Kudos

Type a product name