import rt 3.2.2
[freeside.git] / rt / html / Ticket / Elements / ShowTransactionAttachments
diff --git a/rt/html/Ticket/Elements/ShowTransactionAttachments b/rt/html/Ticket/Elements/ShowTransactionAttachments
new file mode 100644 (file)
index 0000000..b01586d
--- /dev/null
@@ -0,0 +1,196 @@
+%# {{{ BEGIN BPS TAGGED BLOCK
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC 
+%#                                          <jesse@bestpractical.com>
+%# 
+%# (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
+%# 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.
+%# 
+%# 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.
+%# 
+%# 
+%# 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
+<%perl>
+# Find all the attachments which have parent $Parent
+# For each of these attachments
+foreach my $message ( grep { $_->Parent == $Parent } @$Attachments ) {
+
+    # {{{    show the headers
+    my $headers = $message->Headers;
+    chomp $headers;
+
+    # localize the common headers (like 'Subject:'), too.
+    $headers =~ s/^([^:]+)(?=:)/loc($1)/em;
+    $m->comp(
+        'ShowMessageHeaders',
+        Headers        => $headers,
+        Transaction    => $Transaction,
+        DisplayHeaders => \@DisplayHeaders
+    );
+
+    # }}}
+    # {{{ if there's any size at all, show the download link
+    my $size = $message->ContentLength;
+    if ($size) {
+        
+</%perl> 
+<div class="downloadattachment">
+<%perl>
+
+     #     show a download link
+     if ( $size > 1024 ) {
+         $size = loc( "[_1]k", int( $size / 102.4 ) / 10 );
+     }
+     else {
+        $size = loc( "[_1]b", $size );
+     }
+        
+</%PERL> 
+<A HREF="<%$AttachPath%>/<%$Transaction->Id%>/<%$message->Id%>/<%$message->Filename | u%>"><&|/l&>Download</&><%$message->Filename || loc('(untitled)') %></a> 
+<div class="downloadcontenttype">
+<%$message->ContentType%> <% $size %> 
+</div> 
+</div>
+%}
+
+% # }}}
+<div class="messagebody">
+<%perl>
+# {{{   if it's got content-disposition inline, show it inline
+    my $content;
+
+    # If it's text
+    if ( $message->ContentType =~ m{^(text|message)}i ) {
+
+        if (
+
+            # it's a toplevel object
+            !$ParentObj
+
+            # or its parent isn't a multipart alternative
+            || ( $ParentObj->ContentType !~ m{^multipart/alternative$}i )
+
+            # or it's of our prefered alterative type
+            || (
+                (
+                    $RT::PreferRichText
+                    && ( $message->ContentType =~ m{^text/(?:html|enriched)$} )
+                )
+                || ( !$RT::PreferRichText
+                    && ( $message->ContentType !~ m{^text/(?:html|enriched)$} )
+                )
+            )
+          )
+        {
+
+            if ( $AttachmentContent->{ $message->id } ) {
+                $content = $AttachmentContent->{ $message->id }->Content;
+            }
+            else {
+                $content = $message->Content;
+            }
+
+            # if it's a text/html clean the body and show it
+            if ( $message->ContentType =~ m{^text/(?:html|enriched)$}i ) {
+                $content =
+                  $m->comp( '/Elements/ScrubHTML', Content => $content );
+                $m->out( $content );
+            }
+
+            # if it's a text/plain show the body
+            elsif ( $message->ContentType =~ m{^(text|message|text)}i ) {
+
+                eval { $content = Text::Quoted::extract($content); };
+                if ($@) { 1; }
+
+                $m->comp(
+                    'ShowMessageStanza',
+                    Depth       => 0,
+                    Message     => $content,
+                    Transaction => $Transaction
+                );
+            }
+        }
+
+    }
+        # if it's an image, show it as an image
+        elsif ( $message->ContentType =~ /^image\//i ) {
+            $m->out('<img src="'
+                  . $AttachPath . '/'
+                  . $Transaction->Id . '/'
+                  . $message->Id
+                  . '/">' );
+        }
+
+
+    # }}}
+
+    $m->comp( 'ShowTransactionAttachments', %ARGS,
+          Parent    => $message->id,
+          ParentObj => $message );
+
+
+}
+</%PERL>
+</div>
+<%ARGS>
+$Ticket => undef
+$Transaction => undef
+$ShowHeaders => 0
+$Collapsed => undef
+$ShowTitleBarCommands => 1
+$RowNum => 1
+$AttachPath => $RT::WebPath."/Ticket/Attachment"
+$UpdatePath => $RT::WebPath."/Ticket/Update.html"
+$EmailRecordPath => $RT::WebPath."/Ticket/ShowEmailRecord.html"
+$Attachments => undef
+$AttachmentContent => undef
+$ShowBody => 1
+$Parent => 0
+$ParentObj => 0
+</%ARGS>
+<%INIT>
+my @DisplayHeaders=qw( _all);
+
+if ( $Transaction->Type =~ /EmailRecord$/ ) {
+    @DisplayHeaders = qw(To Cc Bcc);
+}
+
+# If the transaction has anything attached to it at all
+elsif (!$ShowHeaders)  {
+        @DisplayHeaders = qw(To From RT-Send-Cc Cc Bcc Date Subject);
+}
+</%INIT>