ampersand83
I'm new here

Freigeben abhängiger Objekte bei Datenquellen

Jump to solution

Hallo zusammen,

wir haben in einem Projekt einen Freigabe Workflow, der über ein Skript eine Seite in der Struktur und deren Abhängige Objekte freigibt.

In der entsprechenden Inhaltsseite wird neben verschiedenen Medien auch ein Datensatz aus einer Datenquelle referenziert. Die Inhaltsseite und nicht freigegebene Medien werden durch Ausführung dieses Workflows automatisch mit freigegeben. Der Datensatz hingegen nicht. Dies klappt aber auch nicht, wenn ich die Seite über Extras->Freigabe->Abhängige Objekte Freigeben freigebe.

Ist das ein Bug oder ist das bewusst so gemacht?

0 Kudos
1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

Hallo Stefan,

Datensätze werden hier nicht einbezogen, siehe Kapitel 6.2.8 in der Doku:

"Weitere Fälle, in denen abhängige Objekte zwar im Referenzgraphen angezeigt werden, aber bei der abhängigen Freigabe nicht mit freigegeben werden.

...

  • SeiteDatensatz: Seite mit der CONTENTLIST/FS_LIST/... -Komponente, in der Datensätze referenziert werden.
    CS-Objekt wird nicht mit freigegeben."

D.h. Du musst hier über eine entsprechende Implementierung den Datensatz gesondert freigeben.

Viele Grüße

Michael

View solution in original post

0 Kudos
5 Replies
ampersand83
I'm new here

Achso, das hatte ich eben vergessen. Die Freigabe über das Skript erfolgt mit dem DependentType IDProvider.DependentReleaseType.DEPENDENT_RELEASE_NEW_AND_CHANGED.

Wenn das bewusst so gemacht ist, wie kann ich am einfachsten den in der Seite referenzierten Datensatz freigeben? Muss ich mir diesen im Skript noch explizit holen und dann zusätzlich freigeben?

0 Kudos

Weiß hier wirklich niemand was zu zu sagen? Ist dies eine so ungewöhnliche Anforderung?

0 Kudos
mbergmann
Crownpeak employee

Hallo Stefan,

Datensätze werden hier nicht einbezogen, siehe Kapitel 6.2.8 in der Doku:

"Weitere Fälle, in denen abhängige Objekte zwar im Referenzgraphen angezeigt werden, aber bei der abhängigen Freigabe nicht mit freigegeben werden.

...

  • SeiteDatensatz: Seite mit der CONTENTLIST/FS_LIST/... -Komponente, in der Datensätze referenziert werden.
    CS-Objekt wird nicht mit freigegeben."

D.h. Du musst hier über eine entsprechende Implementierung den Datensatz gesondert freigeben.

Viele Grüße

Michael

0 Kudos

Ich weiß es nicht ob das dir Helfen kann, ich habe eine Funktion geschriben...

  static public void releaseEntityRelations(Entity entity, UserService us) {

    //release all Outgoing reference

    ContentStoreRoot cs = (ContentStoreRoot) us.getStore(Store.Type.CONTENTSTORE, false);

    Map<String, String> typemap = new HashMap<String, String>();

    typemap.put("users", "ds_ext_users");

    typemap.put("media", "content_ext_media");

    typemap.put("downloads", "content_ext_downloads");

    typemap.put("publications", "content_ext_publications");

    EntityType entityType = entity.getEntityType();

    if (typemap.get(entityType.toString()) != null) {

      Content2 content = cs.getContent2ByName(typemap.get(entityType.toString()));

      Logging.logInfo(entityType.toString(), LOGGER);

      Schema schema = content.getTemplate().getSchema();

      ReferenceEntry[] allInReference = schema.getOutgoingReferences(entity);

      for (ReferenceEntry reference : allInReference) {

        try {

          Object element = reference.getReferencedObject();

          if (!(element instanceof Entity)) {

            if (((IDProvider) element).isReleaseSupported()) {

              ((IDProvider) element).setLock(true, false);

              ((IDProvider) element).release(false);

              ((IDProvider) element).setLock(false, false);

              if (element instanceof Media) {

                PageUtils.releaseParents((IDProvider) element);

              }

            }

          }

        } catch (Exception e) {

          e.printStackTrace();

        }

      }

    }

  }

0 Kudos

Hey, vielen Dank für die Antworten,

ich werde es mal mit einer eigenen Implementierung versuchen. Ich denke Antonios Lösung mit der Funktion könnte hilfreich sein.

0 Kudos