- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
generation-variable in project-setting-template available?
Hallo Zusammen,
kann es sein, dass die Generierungsvariablen nicht in den Ausgabekanรคlen des Projekteinstellungstemplate verfรผgbar sind?
Ist das "gewรผnschtes Verhalten"?
Wie sรคhe ein Workaround aus?
Getestet in 5.0.318 im Mithras-Projekt
Danke & Grรผรe,
Maik
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Maik,
du kannst in der PS-Seite auf den ScheduleContext zugreifen und Dir die Liste der Variablen holen und mit diesen arbeiten.
Beispiel: $CMS_VALUE(#global.scheduleContext.task.variables.get(0).value)$
Wenn du mehrere Variablen hasst, musst du ggf. iterieren und den richtigen ermitteln, aber รผber den aktuellen Task (und das ist in diesem Fall ja immer die Generierung!) kannst du jederzeit darauf zugreifen. Achte hier allerdings darauf den Aufruf mit richtigen IF-Abfragen zu umklammern, so dass nicht unnรถtigerweise WARN oder ERROR Meldungen mit geloggt werden wenn der Wert mal nicht gesetzt ist.
Gruร,
Daniel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
noch einmal kurz detailliert anders:
/help/odfs/en/vorlagenentwicklung/variablen/kontexte_2/projektbezogen_1/projektbezogen.html#_global_context
Hier im Bild
"The following figure shows the availability of variables down to section level:"
sind die schedule-variables offenbar nicht in den Projekteinstellungen (im template) verfรผgbar.
Grรผรe,
Maik
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Maik,
die Generieurngsvariablen werden so behandelt, als hรคttest Du die entsprechende Variable auf der Wurzel der Struktur-Verwaltung gesetzt. Das bedeutet, dass diese Variablefรผr alle Seitenreferenzen in der Struktur-Verwaltung gรผltig ist und von entsprechenden Definitionen auf tieferliegenden Knoten รผberschrieben werden kann.
Weiterhin bedeutet dies, dass die Variable nicht in dem Projekt-Einstellungstemplate gรผltig ist, da dieses _vor_ der Generierung des ersten Knoten ausgewertet wird, also somit auch nicht in der Struktur hรคngt.
Also ist das Verhalten erwartungskonform und kein Bug.
Workaround kรถnnte somit sein, sich in der Projekteinstellungsseite sich die Variable direkt zu holen:
$CMS_SET(myVar,#global.project.userService.getStore("sitestore",true).formData.get(#global.language,"<varname>").get())$
Hab aber nicht geprรผft, ob das tatsรคchlich funktioniert.
Viele Grรผรe aus Dortmund,
Holger
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Holger,
nach nochmaliger Prรผfung der Dokumentation kann ich diese Ausnahme nicht finden.
Denn in den angegebenen Bild ist es genau anders vermerkt:
- die schedules-vars sind im root-context
- dieser wiederum sollten dann in den templates verfรผgbar sein- nur halt in den projectsettings nicht?
Daher verstehe ich das nicht, dass dies so sein soll, weils doch anders dokumentiert ist?!
Dein Workaround funktioniert leider nicht.
varName = context.getProperty("var").toString();
varValue = context.project.userService.getStore("sitestore",true).getFormData().get(context.project.getLanguage("DE"),varName).get();
context.logDebug("eval sc_getssvar | varName: "+varName+" | varValue: "+varValue);
result.setValue(varValue);
Erzeugt eine Exception, dass das Feld nicht existiert, da diese Seitenstrukturvariable nicht vorhanden ist.
Lege ich diese dann an, gibt diese den Wert aus der Struktur zurรผck und nicht aus den schedule-vars.
Lasse ich die SS-Var leer, ist auch die Rรผckgabe leer, aber nicht den Wert aus der schedule-var.
Wรคre ein 2. Ansatz im template projectsettings den Wert direkt aus den schedule zu holen? Geht das? Wenn ja, wรคre ich dankbar wenn Du den Einzeiler einhacken kรถnntest, da ich kein Weg finde von dem project auf den schedule-wert zu kommen (vom #global.project. ... generateTask.getVariables(...)).
Danke,
Maik
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Maik,
du kannst in der PS-Seite auf den ScheduleContext zugreifen und Dir die Liste der Variablen holen und mit diesen arbeiten.
Beispiel: $CMS_VALUE(#global.scheduleContext.task.variables.get(0).value)$
Wenn du mehrere Variablen hasst, musst du ggf. iterieren und den richtigen ermitteln, aber รผber den aktuellen Task (und das ist in diesem Fall ja immer die Generierung!) kannst du jederzeit darauf zugreifen. Achte hier allerdings darauf den Aufruf mit richtigen IF-Abfragen zu umklammern, so dass nicht unnรถtigerweise WARN oder ERROR Meldungen mit geloggt werden wenn der Wert mal nicht gesetzt ist.
Gruร,
Daniel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Daniel,
das passt und funktioniert prima, das Abfangen habe ich natรผrlich eingebaut vielen Dank dafรผr!
Grรผรe,
Maik

