julia
I'm new here

Wie löscht man eine Absatzvorlage mit Inhalten

Hallo Zusammen,

wie kann man in einem Zug eine Absatzvorlage mit den Inhalten löschen. Derzeit muss man erst die Inhalte und dann die Absatzvorlage löschen.

Gruß Julia

0 Kudos
4 Replies
pavone
I'm new here

Hallo Julia,

das wird vermutlich nur über ein Skript oder einen Arbeitsablauf möglich sein. Folgendes Skript liefert die grundlegende Funktionalität, die du benötigst. Es behandelt aber womöglich nicht jeden denkbaren Fehlerfall. Das Skript kann auf einer Absatzvorlage ausgeführt werden und löscht erst alle Absätze, die auf dieser Vorlage basieren, und anschließend die Vorlage selbst:

import de.espirit.firstspirit.access.store.templatestore.SectionTemplate;

import de.espirit.firstspirit.access.ReferenceEntry;

import de.espirit.firstspirit.access.store.pagestore.Section;

sectionTemplate = context.getStoreElement();

if (sectionTemplate instanceof SectionTemplate) {

     references = sectionTemplate.getIncomingReferences();

     for (refEntry : references) {

          if (refEntry.getType() == ReferenceEntry.PAGE_STORE_REFERENCE) {

               refElement = refEntry.getReferencedElement();

               if (refElement instanceof Section) {

                    refElement.setLock(true);

                    refElement.delete();

                    refElement.setLock(false);

               }

          }

     }

     sectionTemplate.setLock(true);

     sectionTemplate.delete();

     sectionTemplate.setLock(false);

}

Damit das Skript nur im Kontextmenü von Absatzvorlagen sichtbar ist, sollte unter dem Reiter "Eigenschaften" des Skriptes

  1. als Skripttyp "Kontextmenü" ausgewählt werden,
  2. folgende Einblendelogik verwendet werden:

import de.espirit.firstspirit.access.store.templatestore.SectionTemplate;

return (context.getStoreElement() instanceof SectionTemplate);

Ich hoffe ich konnte dir damit helfen!

Viele Grüße

Tim

0 Kudos
mbergmann
Crownpeak employee

Hallo,

ein paar Hinweise die mir dazu spontan einfallen (nicht abschließend):

1. Hier muss unbedingt auch der Freigabestand beachtet werden! Wenn die Absätze nur aus den Seiten gelöscht werden ohne dass diese neu freigegeben werden, sind die Seiten im Freigabestand noch MIT den entsprechenden Absätzen vorhanden. Wenn aber das Absatztemplate wie im Script direkt gelöscht wird, wird es bei der nächsten Generierung wahrscheinlich Fehler hageln.

2. Das Template müsste auch noch an anderen Stellen ausgetragen werden, z.B. bei FS_LISTs in denen diese Vorlage erlaubt ist.

Viele Grüße

Michael

0 Kudos

Hallo,

das Script soll ja nur grundlegend den Weg zeigen, aber denoch sollte auf einige dinge geachtet werden:

if (refElement instanceof Section) {

  refElement.setLock(true);

  refElement.delete();

  refElement.setLock(false);

}

Hier sollte man besser die Page rekursiv locken. dann den absatz löschen und dann die Seite wieder entsperren. Das ganze sollte aber in einem try-catch-finally passieren!!!

BTW: Absatzreferenzen müsste man auch noch berücksichtigen!

Viele Grüße

Tobias

0 Kudos
pavone
I'm new here

Hallo Julia,

benötigst du noch weitere Hilfe oder haben dir die Antworten von Michael, Tobias und mir bereits geholfen?

In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere Community-Teilnehmer diese auf den ersten Blick finden. Solltest du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es nett, wenn du diese hier bereitstellst.

Viele Grüße

Tim

0 Kudos