Verwalten von E-Mail-Vorlagen¶
Allegra sendet E-Mails, um Benutzer z.B. über Änderungen an Vorgängen zu informieren oder sie an fällige Termine zu erinnern. Sie können das Aussehen und den Inhalt dieser E-Mails mit Vorlagen anpassen.
Zum Hinzufügen oder Bearbeiten von E-Mail-Vorlagen gehen Sie in der Verwaltungs-Perspektive zu Verwaltung > Anpassen > E-Mail-Vorlagen.
Es gibt eine Reihe von vordefinierten Ereignissen, die E-Mails auslösen. Diese sind
Vorgang erstellen
Vorgang ändern
Budget- oder Planwerte ändern
Einen Kommentar hinzufügen
Darüber hinaus gibt es eine Reihe von Systemereignissen, die E-Mails auslösen. Diese sind
Begrüßung eines neuen Benutzers nach der Registrierung
Kennwort vergessen
Erinnerungs-E-Mail für fällige oder überfällige Vorgänge
Sie können weiterhin E-Mail-Vorlagen erstellen
für das Versenden von E-Mails aus einem Vorgang heraus
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 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.
Folgende Attribute stehen zur Verfügung:
Variable |
Beschreibung |
---|---|
title |
Der Vorgangstitel |
project |
Der Bereich oder das Projekt für diesen Vorgang |
itemNo |
Die Vorgangsnummer |
marker |
Default ist [ Allegra <Vorgangsnummer>] |
submitterEmail |
Die E-Mail des Einreichers, wenn Vorgang per E-Mail erstellt wurde oder wenn er von einem anderen Benutzer eingegeben wurde |
subject |
Voreinstellung ist ${marker} [${{project}] ${changeDetail} |
changeDetail |
Eine lokalisierte Textzeichenfolge, wie im folgenden Code beschrieben |
moreInfo |
Der Link zum Vorgang innerhalb des Allegra-Systems |
isCreated |
True, wenn dieser Vorgang gerade erstellt wurde |
isCopy |
True, wenn dieser Vorgang gerade kopiert wurde |
oldIssue |
Nur im Falle einer Kopie: die ursprüngliche Vorgangsnummer |
isAddComment |
True, wenn ein Kommentar hinzugefügt wurde |
isEditComment |
True, wenn ein Kommentar bearbeitet wurde |
isDeleteComment |
True, wenn ein Kommentar gelöscht wurde |
isOtherChanged |
True für jede Änderung, die nicht expliziter angegeben wurde |
isManagerChanged |
True, wenn der Manager geändert wurde |
isResponsibleChanged |
True, wenn der Bearbeiter geändert wurde |
isDateChanged |
True, wenn das Start- oder Enddatum geändert wurde |
isMove |
True, wenn der Vorgang zu einem neuen Vorgangstyp oder Bereich verschoben wurde |
isStateChanged |
True, wenn der Vorgangszustand geändert wurde |
isResponsibleChanged |
True, wenn der zuständige Bearbeiter geändert wurde |
isClose |
True, wenn der Vorgang geschlossen wurde |
isReopen |
True, wenn ein geschlossener Vorgang wieder geöffnet wurde |
changedBy |
Die Person, die das E-Mail-Ereignis verursacht |
createdBy |
Die Person, die diesen Vorgang erstellt hat (im Falle von erstellen) |
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 |
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 |
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;
}