summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.htaccess6
-rwxr-xr-xconfig.cgi3
-rw-r--r--template/en/default/config.rdf.tmpl45
-rw-r--r--template/en/default/filterexceptions.pl2
4 files changed, 35 insertions, 21 deletions
diff --git a/.htaccess b/.htaccess
index f9eeb541c..a2d882d80 100644
--- a/.htaccess
+++ b/.htaccess
@@ -42,3 +42,9 @@ Options -Indexes
RewriteOptions inherit
RewriteRule ^rest/(.*)$ rest.cgi/$1 [NE]
</IfModule>
+
+# config.cgi using the RDF format can generate a pretty large file (several MB).
+# The XML format of bug reports can be quite large too.
+<IfModule mod_deflate.c>
+ AddOutputFilterByType DEFLATE text/xml application/rdf+xml
+</IfModule>
diff --git a/config.cgi b/config.cgi
index 8e423ca00..3e3943989 100755
--- a/config.cgi
+++ b/config.cgi
@@ -139,6 +139,9 @@ sub display_data {
$template->process($format->{'template'}, $vars, \$output)
|| ThrowTemplateError($template->error());
+ # Remove leading whitespaces, to save some bandwidth.
+ $output =~ s/^\s+(?=<)//gm if $format->{'ctype'} =~ /rdf/;
+
# Wide characters cause md5_base64() to die.
my $digest_data = $output;
utf8::encode($digest_data) if utf8::is_utf8($digest_data);
diff --git a/template/en/default/config.rdf.tmpl b/template/en/default/config.rdf.tmpl
index c1b5b0575..814b5a1d9 100644
--- a/template/en/default/config.rdf.tmpl
+++ b/template/en/default/config.rdf.tmpl
@@ -130,10 +130,11 @@
<bz:products>
<Seq>
[% FOREACH product = products %]
+ [% uri_product_name = product.name FILTER uri %]
<li>
- <bz:product rdf:about="[% escaped_urlbase %]product.cgi?name=[% product.name FILTER uri %]">
+ <bz:product rdf:about="[% escaped_urlbase %]product.cgi?name=[% uri_product_name %]">
<bz:name>[% product.name FILTER html %]</bz:name>
- <bz:allows_unconfirmed>[% product.allows_unconfirmed FILTER html %]</bz:allows_unconfirmed>
+ <bz:allows_unconfirmed>[% product.allows_unconfirmed FILTER none %]</bz:allows_unconfirmed>
[% IF Param('useclassification') %]
<bz:classification>[% class_names.${product.classification_id}.name FILTER html %]</bz:classification>
[% END %]
@@ -141,7 +142,7 @@
<Seq>
[% FOREACH comp = product.components %]
<li resource="[% escaped_urlbase %]component.cgi?name=[% comp.name FILTER uri
- %]&amp;product=[% product.name FILTER uri %]"/>
+ %]&amp;product=[% uri_product_name %]"/>
[% END %]
</Seq>
</bz:components>
@@ -150,7 +151,7 @@
<Seq>
[% FOREACH version = product.versions %]
<li resource="[% escaped_urlbase %]version.cgi?name=[% version.name FILTER uri
- %]&amp;product=[% product.name FILTER uri %]"/>
+ %]&amp;product=[% uri_product_name %]"/>
[% END %]
</Seq>
</bz:versions>
@@ -160,12 +161,11 @@
<Seq>
[% FOREACH milestone = product.milestones %]
<li resource="[% escaped_urlbase %]milestone.cgi?name=[% milestone.name FILTER uri
- %]&amp;product=[% product.name FILTER uri %]"/>
+ %]&amp;product=[% uri_product_name %]"/>
[% END %]
</Seq>
</bz:target_milestones>
[% END %]
-
</bz:product>
</li>
[% END %]
@@ -176,12 +176,13 @@
<bz:components>
<Seq>
[% FOREACH product = products %]
+ [% uri_product_name = product.name FILTER uri %]
[% FOREACH comp = product.components %]
<li>
<bz:component rdf:about="[% escaped_urlbase %]component.cgi?name=[% comp.name FILTER uri
- %]&amp;product=[% product.name FILTER uri %]">
+ %]&amp;product=[% uri_product_name %]">
<bz:name>[% comp.name FILTER html %]</bz:name>
- <bz:is_active>[% comp.is_active FILTER html %]</bz:is_active>
+ <bz:is_active>[% comp.is_active FILTER none %]</bz:is_active>
[% IF show_flags %]
<bz:flag_types>
<Seq>
@@ -189,7 +190,7 @@
[% FOREACH flag_type = flag_types %]
[% NEXT UNLESS flag_type.is_active %]
[% all_visible_flag_types.${flag_type.id} = flag_type %]
- <li resource="[% escaped_urlbase %]flag.cgi?id=[% flag_type.id FILTER uri
+ <li resource="[% escaped_urlbase %]flag.cgi?id=[% flag_type.id
%]&amp;name=[% flag_type.name FILTER uri %]" />
[% END %]
</Seq>
@@ -205,12 +206,13 @@
<bz:versions>
<Seq>
[% FOREACH product = products %]
+ [% uri_product_name = product.name FILTER uri %]
[% FOREACH version = product.versions %]
<li>
<bz:version rdf:about="[% escaped_urlbase %]version.cgi?name=[% version.name FILTER uri
- %]&amp;product=[% product.name FILTER uri %]">
+ %]&amp;product=[% uri_product_name %]">
<bz:name>[% version.name FILTER html %]</bz:name>
- <bz:is_active>[% version.is_active FILTER html %]</bz:is_active>
+ <bz:is_active>[% version.is_active FILTER none %]</bz:is_active>
</bz:version>
</li>
[% END %]
@@ -222,12 +224,13 @@
<bz:target_milestones>
<Seq>
[% FOREACH product = products %]
+ [% uri_product_name = product.name FILTER uri %]
[% FOREACH milestone = product.milestones %]
<li>
<bz:target_milestone rdf:about="[% escaped_urlbase %]milestone.cgi?name=[% milestone.name FILTER uri
- %]&amp;product=[% product.name FILTER uri %]">
+ %]&amp;product=[% uri_product_name %]">
<bz:name>[% milestone.name FILTER html %]</bz:name>
- <bz:is_active>[% milestone.is_active FILTER html %]</bz:is_active>
+ <bz:is_active>[% milestone.is_active FILTER none %]</bz:is_active>
</bz:target_milestone>
</li>
[% END %]
@@ -241,15 +244,15 @@
<Seq>
[% FOREACH flag_type = all_visible_flag_types.values.sort('name') %]
<li>
- <bz:flag_type rdf:about="[% escaped_urlbase %]flag.cgi?id=[% flag_type.id FILTER uri
+ <bz:flag_type rdf:about="[% escaped_urlbase %]flag.cgi?id=[% flag_type.id
%]&amp;name=[% flag_type.name FILTER uri %]">
- <bz:id>[% flag_type.id FILTER html %]</bz:id>
+ <bz:id>[% flag_type.id %]</bz:id>
<bz:name>[% flag_type.name FILTER html %]</bz:name>
<bz:description>[% flag_type.description FILTER html %]</bz:description>
<bz:type>[% flag_type.target_type FILTER html %]</bz:type>
- <bz:requestable>[% flag_type.is_requestable FILTER html %]</bz:requestable>
- <bz:specifically_requestable>[% flag_type.is_requesteeble FILTER html %]</bz:specifically_requestable>
- <bz:multiplicable>[% flag_type.is_multiplicable FILTER html %]</bz:multiplicable>
+ <bz:requestable>[% flag_type.is_requestable FILTER none %]</bz:requestable>
+ <bz:specifically_requestable>[% flag_type.is_requesteeble FILTER none %]</bz:specifically_requestable>
+ <bz:multiplicable>[% flag_type.is_multiplicable FILTER none %]</bz:multiplicable>
[% IF user.in_group("editcomponents") %]
<bz:grant_group>[% flag_type.grant_group.name FILTER html %]</bz:grant_group>
<bz:request_group>[% flag_type.request_group.name FILTER html %]</bz:request_group>
@@ -271,12 +274,12 @@
<bz:description>[% (field_descs.${item.name} OR item.description) FILTER html %]</bz:description>
[%-# These values are meaningful for custom fields only. %]
[% IF item.custom %]
- <bz:type>[% item.type FILTER html %]</bz:type>
+ <bz:type>[% item.type FILTER none %]</bz:type>
<bz:type_desc>[% field_types.${item.type} FILTER html %]</bz:type_desc>
- <bz:enter_bug>[% item.enter_bug FILTER html %]</bz:enter_bug>
+ <bz:enter_bug>[% item.enter_bug FILTER none %]</bz:enter_bug>
[% END %]
[% IF item.is_active.defined %]
- <bz:is_active>[% item.is_active FILTER html %]</bz:is_active>
+ <bz:is_active>[% item.is_active FILTER none %]</bz:is_active>
[% END %]
</bz:field>
</li>
diff --git a/template/en/default/filterexceptions.pl b/template/en/default/filterexceptions.pl
index f83efaa88..69978a722 100644
--- a/template/en/default/filterexceptions.pl
+++ b/template/en/default/filterexceptions.pl
@@ -448,6 +448,8 @@
'config.rdf.tmpl' => [
'escaped_urlbase',
+ 'uri_product_name',
+ 'flag_type.id'
],
);