%# BEGIN BPS TAGGED BLOCK {{{ %# %# COPYRIGHT: %# %# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC %# %# %# (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., 51 Franklin Street, Fifth Floor, Boston, MA %# 02110-1301 or visit their web page on the internet at %# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. %# %# %# 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> # show a download link if ( $size > 1024 ) { $size = loc( "[_1]k", int( $size / 102.4 ) / 10 ); } else { $size = loc( "[_1]b", $size ); } <&|/l&>Download <%$message->Filename || loc('(untitled)') %> [<%$message->ContentType%> <% $size %>]
% } % # }}}
<%perl> # {{{ if it has a content-disposition: attachment, don't show inline unless ( ($message->GetHeader('Content-Disposition')||"") =~ /attachment/i ) { my $content; # If it's text if ( $message->ContentType =~ m{^(text|message)}i && !($RT::SuppressInlineTextFiles && $message->Filename) && $message->ContentLength <= $RT::MaxInlineBody ) { 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 { require Text::Quoted; $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 ( $RT::ShowTransactionImages and $message->ContentType =~ /^image\//i ) { $m->out('' ); } elsif ( $message->ContentLength > 0 ) { $m->out( loc( 'Message body not shown because it is too large or is not plain text.' ) ); } } # }}} $m->comp( 'ShowTransactionAttachments', %ARGS, Parent => $message->id, ParentObj => $message );
% } <%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 <%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); }