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=a6d387caeae924573d11262efc93928bce6a9ff1;hb=d39d52aac8f38ea9115628039f0df5aa3ac826de;hp=0000000000000000000000000000000000000000;hpb=c582e92888b4a5553e1b4e5214cf35217e4a0cf0;p=freeside.git diff --git a/rt/html/Elements/RT__Ticket/ColumnMap b/rt/html/Elements/RT__Ticket/ColumnMap new file mode 100644 index 000000000..a6d387cae --- /dev/null +++ b/rt/html/Elements/RT__Ticket/ColumnMap @@ -0,0 +1,394 @@ +%# BEGIN LICENSE BLOCK; +%# +%# Copyright (c) 1996-2003 Jesse Vincent +%# +%# (Except where explictly superceded by other copyright notices) +%# +%# 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. +%# +%# 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. +%# +%# +%# END LICENSE BLOCK + +<%ARGS> +$Name => undef +$Attr => undef + + +<%perl> +return ColumnMap($Name, $Attr); + + +<%INIT> +our ( $COLUMN_MAP, $CUSTOM_FIELD_MAP ); + +sub ColumnMap { + my $name = shift; + my $attr = shift; + + # First deal with the simple things from the map + if ( $COLUMN_MAP->{$name} ) { + return ( $COLUMN_MAP->{$name}->{$attr} ); + } + + # now, let's deal with harder things, like Custom Fields + + 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 ); + } + elsif ( $attr eq 'value' ) { + my $value = eval "sub { + my \$values = \$_[0]->CustomFieldValues('" . $cf->id . "'); + return ( join( ', ', map { \$_->Content } \@{ \$values->ItemsArrayRef } )) + }" || die $@; + return ($value); + } + } +} + +$COLUMN_MAP = { + QueueName => { + attribute => 'Queue', + title => 'Queue', + value => sub { return $_[0]->QueueObj->Name } + }, + OwnerName => { + title => 'Owner', + attribute => 'Owner', + value => sub { return $_[0]->OwnerObj->Name } + }, + id => { + attribute => 'id', + align => 'right', + value => sub { return $_[0]->id } + }, + Status => { + attribute => 'Status', + value => sub { return $_[0]->Status } + }, + Subject => { + attribute => 'Subject', + value => sub { return $_[0]->Subject || "(" . loc('No subject') . ")" } + }, + ExtendedStatus => { + title => 'Status', + attribute => 'Status', + value => sub { + my $Ticket = shift; + + if ( $Ticket->HasUnresolvedDependencies ) { + if ( $Ticket->HasUnresolvedDependencies( Type => 'approval' ) + or $Ticket->HasUnresolvedDependencies( Type => 'code' ) ) + { + return "" . loc('(pending approval)') . ""; + } + else { + return "" . loc('(pending other Collection)') . ""; + } + } + else { + return loc( $Ticket->Status ); + } + + } + }, + Priority => { + attribute => 'Priority', + value => sub { return $_[0]->Priority } + }, + InitialPriority => { + attribute => 'InitialPriority', + value => sub { return $_[0]->InitialPriority } + }, + FinalPriority => { + attribute => 'FinalPriority', + value => sub { return $_[0]->FinalPriority } + }, + EffectiveId => { + attribute => 'EffectiveId', + value => sub { return $_[0]->EffectiveId } + }, + Type => { + attribute => 'Type', + value => sub { return $_[0]->Type } + }, + TimeWorked => { + attribute => 'TimeWorked', + value => sub { return $_[0]->TimeWorked } + }, + TimeLeft => { + attribute => 'TimeLeft', + value => sub { return $_[0]->TimeLeft } + }, + TimeEstimated => { + attribute => 'TimeEstimated', + value => sub { return $_[0]->TimeEstimated } + }, + Requestors => { + value => sub { return $_[0]->Requestors->MemberEmailAddressesAsString } + }, + Cc => { + value => sub { return $_[0]->Cc->MemberEmailAddressesAsString } + }, + AdminCc => { + value => sub { return $_[0]->AdminCc->MemberEmailAddressesAsString } + }, + StartsRelative => { + title => 'Starts', + attribute => 'Starts', + value => sub { return $_[0]->StartsObj->AgeAsString } + }, + StartedRelative => { + title => 'Started', + attribute => 'Started', + value => sub { return $_[0]->StartedObj->AgeAsString } + }, + CreatedRelative => { + title => 'Created', + attribute => 'Created', + value => sub { return $_[0]->CreatedObj->AgeAsString } + }, + LastUpdatedRelative => { + title => 'LastUpdated', + attribute => 'LastUpdated', + value => sub { return $_[0]->LastUpdatedObj->AgeAsString } + }, + ToldRelative => { + title => 'Told', + attribute => 'Told', + value => sub { return $_[0]->ToldObj->AgeAsString } + }, + DueRelative => { + title => 'Due', + attribute => 'Due', + value => sub { + my $date = $_[0]->DueObj; + if ($date && $date->Unix > 0 && $date->Unix < time()) { + return '' . $date->AgeAsString . ''; + } else { + return $date->AgeAsString; + } + } + }, + ResolvedRelative => { + title => 'Resolved', + attribute => 'Resolved', + value => sub { return $_[0]->ResolvedObj->AgeAsString } + }, + Starts => { + attribute => 'Starts', + value => sub { return $_[0]->StartsObj->AsString } + }, + Started => { + attribute => 'Started', + value => sub { return $_[0]->StartedObj->AsString } + }, + Created => { + attribute => 'Created', + value => sub { return $_[0]->CreatedObj->AsString } + }, + CreatedBy => { + attribute => 'CreatedBy', + value => sub { return $_[0]->CreatorObj->Name } + }, + LastUpdated => { + attribute => 'LastUpdated', + value => sub { return $_[0]->LastUpdatedObj->AsString } + }, + LastUpdatedBy => { + attribute => 'LastUpdatedBy', + value => sub { return $_[0]->LastUpdatedByObj->Name } + }, + Told => { + attribute => 'Told', + value => sub { return $_[0]->ToldObj->AsString } + }, + Due => { + attribute => 'Due', + value => sub { return $_[0]->DueObj->AsString } + }, + Resolved => { + attribute => 'Resolved', + 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 } + ) + ); + } + }, + + '_CLASS' => { + value => sub { return $_[1] % 2 ? 'oddline' : 'evenline' } + }, + +}; + + + +# }}} +$m->comp( '/Elements/Callback', COLUMN_MAP => $COLUMN_MAP, _CallbackName => 'ColumnMap'); +