Kundenname in das Agenten-Dashboard

English! place to talk about development, programming and coding
Post Reply
timo2k
Znuny newbie
Posts: 41
Joined: 16 Feb 2010, 21:00
Znuny Version: 4.0.16

Kundenname in das Agenten-Dashboard

Post by timo2k »

Hallo Forum,
ich nutze seit einiger Zeit OTRS 2.4 und werde von meinen Kollegen häufiger angesprochen, ob man nicht den Kundennamen in den Listen des Agentendashboards anzeigen lassen kann (also in den Feldern Neue Tickets, Offene Tickets, etc.) - siehe auch beigefügtes Bild:
kundenname_dashboard.png
Ich habe in der

Code: Select all

AgentDashboardTicketGeneric.dtl
oberhalb von

Code: Select all

<td>$QData{"Time"}</td>
eine neue Spalte

Code: Select all

<td>$QData{"CustomerName"}</td>
eingefügt. Leider wird hier aber nichts angezeigt. Sobald ich

Code: Select all

<td>$QData{"CustomerID"}</td>
an selber Stelle eintrage, sehe ich die entsprechende Kundennummer.
Ich bräuchte allerdings den Kundennamen.

Hat jemand eine Idee, was ich noch machen muss, damit ich $QData{"CustomerName"} hier ausgeben kann?


Für Hinweise wäre ich euch dankbar.
You do not have the required permissions to view the files attached to this post.
System: OTRS 4.0.16 | CentOS 7.2 | Apache 2.4.6 | MariaDB 5.5.44 | Perl 5.16.3 | PHP 5.4.16
BIG_jan
Znuny advanced
Posts: 138
Joined: 05 Jun 2009, 11:32
Znuny Version: 3.3.8
Company: Netzlink Informationstechnik GmbH
Location: Wolfenbüttel,GER
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by BIG_jan »

in

Code: Select all

output/html/DashboardTicketGeneric.pm
musst du fast am Ende vor dem Block('ContentLargeTicketGenericRow') mit der CustomerID dir alle Daten des Customers holen und dann $Ticket{CustomerName} = $Customer{Name} machen.

Code: Select all

my %Company = $Self->{CustomerCompanyObject}->CustomercompanyGet(CustomerID => $Ticket{CustomerID});
$Ticket{CustomerName}  = $Company{CustomerCompanyName};
so oder so ähnlich, dann sollte deine Anzeige funktionieren.
Live: OTRS 3.3.8, ITSM 3.3.8, in vm
Test: otrs 3.3.8, ITSM

OS: RedHat 6.5 64Bit, Apache: 2.2.15, MySQL 5.5.38, Perl: 5.10.1, mod_Perl 2.0.4
Hischmifisch
Znuny newbie
Posts: 15
Joined: 19 Feb 2007, 12:26

Re: Kundenname in das Agenten-Dashboard

Post by Hischmifisch »

also ich kriegs nicht hin.
was genau muss ich für einen neuen Block einfügen um den besitzernamen des tickets da anzeigen zu lassen?
Danke im voraus
BIG_jan
Znuny advanced
Posts: 138
Joined: 05 Jun 2009, 11:32
Znuny Version: 3.3.8
Company: Netzlink Informationstechnik GmbH
Location: Wolfenbüttel,GER
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by BIG_jan »

wenn du den Owner des Tickets im Dashboard anzeigen möchtest, musst du in der Datei

Code: Select all

\OTRS\Kernel\Output\HTML\Standard\AgentDashboardTicketGeneric.dtl
hinter die Zeile 101 (v1.30 aus cvs) die Zeilen zwischen ##+ und ##- einfügen

Code: Select all

<td>$QData{"Time"}</td>            
##+
<td>
	<div title="$QData{"UserLastname"}">$QData{"Owner"}</div>
</td>
##-
</tr>
<!-- dtl:block:ContentLargeTicketGenericRow -->
Dann wird das Login des Besitzers in der letzten Spalte eingefügt.
Soll diese Anzeige an einer anderen Stelle stehen, dieses Stück einfach zwischen die anderen Abschnitte einfügen.
Live: OTRS 3.3.8, ITSM 3.3.8, in vm
Test: otrs 3.3.8, ITSM

OS: RedHat 6.5 64Bit, Apache: 2.2.15, MySQL 5.5.38, Perl: 5.10.1, mod_Perl 2.0.4
Hischmifisch
Znuny newbie
Posts: 15
Joined: 19 Feb 2007, 12:26

Re: Kundenname in das Agenten-Dashboard

Post by Hischmifisch »

Das mit dem Loginnamen hab ich auch schon hinbekommen.
Ich wollte aber den Vor- und Zunamen des Besitzer da stehen haben und dazu muss man sich wohl erstmal die Info in der DashboardTicketGeneric.pm in eine Variable speichern.
Leider blick ich durch das perl da nicht so richtig durch.

Weiß jemand also was genau in die DashboardTicketGeneric.pm rein muss?
BIG_jan
Znuny advanced
Posts: 138
Joined: 05 Jun 2009, 11:32
Znuny Version: 3.3.8
Company: Netzlink Informationstechnik GmbH
Location: Wolfenbüttel,GER
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by BIG_jan »

also:
um im Dashboard den vollen namen des besitzers anzeigen zu lassen muss in output\html\standard\AgentDashboardTicketGeneric.dtl (v1.9) nach Zeile 54 der Abschnitt zw ##+ und ##- eingefügt werden

Code: Select all

<td>$QData{"Time"}</td>
##+
<td><div title="$QData{"UserName"}">$QData{"Owner"}</div></td>
##-
</tr>
<dtl if ($Env{"Color"} eq "searchpassive") { $Env{"Color"} = ""; }>
in die Datei output\html\DashboardTicketGeneric.pm (v1.20) nach zeile 321 muss der Abschnitt zw ##+ und ##- eingefügt werden

