Questions & Answers

jst
New Responder

AppCenter // Integration von Elementen, welche per Ajax nachgeladen werden

Hallo Community,

wir versuchen fรผr einen Kunden ein externes MAM รผber die AppCenter Integration einzubinden. Dieses MAM bietet eine schรถnen und mehr oder weniger komfortable Oberflรคche fรผr den Redakteur.

Das einzige Problem bei der ganze Sache ist nur, dass die Medien leider per Javascript in die Oberflรคche nachgeladen werden. Das AppCenter kann somit leider nicht auf die Element im DOM zugreifen.

Hatte schon jemand ein รคhnliches Problem und gibt es dazu evtl. einen Lรถsungsansatz?

Viele GrรผรŸe,

Jรถrn

0 Kudos
5 Replies
feddersen
Community Manager

Man kann รผber den AppCenter ein Javascript in die Seite einfรผgen, dass auf ร„nderungen am DOM lauscht und dann die Elemente entsprechend hervorhebt oder fรผr Drag&Drop Operationen registriert.

JQuery bietet zum Beispiel solche Funktionen an, siehe http://api.jquery.com/live/

Alles klar. So kann ich per JavaScript erfassen, dass eine ร„nderung am Inhalt der Seite gemacht worden ist. Wir triggere ich dann aber aus dem JavaScript heraus die "register"-Methode um diese Elemente in der AppCenter-Integration als notwendige Elemente zu erfassen?

Viele GrรผรŸe aus Bielefeld,

Jรถrn

0 Kudos
feddersen
Community Manager

Mittels Java/JavaScript Proxy eine Brรผcke zwischen Java und Javascript erstellen, siehe http://www.e-spirit.com/odfs50/dev/de/espirit/firstspirit/client/gui/applications/browser/BrowserApp..., java.lang.String)

Ein Objekt zur Verfรผgung stellen das eine z.B. die Element-Id eines HTML-Objektes per Javascript an die Javawelt รผbergibt. Dort mittels http://www.e-spirit.com/odfs50/dev/de/espirit/firstspirit/client/gui/applications/BrowserNodeHandler... die Elemente registrieren.

0 Kudos

D.h. als, dass ich mit folgendem Aufruf zurande kommen sollte? Richtig?

onDocumentComplete(String url) {

    browserApplication.inject(this, "javaClient");

    browserApplication.executeScript("$$('div.thumbnailview')[0].observe('DOMNodeInserted',function(evt){node = evt.relatedNode; if (node.className.indexOf('thumbnailviewrecord') !== -1) {javaClient.registerNewElement(node.id);}});");

}

registerNewElements(String id){

    builder = browserApplication.createNodeHandlerBuilder();

    builder.setElementDecorator(this);

    builder.setActionProvider(this);

    builder.setDragListener(this);

    handler = builder.bind();

    result = browserApplication.getCurrentDocument().getElementById(id);

    if (result != null) {

           handler.register(childNode, null);

    }

}

0 Kudos
feddersen
Community Manager

Ja, auf den ersten Blick sieht das gut aus. Wobei es reicht den Handler 1x zu binden, das muss nicht fรผr jedes Element neu gemacht werden.

0 Kudos

Type a product name