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
.
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.
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.
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;
}