Code: Select all

    Age   => $Ticket{ $Self->{Config}->{Time} },
    Space => ' ',
 );
}        
##+	
if($Ticket{OwnerID} == 1){
	$Ticket{UserName} = $Ticket{Owner};
}elsif ($Ticket{OwnerID} > 1){
	my %owner  = $Self->{UserObject}->GetUserData(User => $Ticket{Owner}, Cached => 1);
	$Ticket{UserName} = $owner{UserFirstname}.' '.$owner{UserLastname};
}
##-
$Self->{LayoutObject}->Block(
    Name => 'ContentLargeTicketGenericRow',
Dann wird nach der spalte zeit noch eine spalte 'Owner' angefügt. (kompletter name wird bei mouseover angezeigt)
Live: OTRS 3.3.8, ITSM 3.3.8, in vm
Test: otrs 3.3.8, ITSM

OS: RedHat 6.5 64Bit, Apache: 2.2.15, MySQL 5.5.38, Perl: 5.10.1, mod_Perl 2.0.4
Hischmifisch
Znuny newbie
Posts: 15
Joined: 19 Feb 2007, 12:26

Re: Kundenname in das Agenten-Dashboard

Post by Hischmifisch »

Super! Danke! :D
ackerland
Znuny newbie
Posts: 54
Joined: 12 Aug 2010, 15:10
Znuny Version: 2.4

Re: Kundenname in das Agenten-Dashboard

Post by ackerland »

BIG_jan wrote:in

Code: Select all

output/html/DashboardTicketGeneric.pm
musst du fast am Ende vor dem Block('ContentLargeTicketGenericRow') mit der CustomerID dir alle Daten des Customers holen und dann $Ticket{CustomerName} = $Customer{Name} machen.

Code: Select all

my %Company = $Self->{CustomerCompanyObject}->CustomercompanyGet(CustomerID => $Ticket{CustomerID});
$Ticket{CustomerName}  = $Company{CustomerCompanyName};
so oder so ähnlich, dann sollte deine Anzeige funktionieren.

Hi, BIG_jan,

das habe ich in DashboardTicketGeneric.pm durch probiert, aber leider erscheint Kundenname nicht... aber auch keine Fehlmeldung..

habe ich in ../HTML/Standard/AgentDashboardTicketGeneric.dtl folgende Code hinzugefügt,

Code: Select all

 <td>$QData{"CustomerName"}</td>
warum ist Der Kundenname nicht angezeigt ? wo ist das Problem? ich finde es nicht.

wenn Sie mir noch weiter helfen können, würde mich sehr freuen...

danke im Voraus.

Maomao
BIG_jan
Znuny advanced
Posts: 138
Joined: 05 Jun 2009, 11:32
Znuny Version: 3.3.8
Company: Netzlink Informationstechnik GmbH
Location: Wolfenbüttel,GER
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by BIG_jan »

Bei mir kam der fehler, dass er die Methode 'CustomerCompanyGet' nicht finden konnte. hier die Erweiterung, mit der es funzt.

oben in die DashboardTicketGeneric.pm muss bei den 'use' noch folgendes hinzugefügt werden:

Code: Select all

use Kernel::System::CustomerCompany;
etwas weiter unten, unter die Object-forschleife (get needed objects) muss noch:

Code: Select all

$Self->{CustomerCompanyObject} = Kernel::System::CustomerCompany->new(%Param);
nun kann man sich wie beschrieben unten dien Kundennamen holen und anzeigen lassen.
Live: OTRS 3.3.8, ITSM 3.3.8, in vm
Test: otrs 3.3.8, ITSM

OS: RedHat 6.5 64Bit, Apache: 2.2.15, MySQL 5.5.38, Perl: 5.10.1, mod_Perl 2.0.4
ackerland
Znuny newbie
Posts: 54
Joined: 12 Aug 2010, 15:10
Znuny Version: 2.4

Re: Kundenname in das Agenten-Dashboard

Post by ackerland »

BIG_jan wrote:Bei mir kam der fehler, dass er die Methode 'CustomerCompanyGet' nicht finden konnte. hier die Erweiterung, mit der es funzt.

oben in die DashboardTicketGeneric.pm muss bei den 'use' noch folgendes hinzugefügt werden:

Code: Select all

use Kernel::System::CustomerCompany;
etwas weiter unten, unter die Object-forschleife (get needed objects) muss noch:

Code: Select all

$Self->{CustomerCompanyObject} = Kernel::System::CustomerCompany->new(%Param);
nun kann man sich wie beschrieben unten dien Kundennamen holen und anzeigen lassen.
Hi BIG_jan,

die beide Zeile habe ich schon in richtigen Positionen hinzugefühgt, aber leider funktioniert es doch noch nicht. keinen Kundennummer in Dashboard angezeigt.....????

in DashboardTicketGeneric.dtl habe ich auch entsprechende Zeile geschrieben.

Code: Select all

 <td>$QData{"CustomerName"}</td>
warum geht es nicht???? hier "CustomerName" als QData aufgeruft, ist richtig , CustomerName in $Ticket{CustomerName} habe selb neue definiert. ist das richtig, ne? was liegst das Problem eigentlich?

Danke sehr, dass du mir sofort geantwortet.

Mao
BIG_jan
Znuny advanced
Posts: 138
Joined: 05 Jun 2009, 11:32
Znuny Version: 3.3.8
Company: Netzlink Informationstechnik GmbH
Location: Wolfenbüttel,GER
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by BIG_jan »

an welcher stelle hast du denn in der 'Agent'DashboardTicketGeneric.dtl das $QData{"CustomerName"} eingefügt?
bei mir gehts.
als anhang mal unsere dateien, kannst dir ja herausziehen was du brauchst.
markierung ###+ bis ###-
You do not have the required permissions to view the files attached to this post.
Live: OTRS 3.3.8, ITSM 3.3.8, in vm
Test: otrs 3.3.8, ITSM

OS: RedHat 6.5 64Bit, Apache: 2.2.15, MySQL 5.5.38, Perl: 5.10.1, mod_Perl 2.0.4
ackerland
Znuny newbie
Posts: 54
Joined: 12 Aug 2010, 15:10
Znuny Version: 2.4

Re: Kundenname in das Agenten-Dashboard

Post by ackerland »

BIG_jan wrote:an welcher stelle hast du denn in der 'Agent'DashboardTicketGeneric.dtl das $QData{"CustomerName"} eingefügt?
bei mir gehts.
als anhang mal unsere dateien, kannst dir ja herausziehen was du brauchst.
markierung ###+ bis ###-

BIG_jan,

sry, dass ich erst mal so später zurückschreibe. Hatte paar Tage frei genommen. Habe deine Dateien durchgekucht und mit den benötigten Zeilen eine zu einer korregiert. Alles ist identisch, gleiche geschrieben, in gleichen Zeilen hinzugefügt. Aber funktioniert es bei mir immer nicht. keinen Kundenname in "Daschboard" erscheint.

bei mir fehltete nur

Code: Select all

	$Self->{LogObject}->Log(Priority => 'info', Message => $Ticket{CustomerName});
diese Zeile habe ich nun auch nachträglich hinzugefügt, funktioniert es aber nicht..... bin ahnungslos........warum das denn???? kannst du mal meine Dateien überprüfen? vielen Dank!

meine Dateien ist hier =>
You do not have the required permissions to view the files attached to this post.
BIG_jan
Znuny advanced
Posts: 138
Joined: 05 Jun 2009, 11:32
Znuny Version: 3.3.8
Company: Netzlink Informationstechnik GmbH
Location: Wolfenbüttel,GER
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by BIG_jan »

Geht bei mir, er zeigt freundlich alle Daten an.
Was schreibt er denn ins Log? Findet er dort die CustomerNamen oder auch dort nicht?

Lass dir mal die CustomerID mit ausgeben, aus der versucht er ja den Namen zu holen.

Code: Select all

$Self->{LogObject}->Log(Priority => 'info', Message => "name: $Ticket{CustomerName}, id: $Ticket{CustomerID}");
Irgendwo kann man auch in der Sysconfig das CustomerCompany-Feature einschalten. Dann hat man beim Kunden anlegen ein Dropdown der Companys.
Kann sein, dass das aktiv sein muss, finde es aber gerade nicht.
Live: OTRS 3.3.8, ITSM 3.3.8, in vm
Test: otrs 3.3.8, ITSM

OS: RedHat 6.5 64Bit, Apache: 2.2.15, MySQL 5.5.38, Perl: 5.10.1, mod_Perl 2.0.4
ackerland
Znuny newbie
Posts: 54
Joined: 12 Aug 2010, 15:10
Znuny Version: 2.4

Re: Kundenname in das Agenten-Dashboard

Post by ackerland »

BIG_jan wrote:Geht bei mir, er zeigt freundlich alle Daten an.
Was schreibt er denn ins Log? Findet er dort die CustomerNamen oder auch dort nicht?

Lass dir mal die CustomerID mit ausgeben, aus der versucht er ja den Namen zu holen.

Code: Select all

$Self->{LogObject}->Log(Priority => 'info', Message => "name: $Ticket{CustomerName}, id: $Ticket{CustomerID}");
Irgendwo kann man auch in der Sysconfig das CustomerCompany-Feature einschalten. Dann hat man beim Kunden anlegen ein Dropdown der Companys.
Kann sein, dass das aktiv sein muss, finde es aber gerade nicht.

Hi BIG_jan,

wo ist Log? in welcher Ordner kann man Log finden? :shock: habe nie mit Log gemacht!

Gruss
BIG_jan
Znuny advanced
Posts: 138
Joined: 05 Jun 2009, 11:32
Znuny Version: 3.3.8
Company: Netzlink Informationstechnik GmbH
Location: Wolfenbüttel,GER
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by BIG_jan »

Das Logfile sollte unter /tmp/otrs.log liegen
wenn nicht, schau mal in der sysconfig unter 'LogModule::LogFile' nach. da kann man den ordner einstellen.

in linux kannst du dir dann im betrieb mit 'tail -f /tmp/otrs.log' alle+neuen einträge anschauen, die da so kommen.

--
oder unter Admin->Sonstigs->System Log, da zeigt er das Log in der Web-Oberfläche an.
--
Live: OTRS 3.3.8, ITSM 3.3.8, in vm
Test: otrs 3.3.8, ITSM

OS: RedHat 6.5 64Bit, Apache: 2.2.15, MySQL 5.5.38, Perl: 5.10.1, mod_Perl 2.0.4
ackerland
Znuny newbie
Posts: 54
Joined: 12 Aug 2010, 15:10
Znuny Version: 2.4

Re: Kundenname in das Agenten-Dashboard

Post by ackerland »

BIG_jan wrote:Das Logfile sollte unter /tmp/otrs.log liegen
wenn nicht, schau mal in der sysconfig unter 'LogModule::LogFile' nach. da kann man den ordner einstellen.

in linux kannst du dir dann im betrieb mit 'tail -f /tmp/otrs.log' alle+neuen einträge anschauen, die da so kommen.

--
oder unter Admin->Sonstigs->System Log, da zeigt er das Log in der Web-Oberfläche an.
--
Hi BIG_jan,

danke dir!

habe gerade unter Admin->Sonstiges->System Log gesehen. CustomerID wurde angezeigt aber CustomerName nicht.....
BIG_jan
Znuny advanced
Posts: 138
Joined: 05 Jun 2009, 11:32
Znuny Version: 3.3.8
Company: Netzlink Informationstechnik GmbH
Location: Wolfenbüttel,GER
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by BIG_jan »

Führ mal unter Admin->Sonstiges->SQL Box folgendes aus:

Code: Select all

SELECT * FROM customer_company where customer_id = 'deine CustomerID''
Normalerweise sollt er nun eine Zeile mit den Daten des Kunden anzeigen. Die zweite Spalte ist der Kundenname
Live: OTRS 3.3.8, ITSM 3.3.8, in vm
Test: otrs 3.3.8, ITSM

OS: RedHat 6.5 64Bit, Apache: 2.2.15, MySQL 5.5.38, Perl: 5.10.1, mod_Perl 2.0.4
ackerland
Znuny newbie
Posts: 54
Joined: 12 Aug 2010, 15:10
Znuny Version: 2.4

Re: Kundenname in das Agenten-Dashboard

Post by ackerland »

BIG_jan wrote:Führ mal unter Admin->Sonstiges->SQL Box folgendes aus:

Code: Select all

SELECT * FROM customer_company where customer_id = 'deine CustomerID''
Normalerweise sollt er nun eine Zeile mit den Daten des Kunden anzeigen. Die zweite Spalte ist der Kundenname

Hi BIG_jan,

1. habe die Code unter Admin->Sonstiges->SQL Box geschrieben. Aber dort wurde keine Zeile angezeigt. Und Kundenname wurd auch nicht in Dashboard erscheint.

2. Und habe ich wieder eine neue Problem bei mir gefunden. Als ich als Adminstrator was in Admin->Sonstiges->SQL Box für Kundenname diese Problem geändert, wurde das Button "TESS", den ich in "AgentTicketzoom" Frontend ein erstellt habe um mit extenem System TESS zu verbinden, wieder auch verschwunden. dann muss ich noch mal in Datei /otrs/Kernel/Config/Files/ZZZAAuto.pm die untere Zeilen für das hinzufügen:

Code: Select all

$Self->{'Frontend::Module'}->{'AgentTicketTESS'} =  {
  'Description' => 'Ticket TESS Schnittstelle',
  'NavBarName' => 'Ticket',
  'Title' => 'TESS'
};
warum denn ? habe ich irgendwie mit config nicht richtig gemacht?

p.s: warum ist dein Logo ein chinesisches Zeichen? ist das dein Name? :o
BIG_jan
Znuny advanced
Posts: 138
Joined: 05 Jun 2009, 11:32
Znuny Version: 3.3.8
Company: Netzlink Informationstechnik GmbH
Location: Wolfenbüttel,GER
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by BIG_jan »

aloha
1. Such mal unter Admin->Kunden-Firma (CustomerCompany) nach sternchen (*). Wenn er da nichts findet, oder die Namen leer sind, kann er auf dem Dashboard nix anzeigen, weil da nix zum Anzeigen ist. Anscheinend erhaltet Ihr dann eure Kundeninfos von einer anderen Stelle.

2. Ich meine die Config (welche in der zzzauto.pm gespeichert wird) wird nach jeder Configveränderung neu geladen und neu erstellt. Daher werden manuelle Änderungen überschrieben. Erstell doch ein xml-File in kernel/Config/Files, dann wird das jedesmal mitgeladen.

ps: mein gedankengang: 'wie wo was, passt irgendow jetzt der charset nicht?? ooh, achso'
jup ist es, (http://www.chinalink.de/sprache/zeichen ... 0978.shtml)
Live: OTRS 3.3.8, ITSM 3.3.8, in vm
Test: otrs 3.3.8, ITSM

OS: RedHat 6.5 64Bit, Apache: 2.2.15, MySQL 5.5.38, Perl: 5.10.1, mod_Perl 2.0.4
ackerland
Znuny newbie
Posts: 54
Joined: 12 Aug 2010, 15:10
Znuny Version: 2.4

Re: Kundenname in das Agenten-Dashboard

Post by ackerland »

BIG_jan wrote:aloha
1. Such mal unter Admin->Kunden-Firma (CustomerCompany) nach sternchen (*). Wenn er da nichts findet, oder die Namen leer sind, kann er auf dem Dashboard nix anzeigen, weil da nix zum Anzeigen ist. Anscheinend erhaltet Ihr dann eure Kundeninfos von einer anderen Stelle.

2. Ich meine die Config (welche in der zzzauto.pm gespeichert wird) wird nach jeder Configveränderung neu geladen und neu erstellt. Daher werden manuelle Änderungen überschrieben. Erstell doch ein xml-File in kernel/Config/Files, dann wird das jedesmal mitgeladen.

ps: mein gedankengang: 'wie wo was, passt irgendow jetzt der charset nicht?? ooh, achso'
jup ist es, (http://www.chinalink.de/sprache/zeichen ... 0978.shtml)

Hi BIG_jan,

1. vielen vielen Dank. Du hast Recht, da unter Admin->Kunden-Firma hat bei mir gar keine Informationen zu Kunden Firman angelegt. Das war ein sehr dummer Fehler finde ich . :( zwar habe ich mit Systemeinrichtung und Configuration des Systems nichts gemacht. Das hat viel Zeit verbracht. Aber schön, jetzt erscheint Firma Name schon erfolgreich in Dashboard. :D

2. wie meinst du eine xml-File Datei in Kernel/Config/Files zu erstellen? so ähnliches habe ich nie gemacht. davon habe ich keine Ahnung.

eigentlich habe ich diesen Verknüpfung in "AgentTicketZoom.pm" Modul erstellt (sieh. unter Bild). Wenn Config geändert würde, geht dies Button weg. wie soll ich eine extra xml Datei dafür schreiben? unter ../config/Files gibt es 2 .xml Dateien Framework.xml und ticket.xml. die habe durchgeguckt, keine ahnung wie ich anfangen soll.

p.s: mach keinen Gedanke daran, war nur meine Neugierde. 8) doch ist das Zeichen richtig, habe aber doch noch eine bessere Ideal, wenn Jan dein Vorname ist.

schönes WE
Mao
You do not have the required permissions to view the files attached to this post.
BIG_jan
Znuny advanced
Posts: 138
Joined: 05 Jun 2009, 11:32
Znuny Version: 3.3.8
Company: Netzlink Informationstechnik GmbH
Location: Wolfenbüttel,GER
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by BIG_jan »

1. es ist ja meistens nur ein kleiner haken, den man nicht findet

2. du brauchst kein xml zu schreiben, sondern das, was du schon in der zzzauto.pm stehen hast, in die kernel\Config.pm zu schreiben.
Dort wird es auch nicht überschrieben, wenn die System-Config sich verändert.

Die ZZZAuto und die ZZZAAuto Dateien sind flüchtig, d.h. werden immer neu erstellt, wenn du Änderungen unter Admin->SysConfig vornimmst.
http://lists.otrs.org/pipermail/otrs-de ... 04634.html
Live: OTRS 3.3.8, ITSM 3.3.8, in vm
Test: otrs 3.3.8, ITSM

OS: RedHat 6.5 64Bit, Apache: 2.2.15, MySQL 5.5.38, Perl: 5.10.1, mod_Perl 2.0.4
ackerland
Znuny newbie
Posts: 54
Joined: 12 Aug 2010, 15:10
Znuny Version: 2.4

Re: Kundenname in das Agenten-Dashboard

Post by ackerland »

BIG_jan wrote:1. es ist ja meistens nur ein kleiner haken, den man nicht findet

2. du brauchst kein xml zu schreiben, sondern das, was du schon in der zzzauto.pm stehen hast, in die kernel\Config.pm zu schreiben.
Dort wird es auch nicht überschrieben, wenn die System-Config sich verändert.

Die ZZZAuto und die ZZZAAuto Dateien sind flüchtig, d.h. werden immer neu erstellt, wenn du Änderungen unter Admin->SysConfig vornimmst.
http://lists.otrs.org/pipermail/otrs-de ... 04634.html
Hallo BIG_jan,

zwischendurch habe ich mit einem anderen Problem beschäftigt. Ich komme Heute wieder auf dies Config-Problem zurück.

Das Config-Problem der Verknüfung wurde schon aufgehoben, genau wie du sagst, habe ich die neue Zeile in Config.pm reingeschrieben, dann mit Änderungen unter Admin->SysConfig und Änderung der Config in QuelleDateien getestet, läuft!!! vielen Dank!

Ich möchte mich noch mit einer neuen Bitte an dich Wenden.
über diesen neuen Modul "AgentTicketTESS" wurde auch alle Projektnummern, die zu gleichen Kunden gehört, in OTRS System zurückgeliefert, wird dann eine davon für das aktuelle Ticket ausgewählt und in OTRS Ticket Datenbank gespeichert. Ich habe mit Array, Hash, HashRef und noch OptionStrgHashRef() Option bearbeitet, aber das läuft nicht ganz. Um genau zu kucken, was Problem sich darin liegt. habe mit Perl Modul "Dumper" einen TESS.txt erstellt. Darin sieht man unter:

Code: Select all

<a href="/otrs/index.pl?Action=AgentCalendarSmall&Prefix=TicketFreeTime2" onmouseover="window.status=\'Kalender\'; return true;" onmouseout="window.status=\'\';" onClick="window.open(\'\', \'calendar\', \'toolbar=no,location=no,status=yes,scrollbars=yes,resizable=yes,width=240,height=220,left=500,top=450\');" target="calendar"><img border="0" src="/otrs-web/images/Standard//calendar-small.png"></a>',
          'TicketFreeKeyField7' => '<input type="text" name="TicketFreeKey7" value="" size="18"/>',
          'Queue' => 'Postmaster',
          'TicketFreeText13' => undef,
          'TicketFreeText5' => undef,
          'ArticleType' => 'email-external',
          'TicketFreeTextField16' => '<input type="text" name="TicketFreeText16" value="" size="30"/><font color="red" size="-2">$Text{"$Data{"TicketFreeTextField16 invalid"}"}</font>',
          'TicketFreeTextField14' => '<input type="text" name="TicketFreeText14" value="" size="30"/><font color="red" size="-2">$Text{"$Data{"TicketFreeTextField14 invalid"}"}</font>',
        'ProjektNummer' => '<select id="ProjektNuummerID" name="ProjektNuummerID"   >
  <option value="Kernel::Modules::AgentTicketTESS=HASH(0xb9f41744)">M08-08</option>
  <option value="M09-08">M09-09</option>
</select><a id="AJAXImageProjektNuummerID"></a>
hier sollte sich die Projektnummer immer zwischen <option></option> liegen, aber hier sieht mann schon nicht. Das Projektnummer mit "M09-08" liegt sich hier hinter der value= und in erste zeile
<option value="Kernel::Modules::AgentTicketTESS=HASH(0xb9f41744)">M08-08</option>

Was hinter "value=" steht, finde ich sehr komisch.

In "AgentTicketTESS.pm" Modul habe ich so einen Array @Projektnummer =@_ für Projekt Nummer definiert:

Code: Select all

my %ProjektNR = ();
my @Projektnummer=@_;

    foreach my $projectlist ($MACProjektList =~ /<ProjectList>/gm)
      {     
               $ProjektNR{nummer} = $Nummer;
               $ProjektNR{status} = $status;

    	push (@Projektnummer, $ProjektNR{nummer}) if ($ProjektNR{status} eq 'Order');
     }     
	# $Data{ProjektNummer} => $Projektnummer[2];
	my %Projektnummer = @Projektnummer;

$Data{ProjektNummer} = $Self->{LayoutObject}->OptionStrgHashRef(
		Data => \%Projektnummer,
		Name => 'ProjektNummerID',
    );

$Data{ProjektNummer} => $Projektnummer[2]; habe ich nachgekuckt.
die Inhält von Array @Projektnummer ist:
$Projektnummer[0] = Kernel::Modules::AgentTicketTESS=HASH(0xb9f41744)
$Projektnummer[1] = MAC08-08
$Projektnummer[2] = MAC09-08
$Projektnummer[3] = MAC09-09

warum hier ist das Inhalt von $Projektnummer[0] so komisch?

in Frontend "AgentTicketTESS.pm" sieht diese Button ProjektNR wie unter aus:
ProjektNummer_Button.JPG
hier wurde nicht alle Projektnummer im diesen Button angezeigt. Das Problem passiert mit Array und Hash.

Die 2. Schritt sollte die erfolgreich ausgewählte Projektnummer in OTRS Ticket Datanbaken gespeichert werden, wie kann man das machen? wie könnte die benötige Projektnummer ausgewählt werden?

Kannst Du mir noch weiter hilfreiche Anweisung zu diesem Problem geben? das Connect zwischen verschiedenen OTRS Module kenne ich nicht so gut aus.

Ich bedanke mich im Voraus und wünsche Dir ein ganz schönes Wochenede!

Mao
You do not have the required permissions to view the files attached to this post.
ackerland
Znuny newbie
Posts: 54
Joined: 12 Aug 2010, 15:10
Znuny Version: 2.4

Re: Kundenname in das Agenten-Dashboard

Post by ackerland »

Hallo BIG_jan,

das Problem über Projekt nummer in Frontend Moduel AgentticketTESS.pm Module richtig anzuzeigen ist schon gelöscht. da habe ich Projektnummer in Data Array zugewiesen. dazu habe ich noch eine abzählen zahl $i in Array zugewiesen und die count die Anzahl der nummer immer sieht unter:

Code: Select all

push(@{$Data{Projektnummer}}, $i);
push(@{$Data{Projektnummer}}, $ProjektNR{nummer});
$i++;
dann habe den Array wieder in eine Hash %Projektnr zugewiesen um später mit HashRef bearteiten zu können.

in sub Routine Sub _Mask{} habe ich mit HashRef String bearbeitet um Projektnummer in Frontend anzuzeigen:

Code: Select all

#++
#ProjektNummer String in "AgentTicketTess.pm" anzuzeigen
    $Param{ProjektNrStrg} = $Self->{LayoutObject}->OptionStrgHashRef(
		Data => $Param{Projektnr},
		Name => 'ProjektNummerID',
    );
#--
das Ergebnis von %Param sieht unter aus:

Code: Select all

 'Projektnr' => {
                           '1' => 'M08-08',
                           '3' => 'M09-09',
                           '2' => 'M09-08'
                         },

Code: Select all

'ProjektNrStrg' => '<select id="ProjektNummerID" name="ProjektNummerID"   >
  <option value="1">M08-08</option>
  <option value="2">M09-08</option>
  <option value="3">M09-09</option>
</select><a id="AJAXImageProjektNummerID"></a>
jetzte habe ich wieder neue Frage.

1. mit welcher Anweisung kann man eine Projektnummer von drei auswählen und weiter in OTRS Datenbank zur entsprechenden Ticketnummer speichern?


in OTRS mysql Datenbank habe ich ein neue Table "Ticket_projektNr" mit columen id und projektname erzeugt. habe mit

Code: Select all

#++
    # Projekt Nummer in Datenbank speichern
    $Self->{DBObject}->Do(
    	SQL =>'INSERT INTO ticket_projektNr (id,name) VALUES(?,?)',
	Bind=>['1',\@{$Data{werte}}],
    );
#--

probiert, aber nix passiert. dort in Table "Ticket_projektNr" nix gespeichert!!!!


kannst du mir weiter helfen? wie kann man für Projektnummer select bearbeiten und die selected projekt nummer in OTRS Datenbank zur entsprechenden Ticket nummer speichern?

vielen Dank! schönes WE
Jobacham
Znuny newbie
Posts: 15
Joined: 23 Nov 2010, 10:54
Znuny Version: 3.0.2

Re: Kundenname in das Agenten-Dashboard

Post by Jobacham »

Schönen guten Tag,..

Ich nutze die OTRS 3.0.2 Version.

Gibt es eine Möglichkeit die im Eigentlichen Thread behandelten Funktionen ("Kunden-Firma Name in Agenten/Kunden Übersicht anzeigen")
zu nutzen?

Ich habe die von Big_jan beswchriebenen Änderungen in den Files vorgenommen, bekomme aber trotzdem die "GetCostumer...." Fehlermeldung die im Forum auch schon auftauchte.


Bitte helft mir!!!!


Gruß Jo
OS: Debian 5.0
DB: PostgreSQL
OTRS 3.0.3
ackerland
Znuny newbie
Posts: 54
Joined: 12 Aug 2010, 15:10
Znuny Version: 2.4

Re: Kundenname in das Agenten-Dashboard

Post by ackerland »

Jobacham wrote:Schönen guten Tag,..

Ich nutze die OTRS 3.0.2 Version.

Gibt es eine Möglichkeit die im Eigentlichen Thread behandelten Funktionen ("Kunden-Firma Name in Agenten/Kunden Übersicht anzeigen")
zu nutzen?

Ich habe die von Big_jan beswchriebenen Änderungen in den Files vorgenommen, bekomme aber trotzdem die "GetCostumer...." Fehlermeldung die im Forum auch schon auftauchte.


Bitte helft mir!!!!


Gruß Jo
hi,

kannst du mla detailliert beschreiben? in welchem Agenten/Kunden Modul möchtest du Kunden-Firma anzeigen lassen? ich nutze momentan OTRS Version 2.7..
Jobacham
Znuny newbie
Posts: 15
Joined: 23 Nov 2010, 10:54
Znuny Version: 3.0.2

Re: Kundenname in das Agenten-Dashboard

Post by Jobacham »

Ist im Anhang gut ersichtlich!!

Gruß Jo
You do not have the required permissions to view the files attached to this post.
OS: Debian 5.0
DB: PostgreSQL
OTRS 3.0.3
BIG_jan
Znuny advanced
Posts: 138
Joined: 05 Jun 2009, 11:32
Znuny Version: 3.3.8
Company: Netzlink Informationstechnik GmbH
Location: Wolfenbüttel,GER
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by BIG_jan »

Hi
In deinem 'Ticket-Ansicht'-Screenshot wundert mich, dass zwar die Kundennummern angezeigt wird, aber keine weitere Kundeninfo.
Ist der Kunde im System hinterlegt, oder ist das ein mailticket, welches an eine beliebige adresse verschickt werden kann.
Live: OTRS 3.3.8, ITSM 3.3.8, in vm
Test: otrs 3.3.8, ITSM

OS: RedHat 6.5 64Bit, Apache: 2.2.15, MySQL 5.5.38, Perl: 5.10.1, mod_Perl 2.0.4
Jobacham
Znuny newbie
Posts: 15
Joined: 23 Nov 2010, 10:54
Znuny Version: 3.0.2

Re: Kundenname in das Agenten-Dashboard

Post by Jobacham »

Dieses Ticket ist eine Ausnahme!

Bei allen anderen werden Vorname, Nachname,Benutzername, Email und Telefon angezeigt!

Nur leider die "Kunden-Firma" --> der Firmenname nicht!

Soll ich noch weitere Screenshots einstellen oder wurde klar, was ich gerne hätte?!?!

Gruß Jo
OS: Debian 5.0
DB: PostgreSQL
OTRS 3.0.3
ackerland
Znuny newbie
Posts: 54
Joined: 12 Aug 2010, 15:10
Znuny Version: 2.4

Re: Kundenname in das Agenten-Dashboard

Post by ackerland »

Jobacham wrote:Dieses Ticket ist eine Ausnahme!

Bei allen anderen werden Vorname, Nachname,Benutzername, Email und Telefon angezeigt!

Nur leider die "Kunden-Firma" --> der Firmenname nicht!

Soll ich noch weitere Screenshots einstellen oder wurde klar, was ich gerne hätte?!?!

Gruß Jo
Hi,

vllt hast du den gleiche Fehler wie ich gemacht habe.

was unter "Kunden-info" wurden nur in "Kunden-Benutzer" eingegeben aber nicht in "Kunden-Firma". vllt. guckst du mal unter
Admin-> Kunden-Firma nach deine KundenID #10750, ob dort die Infos zu dieser Firma eingegeben sind? oder nicht.

Gruß
Mao
Jobacham
Znuny newbie
Posts: 15
Joined: 23 Nov 2010, 10:54
Znuny Version: 3.0.2

Re: Kundenname in das Agenten-Dashboard

Post by Jobacham »

Das ist nicht mein Anliegen!

Ich will nur, dass der Kundenname angezeigt wird.

Kunden-IDs sind gepflegt!

Das war das Erste nachdem ich geschaut habe.

Nur die zu bearbeitenden Files unterscheiden sich schon grundsätzlich,sie sind größer als die, die Big_jan hier eingestellt hat.

Aber danke für die Antworten!

Hat noch jemand eine Idee?!?!
OS: Debian 5.0
DB: PostgreSQL
OTRS 3.0.3
Jobacham
Znuny newbie
Posts: 15
Joined: 23 Nov 2010, 10:54
Znuny Version: 3.0.2

Re: Kundenname in das Agenten-Dashboard

Post by Jobacham »

BIG_jan wrote:in

Code: Select all

output/html/DashboardTicketGeneric.pm
musst du fast am Ende vor dem Block('ContentLargeTicketGenericRow') mit der CustomerID dir alle Daten des Customers holen und dann $Ticket{CustomerName} = $Customer{Name} machen.

Code: Select all

my %Company = $Self->{CustomerCompanyObject}->CustomercompanyGet(CustomerID => $Ticket{CustomerID});
$Ticket{CustomerName}  = $Company{CustomerCompanyName};
so oder so ähnlich, dann sollte deine Anzeige funktionieren.




Hab's bei mir jetzt gerade hinbekommen.

War natürlich nur ein banaler Fehler!!!

Anstatt: CustomercompanyGet
muss: CustomerCompanyGet
stehen!!! Man beachte das große "C" bei Company!!!


Danke für Alles !!


Gruß Jo
OS: Debian 5.0
DB: PostgreSQL
OTRS 3.0.3
mrbit
Znuny newbie
Posts: 3
Joined: 02 Dec 2010, 09:23
Znuny Version: 3

Re: Kundenname in das Agenten-Dashboard

Post by mrbit »

Wie muss ich das genau reinkopieren?

ist das so richtig?

Code: Select all

        # create human age
        if ( $Self->{Config}->{Time} ne 'Age' ) {
            $Ticket{Time} = $Self->{LayoutObject}->CustomerAgeInHours(
                Age   => $Ticket{ $Self->{Config}->{Time} },
                Space => ' ',
            );
        }
        else {
            $Ticket{Time} = $Self->{LayoutObject}->CustomerAge(
                Age   => $Ticket{ $Self->{Config}->{Time} },
                Space => ' ',
            );
        }

my %Company = $Self->{CustomerCompanyObject}->CustomerCompanyGet(CustomerID => $Ticket{CustomerID});
$Ticket{CustomerName}  = $Company{CustomerCompanyName
};


        # show ticket
        $Self->{LayoutObject}->Block(
            Name => 'ContentLargeTicketGenericRow',
            Data => \%Ticket,
        );

        # show ticket flags
        my @TicketMetaItems = $Self->{LayoutObject}->TicketMetaItems(
            Ticket => \%Ticket,
ackerland
Znuny newbie
Posts: 54
Joined: 12 Aug 2010, 15:10
Znuny Version: 2.4

Re: Kundenname in das Agenten-Dashboard

Post by ackerland »

mrbit wrote:Wie muss ich das genau reinkopieren?

ist das so richtig?

Code: Select all

        # create human age
        if ( $Self->{Config}->{Time} ne 'Age' ) {
            $Ticket{Time} = $Self->{LayoutObject}->CustomerAgeInHours(
                Age   => $Ticket{ $Self->{Config}->{Time} },
                Space => ' ',
            );
        }
        else {
            $Ticket{Time} = $Self->{LayoutObject}->CustomerAge(
                Age   => $Ticket{ $Self->{Config}->{Time} },
                Space => ' ',
            );
        }

my %Company = $Self->{CustomerCompanyObject}->CustomerCompanyGet(CustomerID => $Ticket{CustomerID});
$Ticket{CustomerName}  = $Company{CustomerCompanyName
};


        # show ticket
        $Self->{LayoutObject}->Block(
            Name => 'ContentLargeTicketGenericRow',
            Data => \%Ticket,
        );

        # show ticket flags
        my @TicketMetaItems = $Self->{LayoutObject}->TicketMetaItems(
            Ticket => \%Ticket,

richtig!!!
mrbit
Znuny newbie
Posts: 3
Joined: 02 Dec 2010, 09:23
Znuny Version: 3

Re: Kundenname in das Agenten-Dashboard

Post by mrbit »

dann ist bei mir alles weiß. Oben steht nur das Update für die 3.03 Version und der Rest ist leer.

hier mal meine ganze Datei:

Code: Select all

# --
# Kernel/Output/HTML/DashboardTicketGeneric.pm
# Copyright (C) 2001-2010 xxx, http://otrs.org/
# --
# $Id: DashboardTicketGeneric.pm,v 1.35 2010/11/04 14:48:13 martin Exp $
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (AGPL). If you
# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
# --

package Kernel::Output::HTML::DashboardTicketGeneric;

use strict;
use warnings;

use vars qw($VERSION);
$VERSION = qw($Revision: 1.35 $) [1];

sub new {
    my ( $Type, %Param ) = @_;

    # allocate new hash for object
    my $Self = {%Param};
    bless( $Self, $Type );

    # get needed objects
    for (
        qw(Config Name ConfigObject LogObject DBObject LayoutObject ParamObject TicketObject UserID)
        )
    {
        die "Got no $_!" if ( !$Self->{$_} );
    }

    # get current filter
    my $Name = $Self->{ParamObject}->GetParam( Param => 'Name' ) || '';
    my $PreferencesKey = 'UserDashboardTicketGenericFilter' . $Self->{Name};
    if ( $Self->{Name} eq $Name ) {
        $Self->{Filter} = $Self->{ParamObject}->GetParam( Param => 'Filter' ) || '';
    }

    # remember filter
    if ( $Self->{Filter} ) {

        # update ssession
        $Self->{SessionObject}->UpdateSessionID(
            SessionID => $Self->{SessionID},
            Key       => $PreferencesKey,
            Value     => $Self->{Filter},
        );

        # update preferences
        if ( !$Self->{ConfigObject}->Get('DemoSystem') ) {
            $Self->{UserObject}->SetPreferences(
                UserID => $Self->{UserID},
                Key    => $PreferencesKey,
                Value  => $Self->{Filter},
            );
        }
    }

    if ( !$Self->{Filter} ) {
        $Self->{Filter} = $Self->{$PreferencesKey} || $Self->{Config}->{Filter} || 'All';
    }

    $Self->{PrefKey} = 'UserDashboardPref' . $Self->{Name} . '-Shown';

    $Self->{PageShown} = $Self->{LayoutObject}->{ $Self->{PrefKey} } || $Self->{Config}->{Limit};

    $Self->{StartHit} = int( $Self->{ParamObject}->GetParam( Param => 'StartHit' ) || 1 );

    $Self->{CacheKey}
        = $Self->{Name} . '-'
        . $Self->{PageShown} . '-'
        . $Self->{StartHit} . '-'
        . $Self->{UserID};

    return $Self;
}

sub Preferences {
    my ( $Self, %Param ) = @_;

    my @Params = (
        {
            Desc  => 'Shown Tickets',
            Name  => $Self->{PrefKey},
            Block => 'Option',

            #            Block => 'Input',
            Data => {
                5  => ' 5',
                10 => '10',
                15 => '15',
                20 => '20',
                25 => '25',
            },
            SelectedID => $Self->{PageShown},
        },
    );

    return @Params;
}

sub Config {
    my ( $Self, %Param ) = @_;

    # check if frontend module of link is used
    if ( $Self->{Config}->{Link} && $Self->{Config}->{Link} =~ /Action=(.+?)(&.+?|)$/ ) {
        my $Action = $1;
        if ( !$Self->{ConfigObject}->Get('Frontend::Module')->{$Action} ) {
            $Self->{Config}->{Link} = '';
        }
    }

    return (
        %{ $Self->{Config} },

        # remember, do not allow to use page cache
        # (it's not working because of internal filter)
        CacheTTL => undef,
        CacheKey => undef,
    );
}

sub Run {
    my ( $Self, %Param ) = @_;

    # get all search base attributes
    my %TicketSearch;
    my @Params = split /;/, $Self->{Config}->{Attributes};
    for my $String (@Params) {
        next if !$String;
        my ( $Key, $Value ) = split /=/, $String;

        if ( $Key eq 'StateType' ) {
            push @{ $TicketSearch{$Key} }, $Value;
        }
        elsif ( !defined $TicketSearch{$Key} ) {
            $TicketSearch{$Key} = $Value;
        }
        elsif ( !ref $TicketSearch{$Key} ) {
            my $ValueTmp = $TicketSearch{$Key};
            $TicketSearch{$Key} = [$ValueTmp];
        }
        else {
            push @{ $TicketSearch{$Key} }, $Value;
        }
    }
    %TicketSearch = (
        %TicketSearch,
        Permission => $Self->{Config}->{Permission} || 'ro',
        UserID => $Self->{UserID},
    );

    # define filter attributes
    my @MyQueues = $Self->{QueueObject}->GetAllCustomQueues(
        UserID => $Self->{UserID},
    );
    if ( !@MyQueues ) {
        @MyQueues = (999_999);
    }
    my %TicketSearchSummary = (
        Locked => {
            OwnerIDs => [ $Self->{UserID}, ],
            Locks    => ['lock'],
        },
        Watcher => {
            WatchUserIDs => [ $Self->{UserID}, ],
            Locks        => undef,
        },
        Responsible => {
            ResponsibleIDs => [ $Self->{UserID}, ],
            Locks          => undef,
        },
        MyQueues => {
            QueueIDs => \@MyQueues,
            Locks    => undef,
        },
        All => {
            OwnerIDs => undef,
            Locks    => undef,
        },
    );

    # check cache
    my $TicketIDs = $Self->{CacheObject}->Get(
        Type => 'Dashboard',
        Key  => $Self->{CacheKey} . '-' . $Self->{Filter} . '-List',
    );

    # find and show ticket list
    my $CacheUsed = 1;
    if ( !$TicketIDs ) {
        $CacheUsed = 0;
        my @TicketIDsArray = $Self->{TicketObject}->TicketSearch(
            Result => 'ARRAY',
            %TicketSearch,
            %{ $TicketSearchSummary{ $Self->{Filter} } },
            Limit => $Self->{PageShown} + $Self->{StartHit} - 1,
        );
        $TicketIDs = \@TicketIDsArray;
    }

    # check cache
    my $Summary = $Self->{CacheObject}->Get(
        Type => 'Dashboard',
        Key  => $Self->{CacheKey} . '-Summary',
    );

    # if no cache ot new list result, do count lookup
    if ( !$Summary || !$CacheUsed ) {
        for my $Type ( sort keys %TicketSearchSummary ) {
            next if !$TicketSearchSummary{$Type};
            $Summary->{$Type} = $Self->{TicketObject}->TicketSearch(
                Result => 'COUNT',
                %TicketSearch,
                %{ $TicketSearchSummary{$Type} },
            );
        }
    }

    # set cache
    if ( !$CacheUsed && $Self->{Config}->{CacheTTLLocal} ) {
        $Self->{CacheObject}->Set(
            Type  => 'Dashboard',
            Key   => $Self->{CacheKey} . '-Summary',
            Value => $Summary,
            TTL   => $Self->{Config}->{CacheTTLLocal} * 60,
        );
        $Self->{CacheObject}->Set(
            Type  => 'Dashboard',
            Key   => $Self->{CacheKey} . '-' . $Self->{Filter} . '-List',
            Value => $TicketIDs,
            TTL   => $Self->{Config}->{CacheTTLLocal} * 60,
        );
    }

    # set css class
    $Summary->{ $Self->{Filter} . '::Selected' } = 'Selected';

    # get filter ticket counts
    $Self->{LayoutObject}->Block(
        Name => 'ContentLargeTicketGenericFilter',
        Data => {
            %{ $Self->{Config} },
            Name => $Self->{Name},
            %{$Summary},
        },
    );

    # show also watcher if feature is enabled
    if ( $Self->{ConfigObject}->Get('Ticket::Watcher') ) {
        $Self->{LayoutObject}->Block(
            Name => 'ContentLargeTicketGenericFilterWatcher',
            Data => {
                %{ $Self->{Config} },
                Name => $Self->{Name},
                %{$Summary},
            },
        );
    }

    # show also responsible if feature is enabled
    if ( $Self->{ConfigObject}->Get('Ticket::Responsible') ) {
        $Self->{LayoutObject}->Block(
            Name => 'ContentLargeTicketGenericFilterResponsible',
            Data => {
                %{ $Self->{Config} },
                Name => $Self->{Name},
                %{$Summary},
            },
        );
    }

    # add page nav bar
    my $Total    = $Summary->{ $Self->{Filter} } || 0;
    my $LinkPage = 'Subaction=Element;Name=' . $Self->{Name} . ';Filter=' . $Self->{Filter} . ';';
    my %PageNav  = $Self->{LayoutObject}->PageNavBar(
        StartHit       => $Self->{StartHit},
        PageShown      => $Self->{PageShown},
        AllHits        => $Total || 1,
        Action         => 'Action=' . $Self->{LayoutObject}->{Action},
        Link           => $LinkPage,
        AJAXReplace    => 'Dashboard' . $Self->{Name},
        IDPrefix       => 'Dashboard' . $Self->{Name},
        KeepScriptTags => $Param{AJAX},
    );
    $Self->{LayoutObject}->Block(
        Name => 'ContentLargeTicketGenericFilterNavBar',
        Data => {
            %{ $Self->{Config} },
            Name => $Self->{Name},
            %PageNav,
        },
    );

    # show tickets
    my $Count = 0;
    for my $TicketID ( @{$TicketIDs} ) {
        $Count++;
        next if $Count < $Self->{StartHit};
        my %Ticket = $Self->{TicketObject}->TicketGet(
            TicketID => $TicketID,
            UserID   => $Self->{UserID},
        );

# create human age
        if ( $Self->{Config}->{Time} ne 'Age' ) {
            $Ticket{Time} = $Self->{LayoutObject}->CustomerAgeInHours(
                Age   => $Ticket{ $Self->{Config}->{Time} },
                Space => ' ',
            );
        }
        else {
            $Ticket{Time} = $Self->{LayoutObject}->CustomerAge(
                Age   => $Ticket{ $Self->{Config}->{Time} },
                Space => ' ',
            );
        }

my %Company = $Self->{CustomerCompanyObject}->CustomerCompanyGet(CustomerID => $Ticket{CustomerID});
$Ticket{CustomerName}  = $Company{CustomerCompanyName
};


        # show ticket
        $Self->{LayoutObject}->Block(
            Name => 'ContentLargeTicketGenericRow',
            Data => \%Ticket,
        );

        # show ticket flags
        my @TicketMetaItems = $Self->{LayoutObject}->TicketMetaItems(
            Ticket => \%Ticket,
        );
        for my $Item (@TicketMetaItems) {
            $Self->{LayoutObject}->Block(
                Name => 'ContentLargeTicketGenericRowMeta',
                Data => {},
            );
            if ($Item) {
                $Self->{LayoutObject}->Block(
                    Name => 'ContentLargeTicketGenericRowMetaImage',
                    Data => $Item,
                );
            }
        }
    }

    # show "none" if no ticket is available
    if ( !$TicketIDs || !@{$TicketIDs} ) {
        $Self->{LayoutObject}->Block(
            Name => 'ContentLargeTicketGenericNone',
            Data => {},
        );
    }

    my $Content = $Self->{LayoutObject}->Output(
        TemplateFile => 'AgentDashboardTicketGeneric',
        Data         => {
            %{ $Self->{Config} },
            Name => $Self->{Name},
            %{$Summary},
        },
        KeepScriptTags => $Param{AJAX},
    );

    return $Content;
}

1;
ackerland
Znuny newbie
Posts: 54
Joined: 12 Aug 2010, 15:10
Znuny Version: 2.4

Re: Kundenname in das Agenten-Dashboard

Post by ackerland »

mrbit wrote:dann ist bei mir alles weiß. Oben steht nur das Update für die 3.03 Version und der Rest ist leer.

hier mal meine ganze Datei:

hast du in der entsprechenden .dtl datei auch was hinzugefügt?
Rotyn
Znuny newbie
Posts: 68
Joined: 21 Aug 2012, 17:11
Znuny Version: 3.3.5
Real Name: Rudy

Re: Kundenname in das Agenten-Dashboard

Post by Rotyn »

BIG_jan wrote:also:
um im Dashboard den vollen namen des besitzers anzeigen zu lassen muss in output\html\standard\AgentDashboardTicketGeneric.dtl (v1.9) nach Zeile 54 der Abschnitt zw ##+ und ##- eingefügt werden

Code: Select all

<td>$QData{"Time"}</td>
##+
<td><div title="$QData{"UserName"}">$QData{"Owner"}</div></td>
##-
</tr>
<dtl if ($Env{"Color"} eq "searchpassive") { $Env{"Color"} = ""; }>
in die Datei output\html\DashboardTicketGeneric.pm (v1.20) nach zeile 321 muss der Abschnitt zw ##+ und ##- eingefügt werden

Code: Select all

    Age   => $Ticket{ $Self->{Config}->{Time} },
    Space => ' ',
 );
}        
##+	
if($Ticket{OwnerID} == 1){
	$Ticket{UserName} = $Ticket{Owner};
}elsif ($Ticket{OwnerID} > 1){
	my %owner  = $Self->{UserObject}->GetUserData(User => $Ticket{Owner}, Cached => 1);
	$Ticket{UserName} = $owner{UserFirstname}.' '.$owner{UserLastname};
}
##-
$Self->{LayoutObject}->Block(
    Name => 'ContentLargeTicketGenericRow',
Dann wird nach der spalte zeit noch eine spalte 'Owner' angefügt. (kompletter name wird bei mouseover angezeigt)
Hatte schon frueher deine Implementierung des Kundennamen umgesetzt. Aber deine erste Beschreibung - Anzeige des Owner Namens - bekomm ich nich hin. Da bleib bei mir die Spalte leer

Meine output\html\DashboardTicketGeneric.pm

Code: Select all

      # create human age
        if ( $Self->{Config}->{Time} ne 'Age' ) {
            $Ticket{Time} = $Self->{LayoutObject}->CustomerAgeInHours(
                Age   => $Ticket{ $Self->{Config}->{Time} },
                Space => ' ',
            );
        }
        else {
            $Ticket{Time} = $Self->{LayoutObject}->CustomerAge(
                Age   => $Ticket{ $Self->{Config}->{Time} },
                Space => ' ',
            );
        }

##+   MB MOD  to get owner name for Dashboard, rrohde, 12.Sep 2012

if($Ticket{OwnerID} == 1){
   $Ticket{UserName} = $Ticket{Owner};
}elsif ($Ticket{OwnerID} > 1){
   my %owner  = $Self->{UserObject}->GetUserData(User => $Ticket{Owner}, Cached => 1);
   $Ticket{UserName} = $owner{UserFirstname}.' '.$owner{UserLastname};
}
##-

        # show ticket
        $Self->{LayoutObject}->Block(
            Name => 'ContentLargeTicketGenericRow',
            Data => \%Ticket,
        );
und die output\html\standard\AgentDashboardTicketGeneric.dtl

Code: Select all

<!-- dtl:block:ContentLargeTicketGenericRowMeta -->
            <td class="W10pc">
                <a href="$Env{"Baselink"}Action=AgentTicketZoom;TicketID=$Data{"TicketID"}" title="$QData{"Title"}" class="AsBlock MasterActionLink">$Data{"TicketNumber"}</a>
            </td>
            <td class="W45pc">
                <div title="$QData{"Title"}">$QData{"Title","70"}</div>
            </td>
      
           <td class="W80px">$QData{"Time"}</td>          
          

<!-- MB MOD START to display company short name and owner name-->
           
            <td class="W100px">$QData{"UserName"}</td>

<!-- MB MOD END -->

        </tr>
<!-- dtl:block:ContentLargeTicketGenericRow -->
Jemand mit ner zuendeneden Idee woran das liegt?
Testing & Productive: OTRS::ITSM 3.3.5 on CentOS 6.5 and MySQL
Packages: All included
fashionever
Znuny newbie
Posts: 3
Joined: 26 Sep 2012, 04:14
Znuny Version: dgtfg
Real Name: sarah
Company: cwmalls

Re: Kundenname in das Agenten-Dashboard

Post by fashionever »

Das MIT DEM Loginnamen Home Affairs, ICH AUCH Schon hinbekommen. :shock: :shock: :shock: :shock: :shock:
chrisadams
Znuny newbie
Posts: 2
Joined: 12 Jan 2013, 11:32
Znuny Version: 3.0.10
Real Name: chris adams
Company: Abdo
Location: Muscat, Oman
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by chrisadams »

This free and open-source trouble ticket system software package can assign tickets to incoming queries and track further communications about them. It is a means of managing incoming inquiries, complaints, support requests, defect reports, and other communications.
huschfor2
Znuny newbie
Posts: 40
Joined: 15 Apr 2013, 17:42
Znuny Version: 3.2.3

Re: Kundenname in das Agenten-Dashboard

Post by huschfor2 »

Hallo zusammen,

ich würde gerne in meiner Dashboard-Übersicht die Spalte mit dem Kunden-Namen hinzufügen.
Ich habe jetzt bereits mehrere Beiträge im Forum gelesen und auch schon ein paar "Code-Schnipsel" versucht.
Leider komme ich aber nicht weiter...

Kann mir jemand den sagen wie ich den Kunden-Namen in das Dashboard bekomme?
Wie genau müsste der Code dann aussehen?


PS. Kenne mich leider nicht mit Perl aus...

Wäre für jeden Tipp dankbar!
reneeb
Znuny guru
Posts: 5018
Joined: 13 Mar 2011, 09:54
Znuny Version: 6.0.x
Real Name: Renée Bäcker
Company: Perl-Services.de
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by reneeb »

<Eigenwerbung>
Wenn Du ein wenig Geld ausgeben willst, kann ich Dir was bereitstellen. Ich habe hier eine Entwicklung für einen Kunden, mit der man (jeder Agent kann das für sich selbst anpassen) wählen kann was angezeigt werden soll. Da kann man auch den Kundennamen anzeigen...
</Eigenwerbung>

Die ersten zwei Postings in diesem Thread zeigen eigentlich schon den Code für die spezielle Anpassung mit dem Kundennamen. Du kannst es ja mal ausprobieren und wenn es nicht klappt, dann hier Deinen Code und die Fehlermeldung posten.
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
reneeb
Znuny guru
Posts: 5018
Joined: 13 Mar 2011, 09:54
Znuny Version: 6.0.x
Real Name: Renée Bäcker
Company: Perl-Services.de
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by reneeb »

Vielleicht hilft auch viewtopic.php?f=62&t=14215
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
huschfor2
Znuny newbie
Posts: 40
Joined: 15 Apr 2013, 17:42
Znuny Version: 3.2.3

Re: Kundenname in das Agenten-Dashboard

Post by huschfor2 »

reneeb wrote:
Die ersten zwei Postings in diesem Thread zeigen eigentlich schon den Code für die spezielle Anpassung mit dem Kundennamen. Du kannst es ja mal ausprobieren und wenn es nicht klappt, dann hier Deinen Code und die Fehlermeldung posten.

Ich nehme an du meinst hier das Beispiel mit

Code: Select all

my %Company = $Self->{CustomerCompanyObject}->CustomercompanyGet(CustomerID => $Ticket{CustomerID});
$Ticket{CustomerName}  = $Company{CustomerCompanyName};

aber ich brauche ja den Kunden Namen und nicht den Firmen Namen.
Gleiches gilt für den Link von dir.

Wie gesagt mein Wissen bezüglich Perl = 0

Vielen Dank für dein Angebot mit deinem Tool aber mir reicht eigentlich der Kundenname.
Wärst du trotzdem so freundlich mir dabei zu helfen?
reneeb
Znuny guru
Posts: 5018
Joined: 13 Mar 2011, 09:54
Znuny Version: 6.0.x
Real Name: Renée Bäcker
Company: Perl-Services.de
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by reneeb »

statt

Code: Select all

my %Company = $Self->{CustomerCompanyObject}->CustomercompanyGet(CustomerID => $Ticket{CustomerID});
$Ticket{CustomerName}  = $Company{CustomerCompanyName};
einfach

Code: Select all

my $Name = $Self->{CustomerUserObject}->CustomeName( UserLogin => $Ticket{CustomerUserID});
$Ticket{CustomerName}  = $Name;
Am Anfang der .pm noch ein

Code: Select all

use Kernel::System::CustomerUser;
und in der Methode "new" nach der Schleife mit "get needed objects" noch ein

Code: Select all

$Self->{CustomerUserObject} = Kernel::System::CustomerUser->new( %Param );
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
huschfor2
Znuny newbie
Posts: 40
Joined: 15 Apr 2013, 17:42
Znuny Version: 3.2.3

Re: Kundenname in das Agenten-Dashboard

Post by huschfor2 »

Danke für deine Antwort.

hab das jetzt mal so eingefügt, bekomme aber jetzt einen Error
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@somenet.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

meine DashboardTicketGeneric.pm sieht so aus:

Code: Select all

# --
# Kernel/Output/HTML/DashboardTicketGeneric.pm
# Copyright (C) 2001-2013 xxx, http://otrs.com/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (AGPL). If you
# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
# --

package Kernel::Output::HTML::DashboardTicketGeneric;
use Kernel::System::CustomerUser;
use strict;
use warnings;

use vars qw($VERSION);
$VERSION = qw($Revision: 1.55 $) [1];

sub new {
    my ( $Type, %Param ) = @_;

    # allocate new hash for object
    my $Self = {%Param};
    bless( $Self, $Type );

    # get needed objects
    for (
        qw(Config Name ConfigObject LogObject DBObject LayoutObject ParamObject TicketObject UserID)
        )
    {
        die "Got no $_!" if ( !$Self->{$_} );
    }
	$Self->{CustomerUserObject} = Kernel::System::CustomerUser->new( %Param );
    
	
	# get current filter
    my $Name = $Self->{ParamObject}->GetParam( Param => 'Name' ) || '';
    my $PreferencesKey = 'UserDashboardTicketGenericFilter' . $Self->{Name};
    if ( $Self->{Name} eq $Name ) {
        $Self->{Filter} = $Self->{ParamObject}->GetParam( Param => 'Filter' ) || '';
    }

    # remember filter
    if ( $Self->{Filter} ) {

        # update session
        $Self->{SessionObject}->UpdateSessionID(
            SessionID => $Self->{SessionID},
            Key       => $PreferencesKey,
            Value     => $Self->{Filter},
        );

        # update preferences
        if ( !$Self->{ConfigObject}->Get('DemoSystem') ) {
            $Self->{UserObject}->SetPreferences(
                UserID => $Self->{UserID},
                Key    => $PreferencesKey,
                Value  => $Self->{Filter},
            );
        }
    }

    if ( !$Self->{Filter} ) {
        $Self->{Filter} = $Self->{$PreferencesKey} || $Self->{Config}->{Filter} || 'All';
    }

    $Self->{PrefKey} = 'UserDashboardPref' . $Self->{Name} . '-Shown';

    $Self->{PageShown} = $Self->{LayoutObject}->{ $Self->{PrefKey} } || $Self->{Config}->{Limit};

    $Self->{StartHit} = int( $Self->{ParamObject}->GetParam( Param => 'StartHit' ) || 1 );

    return $Self;
}

sub Preferences {
    my ( $Self, %Param ) = @_;

    my @Params = (
        {
            Desc  => 'Shown Tickets',
            Name  => $Self->{PrefKey},
            Block => 'Option',

            #            Block => 'Input',
            Data => {
                5  => ' 5',
                10 => '10',
                15 => '15',
                20 => '20',
                25 => '25',
            },
            SelectedID  => $Self->{PageShown},
            Translation => 0,
        },
    );

    return @Params;
}

sub Config {
    my ( $Self, %Param ) = @_;

    # check if frontend module of link is used
    if ( $Self->{Config}->{Link} && $Self->{Config}->{Link} =~ /Action=(.+?)([&;].+?|)$/ ) {
        my $Action = $1;
        if ( !$Self->{ConfigObject}->Get('Frontend::Module')->{$Action} ) {
            $Self->{Config}->{Link} = '';
        }
    }

    return (
        %{ $Self->{Config} },

        # remember, do not allow to use page cache
        # (it's not working because of internal filter)
        CacheTTL => undef,
        CacheKey => undef,
    );
}

sub Run {
    my ( $Self, %Param ) = @_;

    my $CacheKey = $Self->{Name} . '-'
        . $Self->{PageShown} . '-'
        . $Self->{StartHit} . '-'
        . $Self->{UserID};

    # get all search base attributes
    my %TicketSearch;
    my %DynamicFieldsParameters;
    my @Params = split /;/, $Self->{Config}->{Attributes};
    for my $String (@Params) {
        next if !$String;
        my ( $Key, $Value ) = split /=/, $String;

        # push ARRAYREF attributes directly in an ARRAYREF
        if (
            $Key
            =~ /^(StateType|StateTypeIDs|Queues|QueueIDs|Types|TypeIDs|States|StateIDs|Priorities|PriorityIDs|Services|ServiceIDs|SLAs|SLAIDs|Locks|LockIDs|OwnerIDs|ResponsibleIDs|WatchUserIDs|ArchiveFlags)$/
            )
        {
            push @{ $TicketSearch{$Key} }, $Value;
        }

        # check if parameter is a dynamic field and capture dynamic field name (with DynamicField_)
        # in $1 and the Operator in $2
        # possible Dynamic Fields options include:
        #   DynamicField_NameX_Equals=123;
        #   DynamicField_NameX_Like=value*;
        #   DynamicField_NameX_GreaterThan=2001-01-01 01:01:01;
        #   DynamicField_NameX_GreaterThanEquals=2001-01-01 01:01:01;
        #   DynamicField_NameX_SmallerThan=2002-02-02 02:02:02;
        #   DynamicField_NameX_SmallerThanEquals=2002-02-02 02:02:02;
        elsif ( $Key =~ m{\A (DynamicField_.+?) _ (.+?) \z}sxm ) {
            $DynamicFieldsParameters{$1}->{$2} = $Value;
        }

        elsif ( !defined $TicketSearch{$Key} ) {
            $TicketSearch{$Key} = $Value;
        }
        elsif ( !ref $TicketSearch{$Key} ) {
            my $ValueTmp = $TicketSearch{$Key};
            $TicketSearch{$Key} = [$ValueTmp];
            push @{ $TicketSearch{$Key} }, $Value;
        }
        else {
            push @{ $TicketSearch{$Key} }, $Value;
        }
    }
    %TicketSearch = (
        %TicketSearch,
        %DynamicFieldsParameters,
        Permission => $Self->{Config}->{Permission} || 'ro',
        UserID => $Self->{UserID},
    );

    # CustomerInformationCenter shows data per CustomerID
    if ( $Param{CustomerID} ) {
        $TicketSearch{CustomerID} = $Param{CustomerID};
        $CacheKey .= '-' . $Param{CustomerID};
    }

    # define filter attributes
    my @MyQueues = $Self->{QueueObject}->GetAllCustomQueues(
        UserID => $Self->{UserID},
    );
    if ( !@MyQueues ) {
        @MyQueues = (999_999);
    }
    my %TicketSearchSummary = (
        Locked => {
            OwnerIDs => [ $Self->{UserID}, ],
            Locks => [ 'lock', 'tmp_lock' ],
        },
        Watcher => {
            WatchUserIDs => [ $Self->{UserID}, ],
            Locks        => undef,
        },
        Responsible => {
            ResponsibleIDs => [ $Self->{UserID}, ],
            Locks          => undef,
        },
        MyQueues => {
            QueueIDs => \@MyQueues,
            Locks    => undef,
        },
        All => {
            OwnerIDs => undef,
            Locks    => undef,
        },
    );

    if ( defined $TicketSearch{QueueIDs} || defined $TicketSearch{Queues} ) {
        delete $TicketSearchSummary{MyQueues};
    }

    # check cache
    my $TicketIDs = $Self->{CacheObject}->Get(
        Type => 'Dashboard',
        Key  => $CacheKey . '-' . $Self->{Filter} . '-List',
    );

    # find and show ticket list
    my $CacheUsed = 1;
    if ( !$TicketIDs ) {
        $CacheUsed = 0;
        my @TicketIDsArray = $Self->{TicketObject}->TicketSearch(
            Result => 'ARRAY',
            %TicketSearch,
            %{ $TicketSearchSummary{ $Self->{Filter} } },
            Limit => $Self->{PageShown} + $Self->{StartHit} - 1,
        );
        $TicketIDs = \@TicketIDsArray;
    }

    # check cache
    my $Summary = $Self->{CacheObject}->Get(
        Type => 'Dashboard',
        Key  => $CacheKey . '-Summary',
    );

    # if no cache or new list result, do count lookup
    if ( !$Summary || !$CacheUsed ) {
        for my $Type ( sort keys %TicketSearchSummary ) {
            next if !$TicketSearchSummary{$Type};
            $Summary->{$Type} = $Self->{TicketObject}->TicketSearch(
                Result => 'COUNT',
                %TicketSearch,
                %{ $TicketSearchSummary{$Type} },
            );
        }
    }

    # set cache
    if ( !$CacheUsed && $Self->{Config}->{CacheTTLLocal} ) {
        $Self->{CacheObject}->Set(
            Type  => 'Dashboard',
            Key   => $CacheKey . '-Summary',
            Value => $Summary,
            TTL   => $Self->{Config}->{CacheTTLLocal} * 60,
        );
        $Self->{CacheObject}->Set(
            Type  => 'Dashboard',
            Key   => $CacheKey . '-' . $Self->{Filter} . '-List',
            Value => $TicketIDs,
            TTL   => $Self->{Config}->{CacheTTLLocal} * 60,
        );
    }

    # set css class
    $Summary->{ $Self->{Filter} . '::Selected' } = 'Selected';

    # get filter ticket counts
    $Self->{LayoutObject}->Block(
        Name => 'ContentLargeTicketGenericFilter',
        Data => {
            %Param,
            %{ $Self->{Config} },
            Name => $Self->{Name},
            %{$Summary},
        },
    );

    # show also watcher if feature is enabled
    if ( $Self->{ConfigObject}->Get('Ticket::Watcher') ) {
        $Self->{LayoutObject}->Block(
            Name => 'ContentLargeTicketGenericFilterWatcher',
            Data => {
                %Param,
                %{ $Self->{Config} },
                Name => $Self->{Name},
                %{$Summary},
            },
        );
    }

    # show also responsible if feature is enabled
    if ( $Self->{ConfigObject}->Get('Ticket::Responsible') ) {
        $Self->{LayoutObject}->Block(
            Name => 'ContentLargeTicketGenericFilterResponsible',
            Data => {
                %Param,
                %{ $Self->{Config} },
                Name => $Self->{Name},
                %{$Summary},
            },
        );
    }

    # show only myqueues if we have the filter
    if ( $TicketSearchSummary{MyQueues} ) {
        $Self->{LayoutObject}->Block(
            Name => 'ContentLargeTicketGenericFilterMyQueues',
            Data => {
                %Param,
                %{ $Self->{Config} },
                Name => $Self->{Name},
                %{$Summary},
            },
        );
    }

    # add page nav bar
    my $Total = $Summary->{ $Self->{Filter} } || 0;
    my $LinkPage = 'Subaction=Element;Name=' . $Self->{Name} . ';Filter=' . $Self->{Filter} . ';';
    if ( $Param{CustomerID} ) {
        $LinkPage .= "CustomerID=$Param{CustomerID};";
    }
    my %PageNav = $Self->{LayoutObject}->PageNavBar(
        StartHit       => $Self->{StartHit},
        PageShown      => $Self->{PageShown},
        AllHits        => $Total || 1,
        Action         => 'Action=' . $Self->{LayoutObject}->{Action},
        Link           => $LinkPage,
        AJAXReplace    => 'Dashboard' . $Self->{Name},
        IDPrefix       => 'Dashboard' . $Self->{Name},
        KeepScriptTags => $Param{AJAX},
    );
    $Self->{LayoutObject}->Block(
        Name => 'ContentLargeTicketGenericFilterNavBar',
        Data => {
            %{ $Self->{Config} },
            Name => $Self->{Name},
            %PageNav,
        },
    );

    # show tickets
    my $Count = 0;
    for my $TicketID ( @{$TicketIDs} ) {
        $Count++;
        next if $Count < $Self->{StartHit};
        my %Ticket = $Self->{TicketObject}->TicketGet(
            TicketID      => $TicketID,
            UserID        => $Self->{UserID},
            DynamicFields => 0,
        );

        # set a default title if ticket has no title
        if ( !$Ticket{Title} ) {
            $Ticket{Title} = $Self->{LayoutObject}->{LanguageObject}->Get(
                'This ticket has no title or subject'
            );
        }

        # create human age
        if ( $Self->{Config}->{Time} ne 'Age' ) {
            $Ticket{Time} = $Self->{LayoutObject}->CustomerAgeInHours(
                Age   => $Ticket{ $Self->{Config}->{Time} },
                Space => ' ',
            );
        }
        else {
            $Ticket{Time} = $Self->{LayoutObject}->CustomerAge(
                Age   => $Ticket{ $Self->{Config}->{Time} },
                Space => ' ',
            );
        }
		my $Name = $Self->{CustomerUserObject}->CustomeName( UserLogin => $Ticket{CustomerUserID});
		$Ticket{CustomerName}  = $Name;

        # show ticket
        $Self->{LayoutObject}->Block(
            Name => 'ContentLargeTicketGenericRow',
            Data => \%Ticket,
        );

        # show ticket flags
        my @TicketMetaItems = $Self->{LayoutObject}->TicketMetaItems(
            Ticket => \%Ticket,
        );
        for my $Item (@TicketMetaItems) {
            $Self->{LayoutObject}->Block(
                Name => 'ContentLargeTicketGenericRowMeta',
                Data => {},
            );
            if ($Item) {
                $Self->{LayoutObject}->Block(
                    Name => 'ContentLargeTicketGenericRowMetaImage',
                    Data => $Item,
                );
            }
        }
    }

    # show "none" if no ticket is available
    if ( !$TicketIDs || !@{$TicketIDs} ) {
        $Self->{LayoutObject}->Block(
            Name => 'ContentLargeTicketGenericNone',
            Data => {},
        );
    }

    my $Content = $Self->{LayoutObject}->Output(
        TemplateFile => 'AgentDashboardTicketGeneric',
        Data         => {
            %{ $Self->{Config} },
            Name => $Self->{Name},
            %{$Summary},
        },
        KeepScriptTags => $Param{AJAX},
    );

    return $Content;
}

1;



und die AgentDashboardTicketGeneric.dtl so:

Code: Select all

# --
# AgentDashboardTicketGeneric.dtl - provides HTML for global dashboard
# Copyright (C) 2001-2013 xxx, http://otrs.com/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (AGPL). If you
# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
# --

<!-- dtl:block:ContentLargeTicketGenericFilter -->
<ul class="Tab Actions">
    <li class="$QData{"Locked::Selected"}"><a href="#" id="Dashboard$QData{"Name"}Locked">$Text{"My locked tickets"} ($QData{"Locked"})</a></li>
<!-- dtl:js_on_document_complete -->
<script type="text/javascript">//<![CDATA[
    $('#Dashboard$QData{"Name"}Locked').unbind('click').bind('click', function(){
        $('#Dashboard$QData{"Name"}-box').addClass('Loading');
        Core.AJAX.ContentUpdate($('#Dashboard$QData{"Name"}'), '$Env{"Baselink"}Action=$Env{"Action"};Subaction=Element;Name=$QData{"Name"};Filter=Locked;CustomerID=$QData{"CustomerID"}', function () {
            Core.UI.Table.InitCSSPseudoClasses($('#Dashboard$QData{"Name"}'));
            $('#Dashboard$QData{"Name"}-box').removeClass('Loading');
        });
        return false;
    });
//]]></script>
<!-- dtl:js_on_document_complete -->

<!-- dtl:block:ContentLargeTicketGenericFilterWatcher -->
    <li class="$QData{"Watcher::Selected"}"><a href="#" id="Dashboard$QData{"Name"}Watcher">$Text{"My watched tickets"} ($QData{"Watcher"})</a></li>
<!-- dtl:js_on_document_complete -->
<script type="text/javascript">//<![CDATA[
    $('#Dashboard$QData{"Name"}Watcher').unbind('click').bind('click', function(){
        $('#Dashboard$QData{"Name"}-box').addClass('Loading');
        Core.AJAX.ContentUpdate($('#Dashboard$QData{"Name"}'), '$Env{"Baselink"}Action=$Env{"Action"};Subaction=Element;Name=$QData{"Name"};Filter=Watcher;CustomerID=$QData{"CustomerID"}', function () {
            Core.UI.Table.InitCSSPseudoClasses($('#Dashboard$QData{"Name"}'));
            $('#Dashboard$QData{"Name"}-box').removeClass('Loading');
        });
        return false;
    });
//]]></script>
<!-- dtl:js_on_document_complete -->
<!-- dtl:block:ContentLargeTicketGenericFilterWatcher -->

<!-- dtl:block:ContentLargeTicketGenericFilterResponsible -->
    <li class="$QData{"Responsible::Selected"}"><a href="#" id="Dashboard$QData{"Name"}Responsible">$Text{"My responsibilities"} ($QData{"Responsible"})</a></li>
<!-- dtl:js_on_document_complete -->
<script type="text/javascript">//<![CDATA[
    $('#Dashboard$QData{"Name"}Responsible').unbind('click').bind('click', function(){
        $('#Dashboard$QData{"Name"}-box').addClass('Loading');
        Core.AJAX.ContentUpdate($('#Dashboard$QData{"Name"}'), '$Env{"Baselink"}Action=$Env{"Action"};Subaction=Element;Name=$QData{"Name"};Filter=Responsible;CustomerID=$QData{"CustomerID"}', function () {
            Core.UI.Table.InitCSSPseudoClasses($('#Dashboard$QData{"Name"}'));
            $('#Dashboard$QData{"Name"}-box').removeClass('Loading');
        });
        return false;
    });
//]]></script>
<!-- dtl:js_on_document_complete -->

<!-- dtl:block:ContentLargeTicketGenericFilterResponsible -->
<!-- dtl:block:ContentLargeTicketGenericFilterMyQueues -->
    <li class="$QData{"MyQueues::Selected"}"><a href="#" id="Dashboard$QData{"Name"}MyQueues">$Text{"Tickets in My Queues"} ($QData{"MyQueues"})</a></li>
<!-- dtl:block:ContentLargeTicketGenericFilterMyQueues -->
    <li class="$QData{"All::Selected"} Last"><a href="#" id="Dashboard$QData{"Name"}All">$Text{"All tickets"} ($QData{"All"})</a></li>
<!-- dtl:js_on_document_complete -->
<script type="text/javascript">//<![CDATA[
    $('#Dashboard$QData{"Name"}MyQueues').unbind('click').bind('click', function(){
        $('#Dashboard$QData{"Name"}-box').addClass('Loading');
        Core.AJAX.ContentUpdate($('#Dashboard$QData{"Name"}'), '$Env{"Baselink"}Action=$Env{"Action"};Subaction=Element;Name=$QData{"Name"};Filter=MyQueues;CustomerID=$QData{"CustomerID"}', function () {
            Core.UI.Table.InitCSSPseudoClasses($('#Dashboard$QData{"Name"}'));
            $('#Dashboard$QData{"Name"}-box').removeClass('Loading');
        });
        return false;
    });
    $('#Dashboard$QData{"Name"}All').unbind('click').bind('click', function(){
        $('#Dashboard$QData{"Name"}-box').addClass('Loading');
        Core.AJAX.ContentUpdate($('#Dashboard$QData{"Name"}'), '$Env{"Baselink"}Action=$Env{"Action"};Subaction=Element;Name=$QData{"Name"};Filter=All;CustomerID=$QData{"CustomerID"}', function () {
            Core.UI.Table.InitCSSPseudoClasses($('#Dashboard$QData{"Name"}'));
            $('#Dashboard$QData{"Name"}-box').removeClass('Loading');
        });
        return false;
    });
//]]></script>
<!-- dtl:js_on_document_complete -->
</ul>

<!-- dtl:block:ContentLargeTicketGenericFilterNavBar -->
<span class="Pagination">
    $Data{"SiteNavBar"}
</span>
<!-- dtl:block:ContentLargeTicketGenericFilterNavBar -->

<!-- dtl:block:ContentLargeTicketGenericFilter -->
<table class="DataTable">
    <tbody>
<!-- dtl:block:ContentLargeTicketGenericRow -->
        <tr class="MasterAction">
<!-- dtl:block:ContentLargeTicketGenericRowMeta -->
            <td class="$QData{"ClassTable"} Flags" title="$Text{"$Data{"Title"}"}">
<!-- dtl:block:ContentLargeTicketGenericRowMetaImage -->
                <div class="$QData{"Class"} Small" title="$Text{"$Data{"Title"}"}">
                    <span class="$QData{"ClassSpan"}">$Text{"$Data{"Title"}"}</span>
                </div>
<!-- dtl:block:ContentLargeTicketGenericRowMetaImage -->
            </td>
<!-- dtl:block:ContentLargeTicketGenericRowMeta -->
            <td class="W10pc">
                <a href="$Env{"Baselink"}Action=AgentTicketZoom;TicketID=$Data{"TicketID"}" title="$QData{"Title"}" class="AsBlock MasterActionLink">$Data{"TicketNumber"}</a>
			<td>$QData{"CustomerName"}</td>
			<td class="W50pc">
                <div title="$QData{"Title"}">$QData{"Title","70"}</div>
            </td>
			
            <td>$QData{"Time"}</td>
			
        </tr>
<!-- dtl:block:ContentLargeTicketGenericRow -->
<!-- dtl:block:ContentLargeTicketGenericNone -->
        <tr>
            <td>
                $Text{"none"}
            </td>
        </tr>
<!-- dtl:block:ContentLargeTicketGenericNone -->
    </tbody>
</table>

<!-- dtl:js_on_document_complete -->
<script type="text/javascript">//<![CDATA[
$('.MasterAction').bind('click', function (Event) {
    var $MasterActionLink = $(this).find('.MasterActionLink');
    // only act if the link was not clicked directly
    if (Event.target !== $MasterActionLink.get(0)) {
        window.location = $MasterActionLink.attr('href');
        return false;
    }
});
//]]></script>
<!-- dtl:js_on_document_complete -->
Hab ich was vergessen?


PS. passt dein Code auch mit OTRS 3.2?

Was genau nimmt er dann eigentlich als CustomerName? Im Prinzip bräuchte ich den UserFirstname und den UserLastname
reneeb
Znuny guru
Posts: 5018
Joined: 13 Mar 2011, 09:54
Znuny Version: 6.0.x
Real Name: Renée Bäcker
Company: Perl-Services.de
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by reneeb »

Typo in der .pm...

Code: Select all

CustomeName(...)
da fehlt ein "r"

Das Modul liefert bei CustomerName den Vor- und Nachnamen mit Leerzeichen getrennt...
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
huschfor2
Znuny newbie
Posts: 40
Joined: 15 Apr 2013, 17:42
Znuny Version: 3.2.3

Re: Kundenname in das Agenten-Dashboard

Post by huschfor2 »

Perfekt!

Vielen Dank!
Du hast mir sehr geholfen.


Bekomme ich das eigentlich auch mit einem Dynamischen Feld hin?
reneeb
Znuny guru
Posts: 5018
Joined: 13 Mar 2011, 09:54
Znuny Version: 6.0.x
Real Name: Renée Bäcker
Company: Perl-Services.de
Contact:

Re: Kundenname in das Agenten-Dashboard

Post by reneeb »

Dann musst Du bei

Code: Select all

        my %Ticket = $Self->{TicketObject}->TicketGet(
            TicketID      => $TicketID,
            UserID        => $Self->{UserID},
            DynamicFields => 0,
        );
die DynamicFields aktivieren und in der .dtl z.B. $QData{"DynamicField_<NAME>"} verwenden....
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
huschfor2
Znuny newbie
Posts: 40
Joined: 15 Apr 2013, 17:42
Znuny Version: 3.2.3

Re: Kundenname in das Agenten-Dashboard

Post by huschfor2 »

Hat funktioniert.


Ich danke dir vielmals!
Rene_1981
Znuny newbie
Posts: 7
Joined: 26 Apr 2011, 16:39
Znuny Version: 2.4.9
Real Name: Rene

Re: Kundenname in das Agenten-Dashboard

Post by Rene_1981 »

Ich klinke mich mal ein ;)

OTRS 2.4.12

Ich würde auch gern was auf dem Dashboad anzeigen lassen. Mir geht es darum, dass Tickets offen sind, ich aber nciht sehe ob sie offen sind weil ein kunde geantwortet hat oder nur so.

Ich habe hier im Forum nen Addon gefunden (MyHammer....) das zumindest schonmal die tickets nach oben sortiert bei denen die letzte aktivität ne Kundenantwort war. Aber dies kann ich auf dem Desktop nicht direkt unterscheiden.

Könnte man anzeigen lassen wann die letzte änderung des tickets war? also quasi wie in ticket zoom die Uhrzeit?


Danke
René
Post Reply