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