fidelbravo
I'm new here

CorporateContent - Abonnement manipulieren

Jump to solution

Hallo zusammen,

Es ist möglich die Knotenliste eines änderbaren Pakets über die API zu manipulieren.

paket_knotenliste.png

  Ich habe folgendes ausprobiert leider ohne Erfolg.

//!Beanshell

import de.espirit.firstspirit.access.packagepool.PackageManager;

import de.espirit.firstspirit.access.packagepool.Package;

import de.espirit.firstspirit.access.packagepool.Subscription;

import de.espirit.firstspirit.access.store.IDProvider;

import de.espirit.firstspirit.access.packagepool.Package;

import java.util.Collection;

import de.espirit.firstspirit.access.store.StoreElement;

StoreElement element =  (StoreElement) context.getElement();

if(element.isSubscribedItem() && element.isChangeable()){

   Package pack = element.getPackage();

   PackageManager pm = (PackageManager) context.getConnection().getService(PackageManager.SERVICE_NAME);

   Collection col = pm.getSubscriptions(pack);

   if(col.size()>0){

    Subscription sub = col.iterator().next();

    sub.includeNode((IDProvider) element);

    sub.save();

    sub.refresh();

   }

}

Der Geltungsbereich des Skripts ist Kontextmenü.

Hat jemand eine Idee warum es nicht funktioniert?

Danke & Grüße,

Fidel

0 Kudos
1 Solution

Accepted Solutions

Hallo Ibrahim, hallo Fidel,

das funktioniert, ich habe es ausprobiert. Da muss man aber schon sehr genau in der Doku lesen, um das zu verstehen. Wobei es natürlich logisch ist, dass man nicht das lokale Element sondern das aus dem Master exkludieren bzw. inkludieren muss. Danke auf jeden Fall, ich kann das auch grad gebrauchen Smiley Wink

Grüße

Matthias

View solution in original post

0 Kudos
2 Replies
iakyuez
I'm new here

Hallo Fidel,

so wie ich das sehe übergibst du das falsche Element. Laut Doku muss es sich dabei um das IDProvider-Objekt aus dem Paket-Master handeln.

An diesen kommst du z.B. wie folgt ran:

...

IdTranslator idTranslator = sub.getElementIdTranslator();

Long idFromPublisher = idTranslator.translateIdToPublisher(element.getId());

IDProvider idProviderFromPublisher = element.getPackage().getPublisher().getUserService().getStore(Store.Type.SITESTORE, false).getStoreElement(idFromPublisher);

sub.includeNode(idProviderFromPublisher);

...

Dabei muss natürlich der korrekte Store.Type gewählt werden.

Ich hoffe das hilft dir weiter Smiley Happy

Viele Grüße,
Ibrahim

0 Kudos

Hallo Ibrahim, hallo Fidel,

das funktioniert, ich habe es ausprobiert. Da muss man aber schon sehr genau in der Doku lesen, um das zu verstehen. Wobei es natürlich logisch ist, dass man nicht das lokale Element sondern das aus dem Master exkludieren bzw. inkludieren muss. Danke auf jeden Fall, ich kann das auch grad gebrauchen Smiley Wink

Grüße

Matthias

0 Kudos