summaryrefslogtreecommitdiff
path: root/rt/share/html/Elements/ColumnMap
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2013-06-04 00:16:28 -0700
committerIvan Kohler <ivan@freeside.biz>2013-06-04 00:16:28 -0700
commit7588a4ac90a9b07c08a3107cd1107d773be1c991 (patch)
tree55b8bedb5f899e705da0ba7f608267943bf89e94 /rt/share/html/Elements/ColumnMap
parent98d2b25256055abb0dfcb9f586b434474fa97afd (diff)
RT 4.0.13
Diffstat (limited to 'rt/share/html/Elements/ColumnMap')
-rw-r--r--rt/share/html/Elements/ColumnMap30
1 files changed, 21 insertions, 9 deletions
diff --git a/rt/share/html/Elements/ColumnMap b/rt/share/html/Elements/ColumnMap
index 878950b..7b127e9 100644
--- a/rt/share/html/Elements/ColumnMap
+++ b/rt/share/html/Elements/ColumnMap
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -96,24 +96,34 @@ my $COLUMN_MAP = {
attribute => sub { return shift @_ },
title => sub { return pop @_ },
value => sub {
+ # Cache the CF object on a per-request basis, to avoid
+ # having to load it for every row
+ my $key = join("-","CF",
+ $_[0]->CustomFieldLookupType,
+ $_[0]->CustomFieldLookupId,
+ $_[-1]);
+
+ my $cf = $m->notes($key);
+ unless ($cf) {
+ $cf = $_[0]->LoadCustomFieldByIdentifier($_[-1]);
+ $m->notes($key, $cf);
+ }
+
# Display custom field contents, separated by newlines.
# For Image custom fields we also show a thumbnail here.
- my $object = shift;
- my $cfname = pop;
- my $values = $object->CustomFieldValues( $cfname );
+ my $values = $cf->ValuesForObject( $_[0] );
return if $values->Count == 0;
my @values;
# it is guaranteed to be the same type for all fields, right?
my $v = $values->First;
- my $cftype = $v->CustomFieldObj->Type;
do {
- if ($cftype eq 'Image') {
+ if ($v->Type eq 'Image') {
push @values,
\($m->scomp( '/Elements/ShowCustomFieldImage',
Object => $v ));
- } elsif ( $cftype eq 'Date' or $cftype eq 'DateTime' ) {
+ } elsif ( $v->Type eq 'Date' or $v->Type eq 'DateTime' ) {
# then actually return the date object;
# ProcessColumnMapValue will stringify it
my $DateObj = RT::Date->new( $session{'CurrentUser'} );
@@ -186,8 +196,10 @@ $m->callback( COLUMN_MAP => $COLUMN_MAP, CallbackName => 'Once', CallbackOnce =>
$m->callback( COLUMN_MAP => $COLUMN_MAP );
# first deal with class specific things
-my $class_map = $m->comp("/Elements/$Class/ColumnMap", Attr => $Attr, Name => $Name );
-return $class_map if defined $class_map;
+if (RT::Interface::Web->ComponentPathIsSafe($Class) and $m->comp_exists("/Elements/$Class/ColumnMap")) {
+ my $class_map = $m->comp("/Elements/$Class/ColumnMap", Attr => $Attr, Name => $Name );
+ return $class_map if defined $class_map;
+}
return GetColumnMapEntry( Map => $COLUMN_MAP, Name => $Name, Attribute => $Attr );
</%INIT>