Questions & Answers

SOLVED
thmd
I'm new here

Detailseite einer Contentprojektion per Skript aufrufen

Jump to solution

Hallo,

wir haben bei uns folgendes Problem. Wir erzeugen per Skript neue Datensรคtze und wollen dannach diesen erzeugten Datensatz auch dem Redakteur anzeigen. Fรผr die Datensรคtze existieren bei uns verschiedene Detailseiten (PageRefs mit Contentprojektionen), die auch mit unterschiedlichen Filtern ausgestattet sind.

Je nach Auswahl, die der Redakteur im Skript gemacht hat, mรถchte ich nun auf eine dieser Detailseiten springen und den neuen Datensatz anzeigen. Benutze ich die DisplayElementOperation auf dem Datensatz, springt er aber immer die Seite an, die in der Vorlage als Vorschau Seite definiert ist.

Gibt es eine Mรถglichkeit, programmatisch auf eine Seitenreferenz einer Detailseite zu navigieren und als Parameter den Datensatz mitzugeben, der angezeigt werden soll? Irgendwie finde ich dazu nichts.

Viele GrรผรŸe

Thomas Domschke

0 Kudos
1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

Hallo Thomas,

Ich gehe mal von WebEdit aus. Soweit ich weiรŸ, gibt es aktuell keinen reine Java-Agent, mit dem man das Ziel so "genau" angeben kann (oder ich รผbersehe gerade was).

Mir fiel aber etwas ein das funktioniert, wenn ihr das Script per fsbutton() bzw. top.WE_API.Common.execute() aufruft.

Denn hier kann man einen (Javascript!)Handler angeben, der aufgerufen wird wenn das Script fertig abgearbeitet ist.

Wenn das Script (oder dei Executable) vorher selber die Ziel-URL ermittelt und per return zurรผckgibt, z.B. per

//!Beanshell

...

//some code: create the dataset, calculate the right pageref, get the language from the WebEditUiAgent....

//myFsId is the fs_id of the created entity

...

final String previewUrl = pageref.getPreviewUrl(

     language,

     pageRef.getProject().getTemplateSets().get(0),

     false,

     Previewable.PREVIEWMODE_WEBEDIT,

     Collections.singletonMap("contentId", myFsId)

);

return previewUrl;

kรถnnte der Aufruf im Ausgabekanal des Templates in etwa so aussehen:

<script type="text/javascript">

     function doSomething(){

          top.WE_API.Common.execute("script:create_something",

               {},

               function(result){

                    document.location.href=result;

               }

          );

          }

</script>

<a href="#" onclick="doSomething();">klick</a>

Viele GrรผรŸe

Michael

View solution in original post

0 Kudos
4 Replies
j_mueller
Elite Observer

Hallo Thomas,

vielleicht wรคre es eine Mรถglichkeit sich per Skript die Tabellenvorlage zu holen und die Vorschau-Seite temporรคr zu "verbiegen".

TableTemplate template;
PageRef ref = template.getPreviewPageRef();
template.setPreviewPageRef(yourTargetPageRef);

// displayElementOperation

template.setPreviewPageRef(ref);

Die Lock- und Save-Methoden fehlen hier bewusst - so wรคre es mรถglich die Zielseite nur im Client des Users zu รคndern und vor allem nur temporรคr.

Das ist natรผrlich eher ein Hack, vielleicht haben die eSpirit Leute ja noch eine bessere Idee. Smiley Wink

Schรถne GrรผรŸe

Julius

mbergmann
Crownpeak employee

Hallo Thomas,

Ich gehe mal von WebEdit aus. Soweit ich weiรŸ, gibt es aktuell keinen reine Java-Agent, mit dem man das Ziel so "genau" angeben kann (oder ich รผbersehe gerade was).

Mir fiel aber etwas ein das funktioniert, wenn ihr das Script per fsbutton() bzw. top.WE_API.Common.execute() aufruft.

Denn hier kann man einen (Javascript!)Handler angeben, der aufgerufen wird wenn das Script fertig abgearbeitet ist.

Wenn das Script (oder dei Executable) vorher selber die Ziel-URL ermittelt und per return zurรผckgibt, z.B. per

//!Beanshell

...

//some code: create the dataset, calculate the right pageref, get the language from the WebEditUiAgent....

//myFsId is the fs_id of the created entity

...

final String previewUrl = pageref.getPreviewUrl(

     language,

     pageRef.getProject().getTemplateSets().get(0),

     false,

     Previewable.PREVIEWMODE_WEBEDIT,

     Collections.singletonMap("contentId", myFsId)

);

return previewUrl;

kรถnnte der Aufruf im Ausgabekanal des Templates in etwa so aussehen:

<script type="text/javascript">

     function doSomething(){

          top.WE_API.Common.execute("script:create_something",

               {},

               function(result){

                    document.location.href=result;

               }

          );

          }

</script>

<a href="#" onclick="doSomething();">klick</a>

Viele GrรผรŸe

Michael

0 Kudos

Hallo Michael,

ja fรผr unseren Einsatzzweck reicht der ContentCreator Smiley Wink. Wir haben dein Script noch ein wenig erweitert und jetzt macht es das, was es soll.

GrรผรŸe

Thomas

0 Kudos

Halllo Julius,

prinzipiell eine interessante Idee, dass so zu machen - darauf bin ich noch gar nicht gekommen. Was mir hier noch fehlt, wรคre es einen bestimmten Datensatz anzuspringen (siehe Lรถsung von Michael), da die Vorschauseiten ja trotzdem immer den letzten erzeugten Datensatz anzeigen.

Die Variante kommt aber definitiv in die Werkzeugkiste, das kann ich bestimmt irgendwann mal brauchen Smiley Happy

GrรผรŸe

Thomas

0 Kudos

Type a product name