зеркало из https://github.com/mozilla/gecko-dev.git
Fix for bug 127995: shows the size of attachments in the show bug and attachment interfaces.
Patch by Dave Swegen <dswegen@software.plasmon.com> r=myk a=myk
This commit is contained in:
Родитель
4189dc0677
Коммит
e4f138946b
|
@ -77,7 +77,8 @@ sub query
|
||||||
# of hashes in which each hash represents a single attachment.
|
# of hashes in which each hash represents a single attachment.
|
||||||
&::SendSQL("
|
&::SendSQL("
|
||||||
SELECT attach_id, DATE_FORMAT(creation_ts, '%Y.%m.%d %H:%i'),
|
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
|
FROM attachments WHERE bug_id = $bugid ORDER BY attach_id
|
||||||
");
|
");
|
||||||
my @attachments = ();
|
my @attachments = ();
|
||||||
|
@ -85,8 +86,8 @@ sub query
|
||||||
my %a;
|
my %a;
|
||||||
my $submitter_id;
|
my $submitter_id;
|
||||||
($a{'attachid'}, $a{'date'}, $a{'contenttype'}, $a{'description'},
|
($a{'attachid'}, $a{'date'}, $a{'contenttype'}, $a{'description'},
|
||||||
$a{'ispatch'}, $a{'isobsolete'}, $a{'isprivate'}, $submitter_id)
|
$a{'ispatch'}, $a{'isobsolete'}, $a{'isprivate'}, $submitter_id,
|
||||||
= &::FetchSQLData();
|
$a{'datasize'}) = &::FetchSQLData();
|
||||||
|
|
||||||
# Retrieve a list of flags for this attachment.
|
# Retrieve a list of flags for this attachment.
|
||||||
$a{'flags'} = Bugzilla::Flag::match({ 'attach_id' => $a{'attachid'} });
|
$a{'flags'} = Bugzilla::Flag::match({ 'attach_id' => $a{'attachid'} });
|
||||||
|
|
|
@ -77,7 +77,8 @@ sub query
|
||||||
# of hashes in which each hash represents a single attachment.
|
# of hashes in which each hash represents a single attachment.
|
||||||
&::SendSQL("
|
&::SendSQL("
|
||||||
SELECT attach_id, DATE_FORMAT(creation_ts, '%Y.%m.%d %H:%i'),
|
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
|
FROM attachments WHERE bug_id = $bugid ORDER BY attach_id
|
||||||
");
|
");
|
||||||
my @attachments = ();
|
my @attachments = ();
|
||||||
|
@ -85,8 +86,8 @@ sub query
|
||||||
my %a;
|
my %a;
|
||||||
my $submitter_id;
|
my $submitter_id;
|
||||||
($a{'attachid'}, $a{'date'}, $a{'contenttype'}, $a{'description'},
|
($a{'attachid'}, $a{'date'}, $a{'contenttype'}, $a{'description'},
|
||||||
$a{'ispatch'}, $a{'isobsolete'}, $a{'isprivate'}, $submitter_id)
|
$a{'ispatch'}, $a{'isobsolete'}, $a{'isprivate'}, $submitter_id,
|
||||||
= &::FetchSQLData();
|
$a{'datasize'}) = &::FetchSQLData();
|
||||||
|
|
||||||
# Retrieve a list of flags for this attachment.
|
# Retrieve a list of flags for this attachment.
|
||||||
$a{'flags'} = Bugzilla::Flag::match({ 'attach_id' => $a{'attachid'} });
|
$a{'flags'} = Bugzilla::Flag::match({ 'attach_id' => $a{'attachid'} });
|
||||||
|
|
|
@ -258,6 +258,30 @@ sub create {
|
||||||
return $var;
|
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)
|
# Format a time for display (more info in Bugzilla::Util)
|
||||||
time => \&Bugzilla::Util::format_time,
|
time => \&Bugzilla::Util::format_time,
|
||||||
|
|
||||||
|
|
|
@ -746,7 +746,8 @@ sub viewall
|
||||||
$privacy = "AND isprivate < 1 ";
|
$privacy = "AND isprivate < 1 ";
|
||||||
}
|
}
|
||||||
SendSQL("SELECT attach_id, DATE_FORMAT(creation_ts, '%Y.%m.%d %H:%i'),
|
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
|
FROM attachments WHERE bug_id = $::FORM{'bugid'} $privacy
|
||||||
ORDER BY attach_id");
|
ORDER BY attach_id");
|
||||||
my @attachments; # the attachments array
|
my @attachments; # the attachments array
|
||||||
|
@ -754,8 +755,8 @@ sub viewall
|
||||||
{
|
{
|
||||||
my %a; # the attachment hash
|
my %a; # the attachment hash
|
||||||
($a{'attachid'}, $a{'date'}, $a{'contenttype'},
|
($a{'attachid'}, $a{'date'}, $a{'contenttype'},
|
||||||
$a{'description'}, $a{'ispatch'}, $a{'isobsolete'}, $a{'isprivate'})
|
$a{'description'}, $a{'ispatch'}, $a{'isobsolete'}, $a{'isprivate'},
|
||||||
= FetchSQLData();
|
$a{'datasize'}) = FetchSQLData();
|
||||||
$a{'isviewable'} = isViewable($a{'contenttype'});
|
$a{'isviewable'} = isViewable($a{'contenttype'});
|
||||||
|
|
||||||
# Add the hash representing the attachment to the array of attachments.
|
# 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.
|
# Users cannot edit the content of the attachment itself.
|
||||||
|
|
||||||
# Retrieve the attachment from the database.
|
# 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'}");
|
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);
|
my $isviewable = isViewable($contenttype);
|
||||||
|
|
||||||
|
@ -980,6 +981,7 @@ sub edit
|
||||||
$vars->{'ispatch'} = $ispatch;
|
$vars->{'ispatch'} = $ispatch;
|
||||||
$vars->{'isobsolete'} = $isobsolete;
|
$vars->{'isobsolete'} = $isobsolete;
|
||||||
$vars->{'isprivate'} = $isprivate;
|
$vars->{'isprivate'} = $isprivate;
|
||||||
|
$vars->{'datasize'} = $datasize;
|
||||||
$vars->{'isviewable'} = $isviewable;
|
$vars->{'isviewable'} = $isviewable;
|
||||||
$vars->{'attachments'} = \@bugattachments;
|
$vars->{'attachments'} = \@bugattachments;
|
||||||
$vars->{'GetBugLink'} = \&GetBugLink;
|
$vars->{'GetBugLink'} = \&GetBugLink;
|
||||||
|
|
|
@ -1111,6 +1111,7 @@ END
|
||||||
quoteUrls => sub { return $_; },
|
quoteUrls => sub { return $_; },
|
||||||
bug_link => [ sub { return sub { return $_; } }, 1],
|
bug_link => [ sub { return sub { return $_; } }, 1],
|
||||||
csv => sub { return $_; },
|
csv => sub { return $_; },
|
||||||
|
unitconvert => sub { return $_; },
|
||||||
time => sub { return $_; },
|
time => sub { return $_; },
|
||||||
none => sub { return $_; } ,
|
none => sub { return $_; } ,
|
||||||
},
|
},
|
||||||
|
|
|
@ -101,6 +101,7 @@ foreach my $include_path (@include_paths) {
|
||||||
quoteUrls => sub { return $_ } ,
|
quoteUrls => sub { return $_ } ,
|
||||||
bug_link => [ sub { return sub { return $_; } }, 1] ,
|
bug_link => [ sub { return sub { return $_; } }, 1] ,
|
||||||
csv => sub { return $_ } ,
|
csv => sub { return $_ } ,
|
||||||
|
unitconvert => sub { return $_ },
|
||||||
time => sub { return $_ } ,
|
time => sub { return $_ } ,
|
||||||
none => sub { return $_ } ,
|
none => sub { return $_ } ,
|
||||||
},
|
},
|
||||||
|
|
|
@ -202,7 +202,8 @@ sub directive_ok {
|
||||||
# Note: If a single directive prints two things, and only one is
|
# Note: If a single directive prints two things, and only one is
|
||||||
# filtered, we may not catch that case.
|
# filtered, we may not catch that case.
|
||||||
return 1 if $directive =~ /FILTER\ (html|csv|js|url_quote|css_class_quote|
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -211,6 +211,7 @@
|
||||||
|
|
||||||
<b>Filename:</b><br>
|
<b>Filename:</b><br>
|
||||||
<input type="text" size="20" name="filename" value="[% filename FILTER html %]"><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>
|
<b>MIME Type:</b><br>
|
||||||
<input type="text" size="20" name="contenttypeentry" value="[% contenttype FILTER html %]"><br>
|
<input type="text" size="20" name="contenttypeentry" value="[% contenttype FILTER html %]"><br>
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
<th bgcolor="#cccccc" align="left">Attachment</th>
|
<th bgcolor="#cccccc" align="left">Attachment</th>
|
||||||
<th bgcolor="#cccccc" align="left">Type</th>
|
<th bgcolor="#cccccc" align="left">Type</th>
|
||||||
<th bgcolor="#cccccc" align="left">Created</th>
|
<th bgcolor="#cccccc" align="left">Created</th>
|
||||||
|
<th bgcolor="#cccccc" align="left">Size</th>
|
||||||
[% IF show_attachment_flags %]
|
[% IF show_attachment_flags %]
|
||||||
<th bgcolor="#cccccc" align="left">Flags</th>
|
<th bgcolor="#cccccc" align="left">Flags</th>
|
||||||
[% END %]
|
[% END %]
|
||||||
|
@ -47,6 +48,7 @@
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td valign="top">[% attachment.date FILTER time %]</td>
|
<td valign="top">[% attachment.date FILTER time %]</td>
|
||||||
|
<td valign="top">[% attachment.datasize FILTER unitconvert %]</td>
|
||||||
|
|
||||||
[% IF show_attachment_flags %]
|
[% IF show_attachment_flags %]
|
||||||
<td valign="top">
|
<td valign="top">
|
||||||
|
@ -82,7 +84,7 @@
|
||||||
[% END %]
|
[% END %]
|
||||||
|
|
||||||
<tr>
|
<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.)
|
<a href="attachment.cgi?bugid=[% bugid %]&action=enter">Create a New Attachment</a> (proposed patch, testcase, etc.)
|
||||||
</td>
|
</td>
|
||||||
[% IF attachments.size %]
|
[% IF attachments.size %]
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
<div align="center">
|
<div align="center">
|
||||||
<table class="attachment_info" cellspacing="0" cellpadding="4" border="1" width="75%">
|
<table class="attachment_info" cellspacing="0" cellpadding="4" border="1" width="75%">
|
||||||
<tr>
|
<tr>
|
||||||
<td valign="top" bgcolor="#cccccc" colspan="5">
|
<td valign="top" bgcolor="#cccccc" colspan="6">
|
||||||
<big><b>Attachment #[% a.attachid %]</b></big>
|
<big><b>Attachment #[% a.attachid %]</b></big>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -62,6 +62,7 @@
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td valign="top">[% a.date FILTER time %]</td>
|
<td valign="top">[% a.date FILTER time %]</td>
|
||||||
|
<td valign="top">[% a.datasize FILTER unitconvert %]</td>
|
||||||
|
|
||||||
<td valign="top">
|
<td valign="top">
|
||||||
[% IF a.statuses.size == 0 %]
|
[% IF a.statuses.size == 0 %]
|
||||||
|
|
Загрузка…
Ссылка в новой задаче