1 %# {{{ BEGIN BPS TAGGED BLOCK
5 %# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC
6 %# <jesse@bestpractical.com>
8 %# (Except where explicitly superseded by other copyright notices)
13 %# This work is made available to you under the terms of Version 2 of
14 %# the GNU General Public License. A copy of that license should have
15 %# been provided with this software, but in any event can be snarfed
18 %# This work is distributed in the hope that it will be useful, but
19 %# WITHOUT ANY WARRANTY; without even the implied warranty of
20 %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 %# General Public License for more details.
23 %# You should have received a copy of the GNU General Public License
24 %# along with this program; if not, write to the Free Software
25 %# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
28 %# CONTRIBUTION SUBMISSION POLICY:
30 %# (The following paragraph is not intended to limit the rights granted
31 %# to you to modify and distribute this software under the terms of
32 %# the GNU General Public License and is only of importance to you if
33 %# you choose to contribute your changes and enhancements to the
34 %# community by submitting them to Best Practical Solutions, LLC.)
36 %# By intentionally submitting any modifications, corrections or
37 %# derivatives to this work, or any other work intended for use with
38 %# Request Tracker, to Best Practical Solutions, LLC, you confirm that
39 %# you are the copyright holder for those contributions and you grant
40 %# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
41 %# royalty-free, perpetual, license to use, copy, create derivative
42 %# works based on those contributions, and sublicense and distribute
43 %# those contributions and any derivatives thereof.
45 %# }}} END BPS TAGGED BLOCK
47 # Find all the attachments which have parent $Parent
48 # For each of these attachments
49 foreach my $message ( grep { $_->Parent == $Parent } @$Attachments ) {
51 # {{{ show the headers
52 my $headers = $message->Headers;
55 # localize the common headers (like 'Subject:'), too.
56 $headers =~ s/^([^:]+)(?=:)/loc($1)/em;
60 Transaction => $Transaction,
61 DisplayHeaders => \@DisplayHeaders
65 # {{{ if there's any size at all, show the download link
66 my $size = $message->ContentLength;
70 <div class="downloadattachment">
73 # show a download link
75 $size = loc( "[_1]k", int( $size / 102.4 ) / 10 );
78 $size = loc( "[_1]b", $size );
82 <A HREF="<%$AttachPath%>/<%$Transaction->Id%>/<%$message->Id%>/<%$message->Filename | u%>"><&|/l&>Download</&><%$message->Filename || loc('(untitled)') %></a>
83 <div class="downloadcontenttype">
84 <%$message->ContentType%> <% $size %>
90 <div class="messagebody">
92 # {{{ if it's got content-disposition inline, show it inline
96 if ( $message->ContentType =~ m{^(text|message)}i ) {
100 # it's a toplevel object
103 # or its parent isn't a multipart alternative
104 || ( $ParentObj->ContentType !~ m{^multipart/alternative$}i )
106 # or it's of our prefered alterative type
110 && ( $message->ContentType =~ m{^text/(?:html|enriched)$} )
112 || ( !$RT::PreferRichText
113 && ( $message->ContentType !~ m{^text/(?:html|enriched)$} )
119 if ( $AttachmentContent->{ $message->id } ) {
120 $content = $AttachmentContent->{ $message->id }->Content;
123 $content = $message->Content;
126 # if it's a text/html clean the body and show it
127 if ( $message->ContentType =~ m{^text/(?:html|enriched)$}i ) {
129 $m->comp( '/Elements/ScrubHTML', Content => $content );
133 # if it's a text/plain show the body
134 elsif ( $message->ContentType =~ m{^(text|message|text)}i ) {
136 eval { $content = Text::Quoted::extract($content); };
143 Transaction => $Transaction
149 # if it's an image, show it as an image
150 elsif ( $message->ContentType =~ /^image\//i ) {
153 . $Transaction->Id . '/'
161 $m->comp( 'ShowTransactionAttachments', %ARGS,
162 Parent => $message->id,
163 ParentObj => $message );
171 $Transaction => undef
174 $ShowTitleBarCommands => 1
176 $AttachPath => $RT::WebPath."/Ticket/Attachment"
177 $UpdatePath => $RT::WebPath."/Ticket/Update.html"
178 $EmailRecordPath => $RT::WebPath."/Ticket/ShowEmailRecord.html"
179 $Attachments => undef
180 $AttachmentContent => undef
186 my @DisplayHeaders=qw( _all);
188 if ( $Transaction->Type =~ /EmailRecord$/ ) {
189 @DisplayHeaders = qw(To Cc Bcc);
192 # If the transaction has anything attached to it at all
193 elsif (!$ShowHeaders) {
194 @DisplayHeaders = qw(To From RT-Send-Cc Cc Bcc Date Subject);