diff options
-rw-r--r-- | Attachment.pm | 7 | ||||
-rw-r--r-- | Bugzilla/Attachment.pm | 7 | ||||
-rw-r--r-- | Bugzilla/Template.pm | 24 | ||||
-rwxr-xr-x | attachment.cgi | 12 | ||||
-rwxr-xr-x | checksetup.pl | 1 | ||||
-rw-r--r-- | t/004template.t | 1 | ||||
-rw-r--r-- | t/008filter.t | 3 | ||||
-rw-r--r-- | template/en/default/attachment/edit.html.tmpl | 1 | ||||
-rw-r--r-- | template/en/default/attachment/list.html.tmpl | 4 | ||||
-rw-r--r-- | template/en/default/attachment/show-multiple.html.tmpl | 3 |
10 files changed, 49 insertions, 14 deletions
diff --git a/Attachment.pm b/Attachment.pm index ea5cd531c..84979d3ea 100644 --- a/Attachment.pm +++ b/Attachment.pm @@ -77,7 +77,8 @@ sub query # of hashes in which each hash represents a single attachment. &::SendSQL(" SELECT attach_id, DATE_FORMAT(creation_ts, '%Y.%m.%d %H:%i'), - mimetype, description, ispatch, isobsolete, isprivate, submitter_id + mimetype, description, ispatch, isobsolete, isprivate, + submitter_id, LENGTH(thedata) FROM attachments WHERE bug_id = $bugid ORDER BY attach_id "); my @attachments = (); @@ -85,8 +86,8 @@ sub query my %a; my $submitter_id; ($a{'attachid'}, $a{'date'}, $a{'contenttype'}, $a{'description'}, - $a{'ispatch'}, $a{'isobsolete'}, $a{'isprivate'}, $submitter_id) - = &::FetchSQLData(); + $a{'ispatch'}, $a{'isobsolete'}, $a{'isprivate'}, $submitter_id, + $a{'datasize'}) = &::FetchSQLData(); # Retrieve a list of flags for this attachment. $a{'flags'} = Bugzilla::Flag::match({ 'attach_id' => $a{'attachid'} }); diff --git a/Bugzilla/Attachment.pm b/Bugzilla/Attachment.pm index ea5cd531c..84979d3ea 100644 --- a/Bugzilla/Attachment.pm +++ b/Bugzilla/Attachment.pm @@ -77,7 +77,8 @@ sub query # of hashes in which each hash represents a single attachment. &::SendSQL(" SELECT attach_id, DATE_FORMAT(creation_ts, '%Y.%m.%d %H:%i'), - mimetype, description, ispatch, isobsolete, isprivate, submitter_id + mimetype, description, ispatch, isobsolete, isprivate, + submitter_id, LENGTH(thedata) FROM attachments WHERE bug_id = $bugid ORDER BY attach_id "); my @attachments = (); @@ -85,8 +86,8 @@ sub query my %a; my $submitter_id; ($a{'attachid'}, $a{'date'}, $a{'contenttype'}, $a{'description'}, - $a{'ispatch'}, $a{'isobsolete'}, $a{'isprivate'}, $submitter_id) - = &::FetchSQLData(); + $a{'ispatch'}, $a{'isobsolete'}, $a{'isprivate'}, $submitter_id, + $a{'datasize'}) = &::FetchSQLData(); # Retrieve a list of flags for this attachment. $a{'flags'} = Bugzilla::Flag::match({ 'attach_id' => $a{'attachid'} }); diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index d370627d3..c123154bb 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -258,6 +258,30 @@ sub create { return $var; } , + # Format a filesize in bytes to a human readable value + unitconvert => sub + { + my ($data) = @_; + my $retval = ""; + my %units = ( + 'KB' => 1024, + 'MB' => 1024 * 1024, + 'GB' => 1024 * 1024 * 1024, + ); + + if ($data < 1024) { + return "$data bytes"; + } + else { + my $u; + foreach $u ('GB', 'MB', 'KB') { + if ($data >= $units{$u}) { + return sprintf("%.2f %s", $data/$units{$u}, $u); + } + } + } + }, + # Format a time for display (more info in Bugzilla::Util) time => \&Bugzilla::Util::format_time, diff --git a/attachment.cgi b/attachment.cgi index fd9983841..8df562120 100755 --- a/attachment.cgi +++ b/attachment.cgi @@ -746,7 +746,8 @@ sub viewall $privacy = "AND isprivate < 1 "; } SendSQL("SELECT attach_id, DATE_FORMAT(creation_ts, '%Y.%m.%d %H:%i'), - mimetype, description, ispatch, isobsolete, isprivate + mimetype, description, ispatch, isobsolete, isprivate, + LENGTH(thedata) FROM attachments WHERE bug_id = $::FORM{'bugid'} $privacy ORDER BY attach_id"); my @attachments; # the attachments array @@ -754,8 +755,8 @@ sub viewall { my %a; # the attachment hash ($a{'attachid'}, $a{'date'}, $a{'contenttype'}, - $a{'description'}, $a{'ispatch'}, $a{'isobsolete'}, $a{'isprivate'}) - = FetchSQLData(); + $a{'description'}, $a{'ispatch'}, $a{'isobsolete'}, $a{'isprivate'}, + $a{'datasize'}) = FetchSQLData(); $a{'isviewable'} = isViewable($a{'contenttype'}); # Add the hash representing the attachment to the array of attachments. @@ -943,9 +944,9 @@ sub edit # Users cannot edit the content of the attachment itself. # Retrieve the attachment from the database. - SendSQL("SELECT description, mimetype, filename, bug_id, ispatch, isobsolete, isprivate + SendSQL("SELECT description, mimetype, filename, bug_id, ispatch, isobsolete, isprivate, LENGTH(thedata) FROM attachments WHERE attach_id = $::FORM{'id'}"); - my ($description, $contenttype, $filename, $bugid, $ispatch, $isobsolete, $isprivate) = FetchSQLData(); + my ($description, $contenttype, $filename, $bugid, $ispatch, $isobsolete, $isprivate, $datasize) = FetchSQLData(); my $isviewable = isViewable($contenttype); @@ -980,6 +981,7 @@ sub edit $vars->{'ispatch'} = $ispatch; $vars->{'isobsolete'} = $isobsolete; $vars->{'isprivate'} = $isprivate; + $vars->{'datasize'} = $datasize; $vars->{'isviewable'} = $isviewable; $vars->{'attachments'} = \@bugattachments; $vars->{'GetBugLink'} = \&GetBugLink; diff --git a/checksetup.pl b/checksetup.pl index 4385accfc..9726986e0 100755 --- a/checksetup.pl +++ b/checksetup.pl @@ -1111,6 +1111,7 @@ END quoteUrls => sub { return $_; }, bug_link => [ sub { return sub { return $_; } }, 1], csv => sub { return $_; }, + unitconvert => sub { return $_; }, time => sub { return $_; }, none => sub { return $_; } , }, diff --git a/t/004template.t b/t/004template.t index 3b41282cc..6c753c0bd 100644 --- a/t/004template.t +++ b/t/004template.t @@ -101,6 +101,7 @@ foreach my $include_path (@include_paths) { quoteUrls => sub { return $_ } , bug_link => [ sub { return sub { return $_; } }, 1] , csv => sub { return $_ } , + unitconvert => sub { return $_ }, time => sub { return $_ } , none => sub { return $_ } , }, diff --git a/t/008filter.t b/t/008filter.t index 8e0ca2d04..722802bb8 100644 --- a/t/008filter.t +++ b/t/008filter.t @@ -202,7 +202,8 @@ sub directive_ok { # Note: If a single directive prints two things, and only one is # filtered, we may not catch that case. return 1 if $directive =~ /FILTER\ (html|csv|js|url_quote|css_class_quote| - quoteUrls|time|uri|xml|lower|none)/x; + quoteUrls|time|uri|xml|lower| + unitconvert|none)/x; return 0; } diff --git a/template/en/default/attachment/edit.html.tmpl b/template/en/default/attachment/edit.html.tmpl index 671842152..19cc06550 100644 --- a/template/en/default/attachment/edit.html.tmpl +++ b/template/en/default/attachment/edit.html.tmpl @@ -211,6 +211,7 @@ <b>Filename:</b><br> <input type="text" size="20" name="filename" value="[% filename FILTER html %]"><br> + <b>Size: </b>[% datasize FILTER unitconvert %]<br> <b>MIME Type:</b><br> <input type="text" size="20" name="contenttypeentry" value="[% contenttype FILTER html %]"><br> diff --git a/template/en/default/attachment/list.html.tmpl b/template/en/default/attachment/list.html.tmpl index 407ef8dfb..1ef6cab12 100644 --- a/template/en/default/attachment/list.html.tmpl +++ b/template/en/default/attachment/list.html.tmpl @@ -25,6 +25,7 @@ <th bgcolor="#cccccc" align="left">Attachment</th> <th bgcolor="#cccccc" align="left">Type</th> <th bgcolor="#cccccc" align="left">Created</th> + <th bgcolor="#cccccc" align="left">Size</th> [% IF show_attachment_flags %] <th bgcolor="#cccccc" align="left">Flags</th> [% END %] @@ -47,6 +48,7 @@ </td> <td valign="top">[% attachment.date FILTER time %]</td> + <td valign="top">[% attachment.datasize FILTER unitconvert %]</td> [% IF show_attachment_flags %] <td valign="top"> @@ -82,7 +84,7 @@ [% END %] <tr> - <td colspan="[% show_attachment_flags ? 4 : 3 %]"> + <td colspan="[% show_attachment_flags ? 5 : 4 %]"> <a href="attachment.cgi?bugid=[% bugid %]&action=enter">Create a New Attachment</a> (proposed patch, testcase, etc.) </td> [% IF attachments.size %] diff --git a/template/en/default/attachment/show-multiple.html.tmpl b/template/en/default/attachment/show-multiple.html.tmpl index 3159b8e87..48f03dff1 100644 --- a/template/en/default/attachment/show-multiple.html.tmpl +++ b/template/en/default/attachment/show-multiple.html.tmpl @@ -40,7 +40,7 @@ <div align="center"> <table class="attachment_info" cellspacing="0" cellpadding="4" border="1" width="75%"> <tr> - <td valign="top" bgcolor="#cccccc" colspan="5"> + <td valign="top" bgcolor="#cccccc" colspan="6"> <big><b>Attachment #[% a.attachid %]</b></big> </td> </tr> @@ -62,6 +62,7 @@ </td> <td valign="top">[% a.date FILTER time %]</td> + <td valign="top">[% a.datasize FILTER unitconvert %]</td> <td valign="top"> [% IF a.statuses.size == 0 %] |