display customer agent, class, tag in ticket search, #8784
[freeside.git] / rt / share / html / Elements / RT__Ticket / ColumnMap
index c1f9e31..411b3e5 100644 (file)
@@ -1,40 +1,40 @@
 %# BEGIN BPS TAGGED BLOCK {{{
-%# 
+%#
 %# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC
-%#                                          <jesse@bestpractical.com>
-%# 
+%#
+%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%#                                          <sales@bestpractical.com>
+%#
 %# (Except where explicitly superseded by other copyright notices)
-%# 
-%# 
+%#
+%#
 %# LICENSE:
-%# 
+%#
 %# This work is made available to you under the terms of Version 2 of
 %# the GNU General Public License. A copy of that license should have
 %# been provided with this software, but in any event can be snarfed
 %# from www.gnu.org.
-%# 
+%#
 %# This work is distributed in the hope that it will be useful, but
 %# WITHOUT ANY WARRANTY; without even the implied warranty of
 %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 %# General Public License for more details.
-%# 
+%#
 %# You should have received a copy of the GNU General Public License
 %# along with this program; if not, write to the Free Software
 %# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 %# 02110-1301 or visit their web page on the internet at
 %# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
-%# 
-%# 
+%#
+%#
 %# CONTRIBUTION SUBMISSION POLICY:
-%# 
+%#
 %# (The following paragraph is not intended to limit the rights granted
 %# to you to modify and distribute this software under the terms of
 %# the GNU General Public License and is only of importance to you if
 %# you choose to contribute your changes and enhancements to the
 %# community by submitting them to Best Practical Solutions, LLC.)
-%# 
+%#
 %# By intentionally submitting any modifications, corrections or
 %# derivatives to this work, or any other work intended for use with
 %# Request Tracker, to Best Practical Solutions, LLC, you confirm that
@@ -43,7 +43,7 @@
 %# royalty-free, perpetual, license to use, copy, create derivative
 %# works based on those contributions, and sublicense and distribute
 %# those contributions and any derivatives thereof.
-%# 
+%#
 %# END BPS TAGGED BLOCK }}}
 <%ARGS>
 $Name => undef
@@ -313,8 +313,87 @@ $COLUMN_MAP = {
             return \$bookmark;
         },
     },
+
+    Customer => {
+        title     => 'Customer', #loc
+        attribute => 'Customer.Number', #title/attribute/name... what does it all mean?
+        value     => sub {
+            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'}) {