hbarthel
New Responder

SelectContentOperation

Hallo Gemeinde,

weiß jemand, wie man in einem "ExecutableToolbarItem", also wenn man einen "ToolbarContext" in der Hand hält, an den "OperationAgent" rankommt? Ich will eine "SelectContentOperation" ausführen.

Danke und Gruß

Heiko

0 Kudos
9 Replies
kuepper
Crownpeak employee

Hey Heiko,

wenn du einen Context in der Hand hast steht immer die Funktion requireSpecialist zur Verfügung, über die du dann (je nach Context) verschiedene Agents bekommen kannst. Den OperationAgent bekommst du also so:

OperationAgent operationAgent = context.requireSpecialist(OperationAgent.TYPE);

Die "SelectContentOperation" sagt mir so jetzt aber nichts.... Je nachdem was du machen möchtest, bräuchtest du also vielleicht eine andere Operation (oder gar einen anderen Agent).

Beste Grüße,

Florian

0 Kudos

Hallo Florian,

das Problem ist, dass

toolbarContext.requireSpecialist(OperationAgent.TYPE).getOperation(SelectContentOperation.TYPE);

null liefert.

0 Kudos

wir müssen folgenden Code los werden, der funktioniert, aber Impl benutzt:

new SelectContentOperationImpl(null, false);

0 Kudos
kuepper
Crownpeak employee

Hey Heiko,

für mich sieht es so aus, als wenn die SelectContentOperation kein Teil der offiziellen API ist - Ich finde diese in jedem Fall nicht im JavaDoc (auch wenn du es in der IDE vorgeschlagen bekommst und die Klasse in der isolated-runtime enthalten ist). Daher bitte nicht verwenden, sondern zum Laden von Datensätzen den folgenden Weg gehen:

String content2Uid = "UID des Content2s (Datenquelle)";

StoreElementAgent storeElementAgent = context.requireSpecialist(StoreElementAgent.TYPE);

Content2 content2 = (Content2) storeElementAgent.loadStoreElement(content2Uid, Content2.UID_TYPE, false);

Session session = content2.getSchema().getSession();

Select select = session.createSelect(content2.getEntityType().getName());

//Hier dann verschiedene Constraints setzen zum Filtern der Daten

Equal equal = new Equal("fs_id", 1742);

select.setConstraint(equal);

EntityList entities = session.executeQuery(select);

Beste Grüße,

Florian

0 Kudos

Wir müssen Datensätze vom Redakteur auswählbar machen, also entweder per separatem Dialog wie heute oder halt direkt die übernehmen, die im SiteArchitekt ausgewählt sind. Habt ihr dafür eine Lösung?

0 Kudos
kuepper
Crownpeak employee

Hey Heiko,

ich weiß nicht so recht, was du mit "direkt übernehmen" meinst...

Um Redakteuren die Möglichkeit im Dialog zu geben, Datensätze auszuwählen, könntest du dir ein Formular mit FS_INDEX-Eingabekomponente bauen. Mittels FormsAgent kannst du dann aus der Formulardefinition dir ein Formularobjekt erzeugen. Mittels des OperationAgent holst du dir dann eine ShowFormDialogOperation, welche als Antwort der Perform-Methode das ausgefüllte FormData liefert.

Beim FS_INDEX hast du Index.Record als Datenhaltungsobjekte. Der Identifier von Datensätzen enthält neben Schema und Tabelle auch eine GID, welche du dann wie im vorherigen Post beschrieben nutzen kannst, um die Entities auszulesen (die Spalte müsste "fs_gid" sein).

Hilft dir das weiter?

Beste Grüße,

Florian

0 Kudos

Hallo Florian,

mit "direkt übernehmen" meine ich, ob man die Datensätze, die ein Redakteur im Site Architect markiert hat, aus dem Kontext abfragen kann. Also ohne zusätzlichen Dialog, ohne zusätzlichen Aufwand, ohne zusätzlichen Code.

Gruß

Heiko

0 Kudos
kuepper
Crownpeak employee

Hey Heiko,

das wird so leider nicht funktionieren - Zumindest ich kenne keinen Weg an die markierten Einträge heranzukommen. Im ToolbarContext wirst du dann immer den Content2 als aktuelles Element bekommen.

Wäre es eine Option das ganze über einen Workflow zu machen? Man kann in jedem Fall mehrere Datensätze markieren und dann dort einen Workflow starten - Und dann vielleicht ins Skript abspringen?

Beste Grüße,

Florian

0 Kudos

Hallo Florian,

ok, ich nehme mit:

1. SelectContentOperation ist nicht API und darf nicht benutzt werden

2. man kommt nicht direkt an im SA markierte Datensätze ran

Wir müssen also bei der Umstellung auf Isolated entsprechend Aufwand für die Erstellung eines eigenen Auswahldialogs einplanen müssen.

Gruß, Heiko

0 Kudos