[Rt-commit] [svn] r1734 -
rt/branches/3.3-TESTING/html/Elements/RT__Ticket
autrijus at pallas.eruditorum.org
autrijus at pallas.eruditorum.org
Sun Nov 7 09:38:43 EST 2004
Author: autrijus
Date: Sun Nov 7 09:38:43 2004
New Revision: 1734
Modified:
rt/branches/3.3-TESTING/html/Elements/RT__Ticket/ColumnMap
Log:
* In query builder, parse custom fields by name.
* Generate all Link-type result cell callbacks from %LINKTYPEMAP.
* Display custom field contents, separated by newlines.
* For Image custom fields we also show a thumbnail.
Modified: rt/branches/3.3-TESTING/html/Elements/RT__Ticket/ColumnMap
==============================================================================
--- rt/branches/3.3-TESTING/html/Elements/RT__Ticket/ColumnMap (original)
+++ rt/branches/3.3-TESTING/html/Elements/RT__Ticket/ColumnMap Sun Nov 7 09:38:43 2004
@@ -32,7 +32,7 @@
</%perl>
<%INIT>
-our ( $COLUMN_MAP, $CUSTOM_FIELD_MAP );
+our ( $COLUMN_MAP );
sub ColumnMap {
my $name = shift;
@@ -45,46 +45,52 @@
# 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
+ ),
+ \'<br>',
+ } @{ $values->ItemsArrayRef }
+ };
}
}
}
+sub LinkCallback {
+ my $method = shift;
+
+ my $mode = $RT::Ticket::LINKTYPEMAP{$method}{Mode};
+ my $mode_uri = $mode.'URI';
+ my $mode_is_local = $mode.'IsLocal';
+ my $local_type = 'Local'.$mode;
+
+ return sub {
+ map {
+ \'<A HREF="',
+ $_->$mode_uri->Resolver->HREF,
+ \'">',
+ ( $_->$mode_is_local ? $_->$local_type : $_->$mode ),
+ \'</A><BR>',
+ } @{ $_[0]->$method->ItemsArrayRef }
+ }
+}
+
$COLUMN_MAP = {
QueueName => {
attribute => 'Queue',
@@ -119,10 +125,10 @@
if ( $Ticket->HasUnresolvedDependencies( Type => 'approval' )
or $Ticket->HasUnresolvedDependencies( Type => 'code' ) )
{
- return "<em>" . loc('(pending approval)') . "</em>";
+ return \'<em>', loc('(pending approval)'), \'</em>';
}
else {
- return "<em>" . loc('(pending other Collection)') . "</em>";
+ return \'<em>', loc('(pending other Collection)'), \'</em>';
}
}
else {
@@ -203,7 +209,7 @@
value => sub {
my $date = $_[0]->DueObj;
if ($date && $date->Unix > 0 && $date->Unix < time()) {
- return '<span class="overdue">' . $date->AgeAsString . '</span>';
+ return \'<span class="overdue">' . $date->AgeAsString . \'</span>';
} else {
return $date->AgeAsString;
}
@@ -251,135 +257,10 @@
value => sub { return $_[0]->ResolvedObj->AsString }
},
- DependedOnBy => {
- value => sub {
- my $links = $_[0]->DependedOnBy;
- return (
- join(
- "<br>",
- map {
- '<A HREF="'
- . $_->BaseURI->Resolver->HREF . '">'
- . ( $_->BaseIsLocal ? $_->LocalBase : $_->Base )
- . '</A>'
- } @{ $links->ItemsArrayRef }
- )
- );
- }
- },
- Members => {
- value => sub {
- my $links = $_[0]->Members;
- return (
- join(
- "<br>",
- map {
- '<A HREF="'
- . $_->BaseURI->Resolver->HREF . '">'
- . ( $_->BaseIsLocal ? $_->LocalBase : $_->Base )
- . '</A>'
- } @{ $links->ItemsArrayRef }
- )
- );
- }
- },
- Children => {
- value => sub {
- my $links = $_[0]->Members;
- return (
- join(
- "<br>",
- map {
- '<A HREF="'
- . $_->BaseURI->Resolver->HREF . '">'
- . ( $_->BaseIsLocal ? $_->LocalBase : $_->Base )
- . '</A>'
- } @{ $links->ItemsArrayRef }
- )
- );
- }
- },
- ReferredToBy => {
- value => sub {
- my $links = $_[0]->ReferredToBy;
- return (
- join(
- "<br>",
- map {
- '<A HREF="'
- . $_->BaseURI->Resolver->HREF . '">'
- . ( $_->BaseIsLocal ? $_->LocalBase : $_->Base )
- . '</A>'
- } @{ $links->ItemsArrayRef }
- )
- );
- }
- },
-
- DependsOn => {
- value => sub {
- my $links = $_[0]->DependsOn;
- return (
- join(
- "<br>",
- map {
- '<A HREF="'
- . $_->TargetURI->Resolver->HREF . '">'
- . ( $_->TargetIsLocal ? $_->LocalTarget : $_->Target )
- . '</A>'
- } @{ $links->ItemsArrayRef }
- )
- );
- }
- },
- MemberOf => {
- value => sub {
- my $links = $_[0]->MemberOf;
- return (
- join(
- "<br>",
- map {
- '<A HREF="'
- . $_->TargetURI->Resolver->HREF . '">'
- . ( $_->TargetIsLocal ? $_->LocalTarget : $_->Target )
- . '</A>'
- } @{ $links->ItemsArrayRef }
- )
- );
- }
- },
- Parents => {
- value => sub {
- my $links = $_[0]->MemberOf;
- return (
- join(
- "<br>",
- map {
- '<A HREF="'
- . $_->TargetURI->Resolver->HREF . '">'
- . ( $_->TargetIsLocal ? $_->LocalTarget : $_->Target )
- . '</A>'
- } @{ $links->ItemsArrayRef }
- )
- );
- }
- },
- RefersTo => {
- value => sub {
- my $links = $_[0]->RefersTo;
- return (
- join(
- "<br>",
- map {
- '<A HREF="'
- . $_->TargetURI->Resolver->HREF . '">'
- . ( $_->TargetIsLocal ? $_->LocalTarget : $_->Target )
- . '</A>'
- } @{ $links->ItemsArrayRef }
- )
- );
- }
- },
+ # Everything from LINKTYPEMAP
+ (map {
+ $_ => { value => LinkCallback( $_ ) }
+ } keys %RT::Ticket::LINKTYPEMAP),
'_CLASS' => {
value => sub { return $_[1] % 2 ? 'oddline' : 'evenline' }
More information about the Rt-commit
mailing list