E-Mail-Vorlagen#

Für per E-Mail verschickte Benachrichtigungen gibt es Vorlagen, mit deren Hilfe man den Inhalt und die Darstellung der Nachrichten festlegen kann. Jede Vorlage kann in mehreren Sprachen und jeweils im HTML-Format und als einfache Textnachricht definiert werden.

Zum Bearbeiten der Vorlagen müssen Sie mit Systemverwalter-Berechtigungen angemeldet sein. Gehen Sie dann zu Verwaltung > Vorlagen > E-Mail-Vorlagen.

../_images/personal-reminder.png

Vorlagentypen#

Jede Vorlage basiert auf einem Vorlagentyp. Die folgende Tabelle beschreibt die zur Verfügung stehenden Vorlagentypen für vorgangsbezogene Benachrichtigungen. Vorlagen vom Vorlagentyp „Item change“ stehen auch für Workflows zur Verfügung. Die Bearbeitung einer Vorgangsmenge löst kein Benachrichtigungsereignis aus.

Vorlagentyp

Ereignis

Item change

Vorgang erstellt oder geändert

Item created by e-mail

Vorgang durch E-Mail erstellt

Item plan/expense

Aufwände geändert

Comment added

Kommentar hinzugefügt

Reminder

Globale Erinnerung an fällige Vorgänge

Send from item

Vom Vorgang aus verschickte E-Mail

Item reminder

Vorgangsbezogene Wiedervorlage

E-Mail item creation rejected

Vorgang konnte nicht per E-Mail angelegt werden

Die folgende Tabelle beschreibt die zur Verfügung stehenden Vorlagentypen für verwaltungs- bzw. systembezogene Benachrichtigungen.

Vorlagentyp

Ereignis

Welcome

Willkommensnachricht nach (Selbst-) Registrierung

Forgot password

Antwort auf „Kennwort-Vergessen“-Aktion

Calendar change

Kalender-Änderung

Two factor authentication

Code für Zwei-Faktor-Verifikation

Plugin

Vorlagen für Plugins

Sie ordnen Vorlagen entweder global oder spezifisch für einen Vorgangstyp oder einen Arbeitsbereichstyp oder sogar bereichsspezifisch, indem Sie ihn aus dem rechten Bereich in die gewünschte Position in der zweiten Spalte ziehen. Jede Vorlage kommt in zwei Varianten: HTML und Klartext. Jede Vorlage kann in einer Reihe von Gebietsschemata zur Verfügung gestellt werden. Sie können komplette Vorlagen-Sets oder nur einzelne Vorlagen importieren und exportieren.

../_images/mailTemplate2.png
../_images/mailTemplate3.png

Vorlagen Makrosprache#

