diff options
author | Ivan Kohler <ivan@freeside.biz> | 2013-06-04 00:16:28 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2013-06-04 00:16:28 -0700 |
commit | 7588a4ac90a9b07c08a3107cd1107d773be1c991 (patch) | |
tree | 55b8bedb5f899e705da0ba7f608267943bf89e94 /rt/share/html/Elements/ColumnMap | |
parent | 98d2b25256055abb0dfcb9f586b434474fa97afd (diff) |
RT 4.0.13
Diffstat (limited to 'rt/share/html/Elements/ColumnMap')
-rw-r--r-- | rt/share/html/Elements/ColumnMap | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/rt/share/html/Elements/ColumnMap b/rt/share/html/Elements/ColumnMap index 878950bff..7b127e90e 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> |