Questions & Answers

SOLVED
jzhou
Returning Observer

Global gesetzte Variable in Script auslesen

Jump to solution

Hallo Zusammen,

folgendes Szenario:

In den Project Settings setze ich eine globale Variable:

$CMS_SET(gv_preview_ocs_map, {:})$

Im ContentCreator wird beim Klick auf einen Link mittels JavaScript und WE_API ein Script in FS aufgerufen:

top.WE_API.Common.execute("script:set_ocs_id", parameters, callbackFunction);

Das Script "set_ocs_id" soll nun die Variable gv_preview_ocs_map holen und befรผllen.

Allerdings komme ich an der Stelle nicht an die Variable ran, da ich mich dann anscheinend in einem Kontext der Klasse WebeditScriptContext befinde (keine Doku dazu gefunden).

--> Ganz anders und einfach ginge es, wenn "set_ocs_id" einfach รผber $CMS_RENDER(script:"set_ocs_id")$ aufgerufen werden wรผrde, dann kรถnnte ich im Skript "set_ocs_id" die Variable mittels context.getVariableValue("gv_preview_ocs_map"); holen, aber da habe ich wohl einen anderen Kontext.

Da ich aber beim Link-Klick ein paar Parameter von eben dem Link an das Script "set_ocs_id" รผbergeben mรถchte, muss ich wohl den Aufruf รผber JavaScript und die WE_API machen - wie komm ich also in dem Szenario im WebeditScriptContext an die Variable "gv_preview_ocs_map"?

Vielen Dank schonmal!

Viele GrรผรŸe

Jenny

 

 

0 Kudos
1 Solution

Accepted Solutions
jzhou
Returning Observer

Hi Timo,

danke fรผr deine Antwort, leider reicht das Auslesen selbst in unserem Fall nicht aus, wir mรถchten die Variable im Script "set_ocs_id" befรผllen und dann wieder im Template weiter verwenden.

Ich habe nun hierfรผr die Projekt Properties hergenommen:

project.setProperty("variablenname", "wert");

Ist vielleicht auch nicht ideal, aber wenigstens global verfรผgbar und in jedem Kontext auslesbar und auch befรผllbar.

Zur Info falls jemand das hier liest und beschlieรŸt auch die Projekt Properties zu verwenden: setProperty() geht nur, wenn der aktuelle Benutzer Projektadmin-Rechte hat. Desweiteren sind diese Properties fรผr das gesamte Projekt gรผltig, egal welcher Benutzer und welche Session, daher habe ich die aktuelle Benutzer-ID mit in den Variablennamen gepackt.

Viele GrรผรŸe

Jenny

View solution in original post

0 Kudos
2 Replies
tfuchs
Elite Observer

Hi jzhou,

im WebeditScriptContext kommst Du nicht an die Variablen, die im Template gesetzt sind. Vielleicht gibt es eine elegantere Lรถsung, aber wir haben das Problem schonmal so gelรถst:

1. Den Inhalt der Variable in ein (verstecktes) HTML-Element schreiben, also bspw.

 

<div id="cc_variables" data-preview-ocs-map="$CMS_VALUE(gv_preview_ocs_map.toJson())$" ....></div>

 

2. Das Element per JavaScript auslesen, bspw. mit jQuery:

 

var preview_ocs_map = $("#cc_variables").data("previewOcsMap");

 

3. Die Variable als Parameter an das Skript รผbergeben:

 

top.WE_API.Common.execute("script:set_ocs_id", {ocsmap: preview_ocs_map, parameters...}, callbackFunction);

 

4. Im Script set_ocs_id kannst Du dann auf die Variable "ocsmap" zugreifen.

Viele GrรผรŸe
Timo

0 Kudos
jzhou
Returning Observer

Hi Timo,

danke fรผr deine Antwort, leider reicht das Auslesen selbst in unserem Fall nicht aus, wir mรถchten die Variable im Script "set_ocs_id" befรผllen und dann wieder im Template weiter verwenden.

Ich habe nun hierfรผr die Projekt Properties hergenommen:

project.setProperty("variablenname", "wert");

Ist vielleicht auch nicht ideal, aber wenigstens global verfรผgbar und in jedem Kontext auslesbar und auch befรผllbar.

Zur Info falls jemand das hier liest und beschlieรŸt auch die Projekt Properties zu verwenden: setProperty() geht nur, wenn der aktuelle Benutzer Projektadmin-Rechte hat. Desweiteren sind diese Properties fรผr das gesamte Projekt gรผltig, egal welcher Benutzer und welche Session, daher habe ich die aktuelle Benutzer-ID mit in den Variablennamen gepackt.

Viele GrรผรŸe

Jenny

0 Kudos

Type a product name