dead_walk
I'm new here

Linkerzeugung ohne Generierungscontext

Jump to solution

Hallo zusammen,

ich habe in den Projekteinstellungen im SiteArchitekt einen DOM-Editor, welcher als Signatur einer E-Mail verwendet werden soll. Die Emails sind im HTML Format.

In dem Editor kann man sowohl externe als auch interne Links über einen CMS_INPUT_LINK eintragen. Bei der der Freigabe der Projekteinstellungen, wird der Inhalt des Editors in eine Variable gespeichert und dann, wenn benötigt, aus dieser ausgelesen und in die Email eingefügt.

Die Links werden dann in der Email zwar als Link gekennzeichnet, sie können aber nicht angeklickt werden.

Die Verweisvorlage sieht folgendermaßen aus:

$CMS_TRIM(level:3)$

    $-- set link reference - internal link rules --$

    $CMS_SET(set_lt_ref,"#")$

    $CMS_IF(!sitestoreref.isEmpty)$

        $CMS_SET(set_lt_ref,ref(sitestoreref).url)$

    $CMS_ELSIF(!ref.isEmpty && !ref.equals("http://"))$

        $CMS_SET(set_lt_ref,ref)$

    $CMS_END_IF$

    $-- set alternative text from text --$

    $CMS_SET(set_lt_text)$$CMS_VALUE(text,default:"")$$CMS_END_SET$

    $CMS_SET(set_lt_text,set_lt_text.toString().convert2)$

    $-- set comment --$

    $CMS_SET(set_lt_comment)$$CMS_VALUE(comment,default:"")$$CMS_END_SET$

    $CMS_SET(set_lt_comment,set_lt_comment.toString().convert2)$

    $-- print link begin --$

    <a href="$CMS_VALUE(set_lt_ref)$" title="$CMS_VALUE(set_lt_comment)$" target="_blank">$CMS_VALUE(set_lt_text)$</a>

$CMS_END_TRIM$

Wenn ich mir den Quelltext der Email anschaue, sieht der "generierte" Link so aus:

<a href="#" data-link-template="further_information_email_link" data-link-id="47d5da0a-483f-4fbe-97ae-15a0019a6459">E-Mail Formulare</a>

Für mich sieht das so aus, als wenn meine Linkvorlage überhaupt nicht abgearbeitet wird. Wie kommt also der "generierte" Link zustande und wie kann ich den korrekten Link erzeugen lassen?

VG

Jens

0 Kudos
1 Solution

Accepted Solutions

Hallo Jens,

ah, das mit den Attributen habe ich tatsächlich übersehen. Ich habe deinen Fall mal im Mithras Projekt nachvollzogen und habe über ein Script die toText Methode eines DOM-Elementes aufgerufen.

Die Ausgabe ähnelt deiner ganz genau. Ich sehe ebenfalls die Attribute, obwohl ich sie nicht definiert habe. Als href sehe ich ebenfalls "#". Der Link-Text ist aber wie erwartet (es gibt bestimmt einen Grund für die zusätzlichen Attribute, den kenne ich leider aber auch nicht).

Führe ich eine richtige Generierung aus, ist das Ergebnis wie erwartet. D. h. es werden die erwarteten Attribute und die richtige URL generiert.

Ich stecke nicht sehr tief in dieser speziellen Materie, aber für die Generierung von URLs wird ja eine UrlFactory benötigt, der in einem Generierungstask festgelegt wird. Die fehlt natürlich, wenn man sich den Wert der Komponente direkt holt.

Schau mal, ob der RenderingAgent (FirstSpirit Developer-API) euch weiter hilft. Damit kannst du einzelne IDProvider rendern und dafür eine UrlFactory festlegen.

Viele Grüße

Tim

View solution in original post

0 Kudos
3 Replies
pavone
I'm new here

Hallo Jens,

auf den ersten Blick sieht deine Linkvorlage in Ordnung aus. Da im href Attribut zumindest "#" steht, vermute ich, dass die if-Anweisung nicht nach deinen Erwartungen funktioniert. Dann bleibt nämlich "#" in set_lt_ref stehen. Das würde ich an deiner Stelle als erstes checken.

Falls die if-Anweisung doch soweit funktioniert, müsstest du noch etwas genauer beschreiben, wie der Ablauf ist. Du schreibst "Bei der der Freigabe der Projekteinstellungen, wird der Inhalt des Editors in eine Variable gespeichert". Meinst du also, dass eine Freigabe (über einen Workflow?) durchgeführt wird, die die Signatur generiert und irgendwo speichert? Und später in einem zweiten Prozess wird auf diese Variable zugegriffen? Oder passiert das doch in einem Generierungsprozess? In welcher Art von Variablen wird die Signatur gespeichert?

Viele Grüße

Tim

0 Kudos

Hi Tim,

genau, die Freigabe erfolgt über einen Workflow. Während des Workflows wird der Wert des DOM-Editors (die Signatur) als Property ins Projekt gespeichert. Wenn eine Email versendet werden soll, wird dieser Wert dann aus dem Projekt (project.getProperty(String key)) ausgelesen. Es gibt also keinen Generierungscontext.

Aber wie gesagt, bezweifle ich ,dass meine Verweisvorlage überhaupt berücksichtigt wird, denn der Link den ich bekomme lautet

<a href="#" data-link-template="further_information_email_link" data-link-id="47d5da0a-483f-4fbe-97ae-15a0019a6459">E-Mail Formulare</a>.

Der Link, der eigentlich erzeugt werden soll lautet:

<a href="$CMS_VALUE(set_lt_ref)$" title="$CMS_VALUE(set_lt_comment)$" target="_blank">$CMS_VALUE(set_lt_text)$</a>

In meiner Verweisvorlage gibt es weder data-link-template noch data-link-id, aber meine Attribute wie title und target werden überhaupt nicht ausgegeben.

VG

Jens

0 Kudos

Hallo Jens,

ah, das mit den Attributen habe ich tatsächlich übersehen. Ich habe deinen Fall mal im Mithras Projekt nachvollzogen und habe über ein Script die toText Methode eines DOM-Elementes aufgerufen.

Die Ausgabe ähnelt deiner ganz genau. Ich sehe ebenfalls die Attribute, obwohl ich sie nicht definiert habe. Als href sehe ich ebenfalls "#". Der Link-Text ist aber wie erwartet (es gibt bestimmt einen Grund für die zusätzlichen Attribute, den kenne ich leider aber auch nicht).

Führe ich eine richtige Generierung aus, ist das Ergebnis wie erwartet. D. h. es werden die erwarteten Attribute und die richtige URL generiert.

Ich stecke nicht sehr tief in dieser speziellen Materie, aber für die Generierung von URLs wird ja eine UrlFactory benötigt, der in einem Generierungstask festgelegt wird. Die fehlt natürlich, wenn man sich den Wert der Komponente direkt holt.

Schau mal, ob der RenderingAgent (FirstSpirit Developer-API) euch weiter hilft. Damit kannst du einzelne IDProvider rendern und dafür eine UrlFactory festlegen.

Viele Grüße

Tim

0 Kudos