summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormark <mark>2011-04-08 00:27:00 +0000
committermark <mark>2011-04-08 00:27:00 +0000
commit09aa4ca78df448f73e440a25a024e44eaf00c827 (patch)
treec0b6a849bd9a7a75caef68cc98b902ed511dcf01
parent484dbc5f3c541abd4e81cdbd38c87f12d69552f3 (diff)
display customer agent, class, tag in ticket search, #8784
-rw-r--r--rt/etc/RT_Config.pm.in6
-rw-r--r--rt/lib/RT/Tickets_Overlay.pm6
-rw-r--r--rt/lib/RT/URI/freeside.pm25
-rw-r--r--rt/lib/RT/URI/freeside/Internal.pm25
-rw-r--r--rt/share/html/Elements/RT__Ticket/ColumnMap86
-rw-r--r--rt/share/html/Search/Elements/BuildFormatString2
6 files changed, 133 insertions, 17 deletions
diff --git a/rt/etc/RT_Config.pm.in b/rt/etc/RT_Config.pm.in
index 2fd22ef..2018023 100644
--- a/rt/etc/RT_Config.pm.in
+++ b/rt/etc/RT_Config.pm.in
@@ -1400,13 +1400,13 @@ Set ($DefaultSearchResultFormat, qq{
'<B><A HREF="__WebPath__/Ticket/Display.html?id=__id__">__Subject__</a></B>/TITLE:Subject',
Customer,
Status,
- QueueName,
+ QueueName,
OwnerName,
Priority,
'__NEWLINE__',
- '',
- '<small>__Requestors__</small>',
'',
+ '<small>__Requestors__</small>',
+ '<small>__CustomerTags__</small>',
'<small>__CreatedRelative__</small>',
'<small>__ToldRelative__</small>',
'<small>__LastUpdatedRelative__</small>',
diff --git a/rt/lib/RT/Tickets_Overlay.pm b/rt/lib/RT/Tickets_Overlay.pm
index 687be73..5a7e020 100644
--- a/rt/lib/RT/Tickets_Overlay.pm
+++ b/rt/lib/RT/Tickets_Overlay.pm
@@ -1791,6 +1791,12 @@ sub OrderByCols {
$custalias.last || ', ' || $custalias.first
)";
}
+ elsif ( $subkey eq 'Class' ) {
+ $field = "$custalias.classnum";
+ }
+ elsif ( $subkey eq 'Agent' ) {
+ $field = "$custalias.agentnum";
+ }
else {
# no other cases exist yet, but for obviousness:
$field = $subkey;
diff --git a/rt/lib/RT/URI/freeside.pm b/rt/lib/RT/URI/freeside.pm
index 00a9ebb..33845dd 100644
--- a/rt/lib/RT/URI/freeside.pm
+++ b/rt/lib/RT/URI/freeside.pm
@@ -299,6 +299,31 @@ if ($@ &&
die $@;
};
+=item AgentName
+
+Return the name of the customer's agent.
+
+=cut
+
+sub AgentName { undef }
+
+=item CustomerClass
+
+Return the name of the customer's class.
+
+=cut
+
+sub CustomerClass { undef }
+
+=item CustomerTags
+
+Return the list of tags attached to the customer. Each tag is returned
+as a hashref with keys "name", "desc", and "color".
+
+=cut
+
+sub CustomerTags { ( ) }
+
=back
=cut
diff --git a/rt/lib/RT/URI/freeside/Internal.pm b/rt/lib/RT/URI/freeside/Internal.pm
index b5af134..6d3adc2 100644
--- a/rt/lib/RT/URI/freeside/Internal.pm
+++ b/rt/lib/RT/URI/freeside/Internal.pm
@@ -142,4 +142,29 @@ sub _FreesideURILabelLong {
}
+sub AgentName {
+ my $self = shift;
+ my $rec = $self->_FreesideGetRecord() or return;
+ my $agent = $rec->{'_object'}->agent or return;
+ return $agent->agentnum . ': ' . $agent->agent;
+}
+
+sub CustomerClass {
+ my $self = shift;
+ my $rec = $self->_FreesideGetRecord() or return;
+ my $cust_class = $rec->{'_object'}->cust_class or return;
+ return $cust_class->classname;
+}
+
+sub CustomerTags {
+ my $self = shift;
+ my $rec = $self->_FreesideGetRecord() or return;
+ my @part_tag = $rec->{'_object'}->part_tag;
+ return map {
+ { 'name' => $_->tagname,
+ 'desc' => $_->tagdesc,
+ 'color' => $_->tagcolor }
+ } @part_tag;
+}
+
1;
diff --git a/rt/share/html/Elements/RT__Ticket/ColumnMap b/rt/share/html/Elements/RT__Ticket/ColumnMap
index 7efc4b4..411b3e5 100644
--- a/rt/share/html/Elements/RT__Ticket/ColumnMap
+++ b/rt/share/html/Elements/RT__Ticket/ColumnMap
@@ -316,24 +316,84 @@ $COLUMN_MAP = {
Customer => {
title => 'Customer', #loc
- attribute => 'Customer', #title/attribute/name... what does it all mean?
+ attribute => 'Customer.Number', #title/attribute/name... what does it all mean?
value => sub {
- my $Ticket = shift;
- my @Customers = @{ $Ticket->Customers->ItemsArrayRef };
- my @CustResolvers = map $_->TargetURI->Resolver, @Customers;
- my @return = ();
- for ( 0 .. $#CustResolvers ) {
- my $c = @CustResolvers[$_];
- push @return, \'<A HREF="', $c->HREF, \'">', $c->AsString, \'</A>';
- push @return, \'<BR>' if scalar(@CustResolvers) > 1
- && $_ != $#CustResolvers;
- }
- @return;
+ my $Ticket = shift;
+ my @return = ();
+ foreach my $c (ticket_cust_resolvers($Ticket)) {
+ push @return, \'<A HREF="', $c->HREF, \'">',
+ $c->AsString,
+ \'</A>',
+ \'<BR>';
+ }
+ pop @return;
+ @return;
+ },
+ },
+ # For future reference:
+ # hash key = name of the column in the format string
+ # (see /Search/Elements/BuildFormatString)
+ # title = displayed name in the table header
+ # attribute = the field to ORDER BY when sorting on this column
+ Agent => {
+ title => 'Agent',
+ attribute => 'Customer.Agent',
+ value => sub {
+ my $Ticket = shift;
+ my @return = ();
+ foreach my $c (ticket_cust_resolvers($Ticket)) {
+ push @return, $c->AgentName, \'<BR>';
+ }
+ pop @return;
+ @return;
+ },
+ },
+ CustomerClass => {
+ title => 'Class',
+ attribute => 'Customer.Class',
+ value => sub {
+ my $Ticket = shift;
+ my @return = ();
+ foreach my $c (ticket_cust_resolvers($Ticket)) {
+ push @return, $c->CustomerClass, \'<BR>';
+ }
+ pop @return;
+ @return;
+ },
+ },
+ CustomerTags => {
+ title => '',
+ attribute => '',
+ value => sub {
+ my $Ticket = shift;
+ my @return = ();
+ foreach my $c (ticket_cust_resolvers($Ticket)) {
+ my @tags = sort { $a->{'name'} cmp $b->{'name'} }
+ $c->CustomerTags;
+ foreach my $t (@tags) {
+ push @return, \'<SPAN style="background-color:#',
+ $t->{'color'},
+ \';">&nbsp;',
+ $t->{'name'},
+ \'&nbsp;</SPAN>',
+ \'&nbsp;'
+ ;
+ }
+ pop @return;
+ push @return, \'<BR>';
+ }
+ pop @return;
+ @return;
},
},
-
};
+sub ticket_cust_resolvers {
+ my $Ticket = shift;
+ my @Customers = @{ $Ticket->Customers->ItemsArrayRef };
+ return map $_->TargetURI->Resolver, @Customers;
+}
+
# if no GPG support, then KeyOwnerName and KeyRequestors fall back to the regular
# versions
if (RT->Config->Get('GnuPG')->{'Enable'}) {
diff --git a/rt/share/html/Search/Elements/BuildFormatString b/rt/share/html/Search/Elements/BuildFormatString
index 654f1db..dc07c68 100644
--- a/rt/share/html/Search/Elements/BuildFormatString
+++ b/rt/share/html/Search/Elements/BuildFormatString
@@ -72,7 +72,7 @@ $CurrentDisplayColumns => undef
my @fields = qw(
id QueueName Subject
- Customer
+ Customer Agent CustomerClass CustomerTags
Status ExtendedStatus UpdateStatus
Type