X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fhtml%2FElements%2FRT__Ticket%2FColumnMap;fp=rt%2Fhtml%2FElements%2FRT__Ticket%2FColumnMap;h=dade914947cd591a5d2f959ab39c50027bbb1b4b;hb=d4d0590bef31071e8809ec046717444b95b3f30a;hp=a6d387caeae924573d11262efc93928bce6a9ff1;hpb=d39d52aac8f38ea9115628039f0df5aa3ac826de;p=freeside.git diff --git a/rt/html/Elements/RT__Ticket/ColumnMap b/rt/html/Elements/RT__Ticket/ColumnMap index a6d387cae..dade91494 100644 --- a/rt/html/Elements/RT__Ticket/ColumnMap +++ b/rt/html/Elements/RT__Ticket/ColumnMap @@ -1,8 +1,14 @@ -%# BEGIN LICENSE BLOCK; +%# BEGIN BPS TAGGED BLOCK {{{ %# -%# Copyright (c) 1996-2003 Jesse Vincent +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC +%# %# -%# (Except where explictly superceded by other copyright notices) +%# (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 @@ -14,25 +20,37 @@ %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %# General Public License for more details. %# -%# Unless otherwise specified, all modifications, corrections or -%# extensions to this work which alter its source code become the -%# property of Best Practical Solutions, LLC when submitted for -%# inclusion in the work. +%# 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., 675 Mass Ave, Cambridge, MA 02139, USA. %# %# -%# END LICENSE BLOCK - +%# 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 +%# you are the copyright holder for those contributions and you grant +%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, +%# 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 $Attr => undef -<%perl> -return ColumnMap($Name, $Attr); - -<%INIT> -our ( $COLUMN_MAP, $CUSTOM_FIELD_MAP ); +<%ONCE> +our ( $COLUMN_MAP ); sub ColumnMap { my $name = shift; @@ -45,46 +63,52 @@ sub ColumnMap { # now, let's deal with harder things, like Custom Fields - elsif ( $name =~ /^(?:CF|CustomField).(.*)$/ ) { + elsif ( $name =~ /^(?:CF|CustomField)\.\{(.+)\}$/ ) { my $field = $1; - my $cf; - if ( $CUSTOM_FIELD_MAP->{$field} ) { - $cf = $CUSTOM_FIELD_MAP->{$field}; - } - else { - - $cf = RT::CustomField->new( $session{'CurrentUser'} ); - - if ( $field =~ /^(.+?)\.{(.+)}$/ ) { - $cf->LoadByNameAndQueue( Queue => $1, Name => $2 ); - } - else { - $field = $1 if $field =~ /^{(.+)}$/; # trim { } - $cf->LoadByNameAndQueue( Queue => "0", Name => $field ); - } - $CUSTOM_FIELD_MAP->{$field} = $cf if ( $cf->id ); - } - - unless ( $cf->id ) { - return undef; - } if ( $attr eq 'attribute' ) { return (undef); } elsif ( $attr eq 'title' ) { - return ( $cf->Name ); + return ( $field ); } elsif ( $attr eq 'value' ) { - my $value = eval "sub { - my \$values = \$_[0]->CustomFieldValues('" . $cf->id . "'); - return ( join( ', ', map { \$_->Content } \@{ \$values->ItemsArrayRef } )) - }" || die $@; - return ($value); + # Display custom field contents, separated by newlines. + # For Image custom fields we also show a thumbnail here. + return sub { + my $values = $_[0]->CustomFieldValues($field); + return map { + ( + ($_->CustomFieldObj->Type eq 'Image') + ? \($m->scomp( '/Elements/ShowCustomFieldImage', Object => $_ )) + : $_->Content + ), + \'
', + } @{ $values->ItemsArrayRef } + }; } } } +sub LinkCallback { + my $method = shift; + + my $mode = $RT::Ticket::LINKTYPEMAP{$method}{Mode}; + my $type = $RT::Ticket::LINKTYPEMAP{$method}{Type}; + my $mode_uri = $mode.'URI'; + my $local_type = 'Local'.$mode; + + return sub { + map { + \'', + ( $_->$mode_uri->IsLocal ? $_->$local_type : $_->$mode ), + \'
', + } @{ $_[0]->Links($mode,$type)->ItemsArrayRef } + } +} + $COLUMN_MAP = { QueueName => { attribute => 'Queue', @@ -103,7 +127,7 @@ $COLUMN_MAP = { }, Status => { attribute => 'Status', - value => sub { return $_[0]->Status } + value => sub { return loc($_[0]->Status) } }, Subject => { attribute => 'Subject', @@ -119,10 +143,10 @@ $COLUMN_MAP = { if ( $Ticket->HasUnresolvedDependencies( Type => 'approval' ) or $Ticket->HasUnresolvedDependencies( Type => 'code' ) ) { - return "" . loc('(pending approval)') . ""; + return \'', loc('(pending approval)'), \''; } else { - return "" . loc('(pending other Collection)') . ""; + return \'', loc('(pending other Collection)'), \''; } } else { @@ -137,10 +161,12 @@ $COLUMN_MAP = { }, InitialPriority => { attribute => 'InitialPriority', + name => 'Initial Priority', value => sub { return $_[0]->InitialPriority } }, FinalPriority => { attribute => 'FinalPriority', + name => 'Final Priority', value => sub { return $_[0]->FinalPriority } }, EffectiveId => { @@ -153,14 +179,17 @@ $COLUMN_MAP = { }, TimeWorked => { attribute => 'TimeWorked', + title => 'Time Worked', value => sub { return $_[0]->TimeWorked } }, TimeLeft => { attribute => 'TimeLeft', + title => 'Time Left', value => sub { return $_[0]->TimeLeft } }, TimeEstimated => { attribute => 'TimeEstimated', + title => 'Time Estimated', value => sub { return $_[0]->TimeEstimated } }, Requestors => { @@ -188,7 +217,7 @@ $COLUMN_MAP = { value => sub { return $_[0]->CreatedObj->AgeAsString } }, LastUpdatedRelative => { - title => 'LastUpdated', + title => 'Last Updated', attribute => 'LastUpdated', value => sub { return $_[0]->LastUpdatedObj->AgeAsString } }, @@ -203,7 +232,7 @@ $COLUMN_MAP = { value => sub { my $date = $_[0]->DueObj; if ($date && $date->Unix > 0 && $date->Unix < time()) { - return '' . $date->AgeAsString . ''; + return (\'' , $date->AgeAsString , \''); } else { return $date->AgeAsString; } @@ -228,14 +257,17 @@ $COLUMN_MAP = { }, CreatedBy => { attribute => 'CreatedBy', + title => 'Created By', value => sub { return $_[0]->CreatorObj->Name } }, LastUpdated => { attribute => 'LastUpdated', + title => 'Last Updated', value => sub { return $_[0]->LastUpdatedObj->AsString } }, LastUpdatedBy => { attribute => 'LastUpdatedBy', + title => 'Last Updated By', value => sub { return $_[0]->LastUpdatedByObj->Name } }, Told => { @@ -251,144 +283,18 @@ $COLUMN_MAP = { value => sub { return $_[0]->ResolvedObj->AsString } }, - DependedOnBy => { - value => sub { - my $links = $_[0]->DependedOnBy; - return ( - join( - "
", - map { - '' - . ( $_->BaseIsLocal ? $_->LocalBase : $_->Base ) - . '' - } @{ $links->ItemsArrayRef } - ) - ); - } - }, - Members => { - value => sub { - my $links = $_[0]->Members; - return ( - join( - "
", - map { - '' - . ( $_->BaseIsLocal ? $_->LocalBase : $_->Base ) - . '' - } @{ $links->ItemsArrayRef } - ) - ); - } - }, - Children => { - value => sub { - my $links = $_[0]->Members; - return ( - join( - "
", - map { - '' - . ( $_->BaseIsLocal ? $_->LocalBase : $_->Base ) - . '' - } @{ $links->ItemsArrayRef } - ) - ); - } - }, - ReferredToBy => { - value => sub { - my $links = $_[0]->ReferredToBy; - return ( - join( - "
", - map { - '' - . ( $_->BaseIsLocal ? $_->LocalBase : $_->Base ) - . '' - } @{ $links->ItemsArrayRef } - ) - ); - } - }, - - DependsOn => { - value => sub { - my $links = $_[0]->DependsOn; - return ( - join( - "
", - map { - '' - . ( $_->TargetIsLocal ? $_->LocalTarget : $_->Target ) - . '' - } @{ $links->ItemsArrayRef } - ) - ); - } - }, - MemberOf => { - value => sub { - my $links = $_[0]->MemberOf; - return ( - join( - "
", - map { - '' - . ( $_->TargetIsLocal ? $_->LocalTarget : $_->Target ) - . '' - } @{ $links->ItemsArrayRef } - ) - ); - } - }, - Parents => { - value => sub { - my $links = $_[0]->MemberOf; - return ( - join( - "
", - map { - '' - . ( $_->TargetIsLocal ? $_->LocalTarget : $_->Target ) - . '' - } @{ $links->ItemsArrayRef } - ) - ); - } - }, - RefersTo => { - value => sub { - my $links = $_[0]->RefersTo; - return ( - join( - "
", - map { - '' - . ( $_->TargetIsLocal ? $_->LocalTarget : $_->Target ) - . '' - } @{ $links->ItemsArrayRef } - ) - ); - } - }, + # Everything from LINKTYPEMAP + (map { + $_ => { value => LinkCallback( $_ ) } + } keys %RT::Ticket::LINKTYPEMAP), '_CLASS' => { value => sub { return $_[1] % 2 ? 'oddline' : 'evenline' } }, }; - - - -# }}} + +<%init> $m->comp( '/Elements/Callback', COLUMN_MAP => $COLUMN_MAP, _CallbackName => 'ColumnMap'); - +return ColumnMap($Name, $Attr); +