summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Template.pm10
-rwxr-xr-xshow_bug.cgi3
-rw-r--r--t/004template.t1
-rw-r--r--t/008filter.t2
-rw-r--r--template/en/default/bug/knob.html.tmpl2
-rw-r--r--template/en/default/bug/show.xml.tmpl3
-rw-r--r--template/en/default/list/list.html.tmpl8
7 files changed, 26 insertions, 3 deletions
diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm
index 91b98f5b8..92201507f 100644
--- a/Bugzilla/Template.pm
+++ b/Bugzilla/Template.pm
@@ -26,6 +26,7 @@
# Myk Melez <myk@mozilla.org>
# Max Kanat-Alexander <mkanat@bugzilla.org>
# Frédéric Buclin <LpSolit@gmail.com>
+# Greg Hendricks <ghendricks@novell.com>
package Bugzilla::Template;
@@ -37,6 +38,7 @@ use Bugzilla::Config qw(:DEFAULT $templatedir $datadir);
use Bugzilla::Util;
use Bugzilla::User;
use Bugzilla::Error;
+use MIME::Base64;
# for time2str - replace by TT Date plugin??
use Date::Format ();
@@ -319,7 +321,13 @@ sub create {
$var =~ s/\@/\\x40/g; # anti-spam for email addresses
return $var;
},
-
+
+ # Converts data to base64
+ base64 => sub {
+ my ($data) = @_;
+ return encode_base64($data);
+ },
+
# HTML collapses newlines in element attributes to a single space,
# so form elements which may have whitespace (ie comments) need
# to be encoded using &#013;
diff --git a/show_bug.cgi b/show_bug.cgi
index ddb6b2313..31619800b 100755
--- a/show_bug.cgi
+++ b/show_bug.cgi
@@ -108,7 +108,8 @@ $vars->{'bug_list'} = \@bug_list;
# If no explicit list is defined, we show all fields. We then exclude any
# on the exclusion list. This is so you can say e.g. "Everything except
# attachments" without listing almost all the fields.
-my @fieldlist = (Bugzilla::Bug::fields(), 'group', 'long_desc', 'attachment');
+my @fieldlist = (Bugzilla::Bug::fields(), 'group', 'long_desc',
+ 'attachment', 'attachmentdata');
my %displayfields;
if ($cgi->param("field")) {
diff --git a/t/004template.t b/t/004template.t
index 4edb6a3ac..9cbfadf6e 100644
--- a/t/004template.t
+++ b/t/004template.t
@@ -96,6 +96,7 @@ foreach my $include_path (@include_paths) {
html_linebreak => sub { return $_; },
no_break => sub { return $_; } ,
js => sub { return $_ } ,
+ base64 => sub { return $_ } ,
inactive => [ sub { return sub { return $_; } }, 1] ,
closed => [ sub { return sub { return $_; } }, 1] ,
obsolete => [ sub { return sub { return $_; } }, 1] ,
diff --git a/t/008filter.t b/t/008filter.t
index 59d3a2bd7..61b3dc2b6 100644
--- a/t/008filter.t
+++ b/t/008filter.t
@@ -218,7 +218,7 @@ sub directive_ok {
# Things which are already filtered
# 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|
+ return 1 if $directive =~ /FILTER\ (html|csv|js|base64|url_quote|css_class_quote|
ics|quoteUrls|time|uri|xml|lower|
obsolete|inactive|closed|unitconvert|
none)/x;
diff --git a/template/en/default/bug/knob.html.tmpl b/template/en/default/bug/knob.html.tmpl
index 2ade9a373..c76251ae9 100644
--- a/template/en/default/bug/knob.html.tmpl
+++ b/template/en/default/bug/knob.html.tmpl
@@ -170,6 +170,8 @@
&nbsp; | &nbsp;
<a href="show_bug.cgi?format=multiple&amp;id=[% bug.bug_id %]">Format For Printing</a>
&nbsp; | &nbsp;
+ <a href="show_bug.cgi?ctype=xml&amp;id=[% bug.bug_id %]">XML</a>
+ &nbsp; | &nbsp;
<a href="enter_bug.cgi?cloned_bug_id=[% bug.bug_id %]">Clone This [% terms.Bug %]</a>
[%# Links to more things users can do with this bug. %]
diff --git a/template/en/default/bug/show.xml.tmpl b/template/en/default/bug/show.xml.tmpl
index 2555600ed..0a0966890 100644
--- a/template/en/default/bug/show.xml.tmpl
+++ b/template/en/default/bug/show.xml.tmpl
@@ -77,6 +77,9 @@
<date>[% a.attached FILTER time FILTER xml %]</date>
<desc>[% a.description FILTER xml %]</desc>
<ctype>[% a.contenttype FILTER xml %]</ctype>
+ [% IF displayfields.attachmentdata %]
+ <data>[% a.data FILTER base64 %]</data>
+ [% END %]
[% FOREACH flag = a.flags %]
<flag name="[% flag.type.name FILTER xml %]"
status="[% flag.status FILTER xml %]"
diff --git a/template/en/default/list/list.html.tmpl b/template/en/default/list/list.html.tmpl
index a7b2b344c..dfe57b755 100644
--- a/template/en/default/list/list.html.tmpl
+++ b/template/en/default/list/list.html.tmpl
@@ -140,6 +140,14 @@
<input type="hidden" name="format" value="multiple">
<input type="submit" value="&nbsp;&nbsp;Long Format&nbsp;">
</form>
+ <form method="post" action="show_bug.cgi">
+ <input type="hidden" name="ctype" value="xml">
+ [% FOREACH id = buglist %]
+ <input type="hidden" name="id" value="[% id FILTER html %]">
+ [% END %]
+ <input type="hidden" name="excludefield" value="attachmentdata">
+ <input type="submit" value="XML">
+ </form>
[% IF UserInGroup(Param('timetrackinggroup')) %]
<form method="post" action="summarize_time.cgi">