Search the FirstSpirit Knowledge Base
Hallo zusammen,
Es ist möglich die Knotenliste eines änderbaren Pakets über die API zu manipulieren.
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
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
Grüße
Matthias
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
Viele Grüße,
Ibrahim
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
Grüße
Matthias