Hallo,
ich habe bei uns die Bibliothek 'lib.notification.escalation' angepasst.
Dazu habe ich eine neue Funktion "ReplaceFields" erstellt, welche die mit '<<' und '>>' markierten Feldnamen ersetzt.
Der Aufruf erfolgt in der Prozedur "ProcessNotificationProfiles" direkt vor dem Befehl 'SpoofMessagewithitem' (coole Funktion
).
vorher :
dummy = SpoofMessagewithitem(...... TemplateDoc.Subject(0)......)
nachher:
dummy = SpoofMessagewithitem(...... ReplaceFields(TemplateDoc.Subject(0), TicketDoc) ......)
Damit funktioniert die ganze Sache auch im Subject (natürlich ohne Gewährleistung).
Viel Spaß damit,
Gruß Andreas
Hier noch die Funktion selbst - einfach der Bibliothek "lib.notification.escalation" anhängen :
Function ReplaceFields(sSubject As String, doc As NotesDocument) As String
' Ersetze Feldnamen (eingebettet zwischen TAG_PREFIX und TAG_SUFFIX)
' mit den Feldwerten aus dem Dokument
' erstellt 2006-02-20 von Andreas Schulteiß
Dim sFieldName As String, sFieldValue As String
Dim iPos1 As Integer, iPos2 As Integer
Dim iLen1 As Integer, iLen2 As Integer
iLen1 = Len(TAG_PREFIX)
iLen2 = Len(TAG_SUFFIX)
ReplaceFields = ""
Do
' suche das Start Tag
iPos1 = Instr(sSubject, TAG_PREFIX)
If iPos1 > 0 Then
' suche das Ende Tag
iPos2 = Instr(iPos1 + iLen1, sSubject, TAG_SUFFIX)
If iPos2 > 0 Then
' schneide den Feldnamen zwischen den Tags aus
sFieldName = Mid(sSubject, iPos1 + iLen1, iPos2 - iPos1 - iLen1)
If doc.HasItem(sFieldName) Then
' setze den Wert des Feldes ein
Set item = doc.GetFirstItem(sFieldName)
sFieldValue = item.Text
ReplaceFields = ReplaceFields + Left(sSubject, iPos1 - 1) + sFieldValue
Else
' wenn das Feld nicht existiert, dann übergebe den ursprünglichen Text
ReplaceFields = ReplaceFields + Left(sSubject, iPos2 + iLen2)
End If
' Mach mit dem Rest nach dem Ende Tag weiter
sSubject = Mid(sSubject, iPos2 + iLen2)
Else
ReplaceFields = ReplaceFields + sSubject
End If
Else
ReplaceFields = ReplaceFields + sSubject
End If
Loop Until (iPos1 = 0) Or (iPos2 = 0)
End Function