%# 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
%# 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
value => sub { return \('<input type="checkbox" class="checkbox" name="UpdateTicket'.$_[0]->id.'" value="1" checked="checked" />') }
},
- CustomField => {
- attribute => sub { return shift @_ },
- title => sub { return pop @_ },
- value => sub {
- # Display custom field contents, separated by newlines.
- # For Image custom fields we also show a thumbnail here.
-
- my $values = $_[0]->CustomFieldValues( $_[-1] );
- my @values = map {
- (
- ($_->CustomFieldObj->Type eq 'Image')
- ? \($m->scomp( '/Elements/ShowCustomFieldImage', Object => $_ ))
- : $_->Content
- ),
- \'<br />',
- } @{ $values->ItemsArrayRef };
- pop @values; # Remove that last <br />
- return @values;
- },
- },
Bookmark => {
title => ' ',
value => sub {
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'},
+ \';"> ',
+ $t->{'name'},
+ \' </SPAN>',
+ \' '
+ ;
+ }
+ pop @return;
+ push @return, \'<BR>';
+ }
+ pop @return;
+ @return;
+ },
+ },
};
-$COLUMN_MAP->{'CF'} = $COLUMN_MAP->{'CustomField'};
+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