summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Attachment.pm7
-rw-r--r--Bugzilla/Attachment.pm7
-rw-r--r--Bugzilla/Template.pm24
-rwxr-xr-xattachment.cgi12
-rwxr-xr-xchecksetup.pl1
-rw-r--r--t/004template.t1
-rw-r--r--t/008filter.t3
-rw-r--r--template/en/default/attachment/edit.html.tmpl1
-rw-r--r--template/en/default/attachment/list.html.tmpl4
-rw-r--r--template/en/default/attachment/show-multiple.html.tmpl3
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 %]&amp;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 %]