Search the FirstSpirit Knowledge Base
Hallo Community,
wir nutzen derzeit das Corporate Content Modul von FirstSpirit 5 um Inhalte von einem "globalen" Projekt in diverse "Länder" Projekte per Paket zu verteilen. In den Zielprojekten kommen die Inhalte auch an, entfernt man allerdings aus dem Paket zu einem späteren Zeitpunkt beispielsweise einen Absatz auf einer Seite oder eine Datei in der Medienverwaltung, bleibt der Absatz bzw. die Datei im Zielprojekt dennoch erhalten.
Gibt es eine Lösung bzw. einen Weg, damit auch beim Abonnent der Inhalt automatisch entfernt wird?
Danke vorab und Grüße,
Marko
Laut Helpdesk ist das ein gewünschtes Verhalten:
Es handelt sich im CorpoarateContent-Umfeld um das erwartete Verhalten. Wenn man etwas im Quellprojekt löscht, so wird nach einem anschließenden Ausrollen des Abonnements im Zielprojekt lediglich die Paketbeziehung entfernt (unbind), der Knoten aber nicht gelöscht.
Mögliche Lösung:
Man könnte einen Workflow im Paket definieren, der nach dem Ausrollen des Pakets im Zielprojekt gestartet wird und prüft, für welche Knoten die Paketbeziehung entfernt wurde. Diese müssten dann mit Hilfe eines Skript gelöscht werden. Leider kann ich mit einem entsprechenden Skript nicht dienen. Aber ich weiß, dass einige unserer Kunden das Problem auf diese Art und Weise lösen konnten.
Hallo, ich will gerade genau das tun, komme aber irgendwie nicht weiter. Mit den Methoden von de.espirit.firstspirit.access.store.PackagePoolItem habe ich es versucht, aber ich kann im Zielprojekt nicht unterscheiden, ob ein Element von einem Paket abgekoppelt wurde oder ob es lokal erstellt wurde (und nicht gelöscht werden darf). Die Methode isSubscribedItem() liefert mir in beiden Fällen false zurück, getChangeState() in beiden Fällen -1.
Wie kann ich aus einer Page oderSection heraus lesen, ob sie von einem Paket getrennt wurde? Und gibt es dann auch eine Unterscheidung, ob das Element im Master gelöscht wurde oder im Zielprojekt nur vom Abonnement abgekoppelt wurde (und dort weiter leben soll)?
Ein Beispielskript wäre klasse. Vielen Dank!
Grüße
Matthias
Hallo nochmal,
um mir jetzt selbst zu antworten: es geht offenbar nicht über ein Client-Script, da bereits abgekoppelte Paketinhalte nicht von lokalen Inhalten im Zielprojekt zu unterscheiden sind. Vielmehr man muss bei der Subscription einen Workflow definieren, der ein Script in diesem Context startet. Dann geht alles über die Klasse de.espirit.firstspirit.access.packagepool.ImportInfo. Dort kann man über ImportInfo.getRemovedNodeCount() iterieren und sich mit ImportInfo.getRemovedNode(i) jeden einzelnen Knoten holen. Was man dann damit macht, bleibt jedem selbst überlassen.
Allerdings hat auch diese Methode ihre Schwächen, denn es werden nicht nur die im Master gelöschten Elemente erfasst, sondern alle, die aus dem Paket bzw. der Subscription genommen wurden. Das bedeutet, es kann hier auch zu ungewollten Löschungen von Seiten kommen, die eigentlich nur aus dem Paket genommen wurden, um sie nicht mehr zu aktualisieren. Dafür habe ich noch keine vernünftige Lösung gefunden. Vermutlich muss man die Seite dann im Master finden und prüfen, ob sie dort noch existiert... das wird mühsam!
Viele Grüße
Matthias