[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