Servus,
hat ein bissel gedauert aber hab's net vergessen.
Ein kleine Erklärung, wie man ein Templatesystem aufbauen kann.
Bei der Erstellung des Templatesystems habe ich mich an vorhandenen Komponenten orientiert.
Für die Datenbankstruktur, erstellen und änder der Templates und dem Verknüpfen von Templates und Queues habe ich mich an AdminResponse und AdminQueueResponses orientiert.
1. Die Datenbankstruktur
Ich benutze eine Tabelle Template in der die Templates und eine tablelle queue_template in der die Verknüpfung gespeichert werden.
SQL Script gibt's als Anhang.
2. Hinzufügen der Menüpunkte AdminTemplate und AdminQueueTemplate im Adminbereich
XML-Datei (siehe Anhang) wird in das Verzeichnis /Kernel/Config/Files kopiert.
Es kann sein das die Menüpunkte nicht angezeigt werden.
In diesem Fall ZZZAAuto.pm löschen und
http://yourhost.com/otrs/index.pl aufrufen.
3. Template Systemmodule (/Kernel/system/Template.pm)
Das Systemmodul enthält die Methoden TemplateAdd, -Get, -Delete und GetAllTemplates.
Als Vorlage kann z.B. StdResponse verwendet werden.
4. AdminTemplate (erstellen, ändern und löschen von Templates)
AdminTemplate ist eine angepasste Version von AdminResponse.
Kernel::System::StdResponse durch Kernel::System::Template ersetzen und Methoden, Variablen anpassen.
5. AdminTemplate DTL-Datei (AdminTemplateForm.dtl)
AdminTemplateForm.dtl wird dahingehend verändert, dass man den Templatenamen, Informationen zu dem Template, den Textkörper und ein Kommentar eingeben kann.
6. AdminQueueTemplate (verknüpfen zwischen Queue und Template)
AdminQueueTemplate ist eine angepasste Version von AdminQueueResponse.
Wer sich die Datei genauer anschaut merkt, dass wenige Änderungen vorgenommen werden müssen um die gewünschte Funktionalität zu implementieren.
7.AgentTicketPhone / AgentTicketEmail DTL-Dateien anpassen.
Wir brauchen eine $Data Variable, mit der die DropDown-Liste angezeigt werden soll und eine Textarea in der die Template Informationen angezeigt werden sollen.
8. AgentTicketPhone.pm / AgentTicketEmail.pm anpassen
Bei der Auswahl einer Queue sollen die verknüpften Templates in einer Dropdown-Liste angezeigt werden. Dazu brauchen wir eine Methode, die als Parameter die QueueID bekommt und eine Liste mit den verknüpften Templates zurückliefert.
Es müssen nur noch die Textareas Informationen und Text gefüllt werden.
Zu diesem Zweck hat die DropDown-List ein OnChange-Event was ExpandCustomerName.value auf 4 setzt.
Bei der Abfrage von ExpandCustomerName kann nun die Templateinformationen und der Templatetext aus der DB gelesen und gespeichert werden.
Am Ende _Mask(Email/Phone)New beibringen, dass er eine DropDown-Liste erstellen soll und die Textareas füllen soll.
Ein kleines Snippet zur Verdeutlichung:
Code: Select all
# create new ticket and article
elsif ($Self->{Subaction} eq 'StoreNew') {
...
my $Dest = $Self->{ParamObject}->GetParam(Param => 'Dest') || '';
my $TemplateSelected = $Self->{ParamObject}->GetParam(Param => 'Template') || '';
my $TemplateText = '';
my $TemplateInformation = '';
# Dient dazu, das der Inhalt von Informationen nicht verloren geht
if($GetParam{Information}){
$TemplateInformation = $GetParam{Information};
}
...
# 'just' no submit
elsif ($ExpandCustomerName == 4) {
$Error{NoSubmit} = 1;
$TemplateText = $Self->_GetTemplate(TemplateID => $TemplateSelected);
$GetParam{Body} = $TemplateText;
$TemplateInformation = $Self->_GetTemplateInformation(TemplateID => $TemplateSelected);
}
...
$Output .= $Self->_MaskPhoneNew(
...
Templates => $Self->_GetTemplateIDs(QueueID => $NewQueueID),
TemplateInformation => $TemplateInformation,
TemplateSelected => $TemplateSelected,
Keine Hemmungen bei Problemen, fragt einfach.
Gruß
n4rF
You do not have the required permissions to view the files attached to this post.