Questions & Answers

SOLVED
pstute
I'm new here

Metadaten Tab per API ansprechen

Jump to solution

Hallo Community,

ich wรผrde gerne in der postProcess-Methode eines UploadHooks nach dem Hochladen eines Medium den Metadaten Tab ansprechen, um dem Redakteur zu zeigen, dass hier noch eine Eingabe von ihm erwartet wird.

Bis jetzt konnte ich noch keine API finden, wie ich den Tab anspreche. Hat hier vielleicht jemand das schon einmal gemacht?

Viele GrรผรŸe,

Patricia

1 Solution

Accepted Solutions

Hi Patricia,

die Operation bekommst du รผber den OperationAgent, du kannst/musst die nicht selbst erzeugen. Also einfach รผber den baseContext die Operation holen und nutzen.

Den Service musst du schon selber schreiben, das kann eine beliebige Klasse sein.

Beispiele zum PermanentPlugin und zu ClientServices findest du in unserer Dokumentation im Abschnitt Permanent-Plug-Ins: Code Example. In dem Beispiel-Code-Paket, das dort verlinkt ist, findest du auch eines fรผr einen ClientService.

Beste GrรผรŸe,

Stefan

View solution in original post

0 Kudos
7 Replies
StefanSchulz
I'm new here

Hallo Patricia,

es gibt seit Version 5.0 eine OpenElementMetaFormOperation.

Ist es so etwas, das du suchst?

Beste GrรผรŸe

Stefan

0 Kudos

Hallo Stefan,

das sieht sehr danach aus, allerdings liefert der Aufruf getOperation(...) immer null zurรผck und es folgt eine NullPointer.

OperationAgent operationAgent = baseContext.requireSpecialist(OperationAgent.TYPE);
baseContext.logInfo("operationAgent " + operationAgent);
OpenElementMetaFormOperation operation = operationAgent.getOperation(OpenElementMetaFormOperation.TYPE);

operation.perform(media);

Der operationAgent ist nicht null, nur der Aufruf von getOperation liefert null. Benรถtige ich einen anderen Context?

Ich hole mir das eingefรผgte Element momentan durch

ClientUtil.select(media).execute();

da ich bereits hier das Problem mit dem null fรผr DisplayElementOperation hatte.

Viele GrรผรŸe,

Patricia

0 Kudos

Hi Patricia,

du hast Recht. Leider ist der Kontext an dieser Stelle nicht ausreichend und verfรผgt รผber keinerlei UI-Informationen. Potentiell wird der Hook ja auch Server-seitig ausgefรผhrt.

So wird es einigermaรŸen kompliziert. Du kรถnntest beispielsweise ein JavaClientPermanentPlugin erstellen, dass einen ClientService registriert,der die gewรผnschte Aufgabe erledigen kann. Den Service kannst du dann รผber den ServicesBroker des baseContext auffinden (im SiteArchitect-Kontext) und nutzen.

Beste GrรผรŸe

Stefan

Hallo Stefan,

danke fรผr die Rรผckmeldung. Da es momentan nur ein "nice to have" fรผr die Redakteure ist, werde ich den Ansatz im Hinterkopf behalten.

Viele GrรผรŸe,

Patricia

0 Kudos

Hallo Stefan,

es hat sich gerade vom "nice to have" zu einen "must have" aufgeschwungen.

Ich hatte eben mit folgendem Aufbau versucht das Plugin zu implementieren:

public class SelectMetadataTabPlugin implements JavaClientPermanentPlugin{

    @Override
    public void setUp(BaseContext baseContext) {

        BrokerAgent brokerAgent = baseContext.requireSpecialist(BrokerAgent.TYPE);
        SpecialistsBroker specialistsBroker = brokerAgent.getBroker("Mithras Energy");

        ClientServiceRegistryAgent clientServiceRegistryAgent = baseContext.requireSpecialist(ClientServiceRegistryAgent.TYPE);
        OpenElementMetaFormOperation operation = new OpenElementMetaFormOperationImpl(specialistsBroker);
        clientServiceRegistryAgent.registerClientService(OpenElementMetaFormOperation.class, operation);
    }

    @Override
    public void tearDown() {

    }

}

Bei OpenElementMetaFormOperation operation = new OpenElementMetaFormOperationImpl(specialistsBroker); bekomme ich eine NullPointerException. Irgendetwas mache ich hier falsch ๐Ÿ˜•

Viele GrรผรŸe,

Patricia

0 Kudos

Hi Patricia,

die Operation bekommst du รผber den OperationAgent, du kannst/musst die nicht selbst erzeugen. Also einfach รผber den baseContext die Operation holen und nutzen.

Den Service musst du schon selber schreiben, das kann eine beliebige Klasse sein.

Beispiele zum PermanentPlugin und zu ClientServices findest du in unserer Dokumentation im Abschnitt Permanent-Plug-Ins: Code Example. In dem Beispiel-Code-Paket, das dort verlinkt ist, findest du auch eines fรผr einen ClientService.

Beste GrรผรŸe,

Stefan

0 Kudos

Danke Stefan fรผr den Hinweis. Hat nun geklappt.

Viele GrรผรŸe,

Patricia

Type a product name