Vorlagen werden in der Freemarker-Makrosprache geschrieben (siehe https://freemarker.apache.org/docs/index.html). Die folgende Auflistung zeigt einen Teil der E-Mail HTML-Vorlage für Vorgangsänderungen, wie sie mit Allegra ausgeliefert wird.

<#macro renderShortFields fieldChangeRows>
<#list fieldChangeRows as fieldChange>
<tr>
    <td align="right" bgcolor="#d8e1ed"
            style="width: 26%;">
            ${fieldChange.localizedFieldLabel}:
    </td>
    <#-- if copy we are not interested in the
        change compared to the original workItem -->
    <#if !fieldChange.changed>
        <#assign bgcolor=bgcolorCellNormal>
    <#else>
        <#assign bgcolor=bgcolorCellChanged>
    </#if>
    <td bgcolor="${bgcolor}" style="width: 37%;">
    ${fieldChange.newShowValue}
    </td>
    <td bgcolor="#edf0f6" style="width: 37%;">
    ${fieldChange.oldShowValue}
    </td>
    </tr>
</#list>
</#macro>

Das Template-Modul stellt für die Vorlagen eine Anzahl von Variablen zur Verfügung. Die meisten Variablen sind Kindvariablen von FieldChangeRows. Damit lassen sich E-Mails wie die unten dargestellte erzeugen.

../_images/mailTemplate4.png

Vorlagen-Attribute#

Folgende Attribute stehen für E-Mail-Vorlagen zur Verfügung:

Variable

Beschreibung

changedBy

Die Person, die das E-Mail-Ereignis verursacht

changeDetail

Eine lokalisierte Textzeichenfolge, wie im folgenden Code beschrieben

createdBy

Die Person, die diesen Vorgang erstellt hat (im Falle von erstellen)

isAddComment

True, wenn ein Kommentar hinzugefügt wurde

isClose

True, wenn der Vorgang geschlossen wurde

isCreated

True, wenn dieser Vorgang gerade erstellt wurde

isCopy

True, wenn dieser Vorgang gerade kopiert wurde

isDateChanged

True, wenn das Start- oder Enddatum geändert wurde

isDeleteComment

True, wenn ein Kommentar gelöscht wurde

isEditComment

True, wenn ein Kommentar bearbeitet wurde

isManagerChanged

True, wenn der Manager geändert wurde

isMove

True, wenn der Vorgang zu einem neuen Vorgangstyp oder Bereich verschoben wurde

isOtherChanged

True für jede Änderung, die nicht expliziter angegeben wurde

isReopen

True, wenn ein geschlossener Vorgang wieder geöffnet wurde

isResponsibleChanged

True, wenn der Bearbeiter geändert wurde

isStateChanged

True, wenn der Vorgangszustand geändert wurde

itemNo

Die Vorgangsnummer

longFieldChanges

Eine Liste von Element-Attributen für „long“ Attribute wie Beschreibungen und Kommentare

longFieldChanges.fieldChange

Ein einzelnes Attribut

longFieldChanges.fieldChange.changed

True, wenn dieses Attribut geändert wurde

longFieldChanges.fieldChange.newShowValue

Der neue oder tatsächliche Attributwert

longFieldChanges.fieldChange.oldShowValue

Der alte Attributwert

marker

Default ist [ Allegra <Vorgangsnummer>]

moreInfo

Der Link zum Vorgang innerhalb des Allegra-Systems

oldIssue

Nur im Falle einer Kopie: die ursprüngliche Vorgangsnummer

project

Der Bereich oder das Projekt für diesen Vorgang

shortFieldChanges

Eine Liste der Vorgangs-Attribute für „short“ -Attribute

shortFieldChanges.fieldChange

Ein einzelnes Attribut

shortFieldChanges.fieldChange.changed

True, wenn dieses Attribut geändert wurde

shortFieldChanges.fieldChange.newShowValue

Der neue oder tatsächliche Attributwert

shortFieldChanges.fieldChange.oldShowValue

Der alte Attributwert

subject

Voreinstellung ist ${marker} [${{project}] ${changeDetail}

submitterEmail

Die E-Mail des Einreichers, wenn Vorgang per E-Mail erstellt wurde oder wenn er von einem anderen Benutzer eingegeben wurde

title

Der Vorgangstitel

tokenExpression

Zur Autorisierung unbekannter E-Mail-Sender, siehe E-Mail-spezifische Zugriffserlaubnis

Das folgende Listing beschreibt, wie die ChangeDetail-Variable aufgebaut ist.

private String getSubjectSuffix(Integer workItemKey, String synopsis,
                                String newStateLabel, Locale actualLocale) {

    String subjectPatternKey = null;
    //the last complying flag wins
    if (isAddComment) {
        subjectPatternKey = "item.mail.subject.addComment";
    }
    if (isEditComment) {
        subjectPatternKey = "item.mail.subject.editComment";
    }
    if (isDeleteComment) {
        subjectPatternKey = "item.mail.subject.deleteComment";
    }
    if (isOtherChanged) {
        subjectPatternKey = "item.mail.subject.trail";
    }
    if (isManagerChanged) {
        subjectPatternKey = "item.mail.subject.managerChanged";
    }
    if (isResponsibleChanged) {
        subjectPatternKey = "item.mail.subject.responsibleChanged";
    }
    if (isDateChanged) {
        subjectPatternKey = "item.mail.subject.dateChange";
    }
    if (isMove) {
        subjectPatternKey = "item.mail.subject.move";
    }
    if (isStateChanged) {
        subjectPatternKey = "item.mail.subject.stateChange";
    }
    if (isClose) {
        subjectPatternKey = "item.mail.subject.closed";
    }
    if (isReopen) {
        subjectPatternKey = "item.mail.subject.reopen";
    }
    if (isCreated || isCopy) {
        subjectPatternKey = "item.mail.subject.new";
    }
    String changeDetail = "";
    Object[] subjectArguments = {workItemKey, //for new
            synopsis,
            newStateLabel, //for state change
            //newProjectLabel,
    };
    changeDetail = LocalizeUtil.
                getParametrizedString(subjectPatternKey,
            subjectArguments, actualLocale);
    return changeDetail;
}