~ubuntu-branches/ubuntu/lucid/request-tracker3.8/lucid-security

« back to all changes in this revision

Viewing changes to share/html/Ticket/Elements/ShowTransactionAttachments

  • Committer: Bazaar Package Importer
  • Author(s): Dominic Hargreaves, Dominic Hargreaves, Christian Perrier
  • Date: 2009-06-16 21:46:59 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20090616214659-5ji9k1n3qyc2br3n
Tags: 3.8.4-1
[ Dominic Hargreaves ]
* Add missing comma in Depends (fixes FTBFS on etch)
* Update debconf translations: pt.po, ja.po, sv.po, it.po, cs.po, ru.po
  (Closes: #519885, #519922, #520603, #520759, #521199, #521926)
* Document preference for not using SQLite in production
  (Closes: #512750)

[ Christian Perrier ]
* Debconf templates and debian/control reviewed by the debian-l10n-
  english team as part of the Smith review project.
  (Closes: #522367, #520959)
* [Debconf translation updates]
  - Japanese. Closes: #522896
  - German. Closes: #520958
  - Portuguese. Closes: #523481
  - Galician. Closes: #524256
  - Galician. Closes: #524256
  - Spanish. Closes: #524449
  - Italian. Closes: #524715
  - Russian. Closes: #524894
  - Swedish. Closes: #525171
  - French. Closes: #525281

[ Dominic Hargreaves ]
* Don't tell dbconfig to comment out unused variables, since this
  breaks MySQL and Postgres database configuration (Closes: #523090)
* Update Standards-Version (no changes)
* Switch dependency on sysklogd to rsyslog (Closes: #526914)
* New upstream release; includes
  - Minor security fix (Closes: #533069)
  - Add missing Postgres index (Closes: #512653)
* Patch webmux.pl to provide a better error message when the wrong
  major version of RT is in @INC (for example in a mod_perl context).
  (Closes: #518692)
* Add some more example Exim 4 configuration (Closes: #238345)
* Don't apply database ACLs in databases managed by dbconfig-common.
* Remove unused ACL patch

Show diffs side-by-side

added added

removed removed

Lines of Context:
49
49
# Find all the attachments which have parent $Parent
50
50
# For each of these attachments
51
51
foreach my $message ( grep $_->__Value('Parent') == $Parent, @$Attachments ) {
 
52
 
 
53
    if (RT->Config->Get('GnuPG')->{'Enable'}) {
 
54
        $m->comp( 'ShowGnuPGStatus', Attachment => $message, WarnUnsigned => $WarnUnsigned );
 
55
    }
 
56
 
52
57
    $m->comp( 'ShowMessageHeaders',
53
58
              Message        => $message,
54
59
              DisplayHeaders => \@DisplayHeaders,
67
72
</div>
68
73
%   }
69
74
 
70
 
% # If there is sub-messages, open a dedicated div
 
75
%# If there is sub-messages, open a dedicated div
71
76
% if ( scalar ( grep $_->__Value('Parent') == $message->id, @$Attachments ) ) {
72
77
<div class="messageattachments">
73
78
% } else {
74
79
<div class="messagebody">
75
 
%}
 
80
% }
76
81
<%PERL>
77
 
# {{{ if it has a content-disposition: attachment, don't show inline
78
 
unless ( ($message->GetHeader('Content-Disposition')||"") =~ /attachment/i ) {
79
 
 
80
 
    my $content;
 
82
 
 
83
$render_attachment->( $message );
 
84
 
 
85
$m->comp(
 
86
    $m->current_comp,
 
87
    %ARGS,
 
88
    Parent    => $message->id,
 
89
    ParentObj => $message
 
90
);
 
91
 
 
92
</%PERL>
 
93
</div>
 
94
% }
 
95
<%ARGS>
 
96
$Ticket => undef
 
97
$Transaction => undef
 
98
$ShowHeaders => 0
 
99
$Collapsed => undef
 
100
$DownloadableHeaders => 1
 
101
$ShowTitleBarCommands => 1
 
102
$RowNum => 1
 
103
$AttachPath => RT->Config->Get('WebPath')."/Ticket/Attachment"
 
104
$UpdatePath => RT->Config->Get('WebPath')."/Ticket/Update.html"
 
105
$EmailRecordPath => RT->Config->Get('WebPath')."/Ticket/ShowEmailRecord.html"
 
106
$Attachments => undef
 
107
$AttachmentContent => {}
 
108
$ShowBody => 1
 
109
$Parent => 0
 
110
$ParentObj => undef
 
111
$WarnUnsigned => 0
 
112
</%ARGS>
 
113
<%INIT>
 
114
my @DisplayHeaders=qw(_all);
 
115
if ( $Transaction->Type =~ /EmailRecord$/ ) {
 
116
    @DisplayHeaders = qw(To Cc Bcc);
 
117
}
 
118
 
 
119
# If the transaction has anything attached to it at all
 
120
elsif (!$ShowHeaders)  {
 
121
    @DisplayHeaders = qw(To From RT-Send-Cc Cc Bcc Date Subject);
 
122
    push @DisplayHeaders, 'RT-Send-Bcc' if RT->Config->Get('ShowBccHeader');
 
123
}
 
124
 
 
125
my $size_to_str = sub {
 
126
    my $size = shift;
 
127
    # show a download link
 
128
    if ( $size > 1024*1024 ) {
 
129
        $size = loc( "[_1]b", int( $size / 1024 / 102.4 ) / 10 );
 
130
    }
 
131
    elsif ( $size > 1024 ) {
 
132
        $size = loc( "[_1]k", int( $size / 102.4 ) / 10 );
 
133
    }
 
134
    else {
 
135
        $size = loc( "[_1]b", $size );
 
136
    }
 
137
    return $size;
 
138
};
 
139
 
 
140
my $render_attachment = sub {
 
141
    my $message = shift;
 
142
 
 
143
    # if it has a content-disposition: attachment, don't show inline
 
144
    my $disposition = $message->GetHeader('Content-Disposition');
 
145
    if ( $disposition && $disposition =~ /attachment/i && $disposition !~ /^\s*inline/ ) {
 
146
        $disposition = 'attachemnt';
 
147
    } else {
 
148
        $disposition = 'inline';
 
149
    }
81
150
 
82
151
    # If it's text
83
 
    if (   $message->ContentType =~ m{^(text|message)}i
84
 
        && !( $message->Filename && RT->Config->Get('SuppressInlineTextFiles', $session{'CurrentUser'} ) )
85
 
        && (   !RT->Config->Get( 'MaxInlineBody', $session{'CurrentUser'} )
86
 
            || $size <= RT->Config->Get('MaxInlineBody', $session{'CurrentUser'} ) ) )
87
 
    {
 
152
    if ( $message->ContentType =~ m{^(text|message)}i ) {
 
153
        my $max_size = RT->Config->Get( 'MaxInlineBody', $session{'CurrentUser'} );
 
154
        if ( $message->Filename && RT->Config->Get('SuppressInlineTextFiles', $session{'CurrentUser'} ) ) {
 
155
            $m->out('<p>'. loc( 'Text file is not shown because it is disabled in preferences.' ) .'</p>');
 
156
            return;
 
157
        }
 
158
        elsif ( $max_size && $message->ContentLength > $max_size ) {
 
159
            $m->out('<p>'. loc( 'Message body not shown because it is too large.' ) .'</p>');
 
160
            return;
 
161
        }
 
162
        elsif ( $disposition ne 'inline' ) {
 
163
            $m->out('<p>'. loc( 'Message body is not shown because sender requested not to inline it.' ) .'</p>');
 
164
            return;
 
165
        }
88
166
 
89
167
        if (
90
168
 
107
185
          )
108
186
        {
109
187
 
 
188
            my $content;
110
189
            if ( $AttachmentContent->{ $message->id } ) {
111
190
                $content = $AttachmentContent->{ $message->id }->Content;
112
191
            }
142
221
 
143
222
    # if it's an image, show it as an image
144
223
    elsif ( RT->Config->Get('ShowTransactionImages') and  $message->ContentType =~ /^image\//i ) {
145
 
        $m->out('<img src="'
 
224
        if ( $disposition ne 'inline' ) {
 
225
            $m->out('<p>'. loc( 'Message body is not shown because sender requested not to inline it.' ) .'</p>');
 
226
            return;
 
227
        }
 
228
 
 
229
        my $filename =  $message->Filename || loc('(untitled)');
 
230
        $m->out('<img'
 
231
              . ' alt="'
 
232
              . $filename
 
233
              . '"' 
 
234
              . ' title="'
 
235
              . $filename
 
236
              . '"' 
 
237
              . ' src="'
146
238
              . $AttachPath . '/'
147
239
              . $Transaction->Id . '/'
148
240
              . $message->Id
150
242
    }
151
243
    elsif ( $message->ContentLength > 0 ) {
152
244
        $m->out( '<p>' .
153
 
            loc( 'Message body not shown because it is too large or is not plain text.' ) .
 
245
            loc( 'Message body not shown because it is not plain text.' ) .
154
246
            '</p>'
155
247
        );
156
248
    }
157
 
}
158
 
 
159
 
# }}}
160
 
 
161
 
$m->comp(
162
 
    $m->current_comp,
163
 
    %ARGS,
164
 
    Parent    => $message->id,
165
 
    ParentObj => $message
166
 
);
167
 
 
168
 
</%PERL>
169
 
</div>
170
 
% }
171
 
<%ARGS>
172
 
$Ticket => undef
173
 
$Transaction => undef
174
 
$ShowHeaders => 0
175
 
$Collapsed => undef
176
 
$DownloadableHeaders => 1
177
 
$ShowTitleBarCommands => 1
178
 
$RowNum => 1
179
 
$AttachPath => RT->Config->Get('WebPath')."/Ticket/Attachment"
180
 
$UpdatePath => RT->Config->Get('WebPath')."/Ticket/Update.html"
181
 
$EmailRecordPath => RT->Config->Get('WebPath')."/Ticket/ShowEmailRecord.html"
182
 
$Attachments => undef
183
 
$AttachmentContent => {}
184
 
$ShowBody => 1
185
 
$Parent => 0
186
 
$ParentObj => undef
187
 
</%ARGS>
188
 
<%INIT>
189
 
my @DisplayHeaders=qw(_all);
190
 
if ( $Transaction->Type =~ /EmailRecord$/ ) {
191
 
    @DisplayHeaders = qw(To Cc Bcc);
192
 
}
193
 
 
194
 
# If the transaction has anything attached to it at all
195
 
elsif (!$ShowHeaders)  {
196
 
    @DisplayHeaders = qw(To From RT-Send-Cc Cc Bcc Date Subject);
197
 
    push @DisplayHeaders, 'RT-Send-Bcc' if RT->Config->Get('ShowBccHeader');
198
 
}
199
 
 
200
 
my $size_to_str = sub {
201
 
    my $size = shift;
202
 
    # show a download link
203
 
    if ( $size > 1024*1024 ) {
204
 
        $size = loc( "[_1]b", int( $size / 1024 / 102.4 ) / 10 );
205
 
    }
206
 
    elsif ( $size > 1024 ) {
207
 
        $size = loc( "[_1]k", int( $size / 102.4 ) / 10 );
208
 
    }
209
 
    else {
210
 
        $size = loc( "[_1]b", $size );
211
 
    }
212
 
    return $size;
213
249
};
 
250
 
214
251
</%INIT>