summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlpsolit%gmail.com <>2009-01-03 02:08:27 +0100
committerlpsolit%gmail.com <>2009-01-03 02:08:27 +0100
commitdd52ea1b9baad23990c47a3186933e63b0cc01bb (patch)
tree397a5d00dd30200c6e6f29fefc1454237c295de9
parent3fcb8c1e072a420b64f229cf687026fcde5256a6 (diff)
downloadbugzilla-dd52ea1b9baad23990c47a3186933e63b0cc01bb.tar.gz
bugzilla-dd52ea1b9baad23990c47a3186933e63b0cc01bb.tar.xz
Bug 377956: Tabular and graphical reports should support single-select custom fields - Patch by Frédéric Buclin <LpSolit@gmail.com> r=mkanat a=LpSolit
-rwxr-xr-xquery.cgi18
-rwxr-xr-xreport.cgi9
-rw-r--r--template/en/default/search/search-report-select.html.tmpl7
3 files changed, 31 insertions, 3 deletions
diff --git a/query.cgi b/query.cgi
index 5998c31ab..f41310bb7 100755
--- a/query.cgi
+++ b/query.cgi
@@ -116,7 +116,7 @@ sub PrefillForm {
my $foundone = 0;
# Nothing must be undef, otherwise the template complains.
- foreach my $name ("bug_status", "resolution", "assigned_to",
+ my @list = ("bug_status", "resolution", "assigned_to",
"rep_platform", "priority", "bug_severity",
"classification", "product", "reporter", "op_sys",
"component", "version", "chfield", "chfieldfrom",
@@ -133,8 +133,13 @@ sub PrefillForm {
"x_axis_field", "y_axis_field", "z_axis_field",
"chart_format", "cumulate", "x_labels_vertical",
"category", "subcategory", "name", "newcategory",
- "newsubcategory", "public", "frequency")
- {
+ "newsubcategory", "public", "frequency");
+ # These fields can also have default values (when used in reports).
+ my @custom_select_fields =
+ grep { $_->type == FIELD_TYPE_SINGLE_SELECT } Bugzilla->active_custom_fields;
+ push(@list, map { $_->name } @custom_select_fields);
+
+ foreach my $name (@list) {
$default{$name} = [];
}
@@ -343,6 +348,13 @@ if (($cgi->param('query_format') || $cgi->param('format') || "")
$vars->{'category'} = Bugzilla::Chart::getVisibleSeries();
}
+if ($cgi->param('format') && $cgi->param('format') =~ /^report-(table|graph)$/) {
+ # Get legal custom fields for tabular and graphical reports.
+ my @custom_fields_for_reports =
+ grep { $_->type == FIELD_TYPE_SINGLE_SELECT } Bugzilla->active_custom_fields;
+ $vars->{'custom_fields'} = \@custom_fields_for_reports;
+}
+
$vars->{'known_name'} = $cgi->param('known_name');
diff --git a/report.cgi b/report.cgi
index 61670417c..c84ed6208 100755
--- a/report.cgi
+++ b/report.cgi
@@ -119,6 +119,15 @@ $columns{'op_sys'} = "bugs.op_sys";
$columns{'votes'} = "bugs.votes";
$columns{'keywords'} = "bugs.keywords";
$columns{'target_milestone'} = "bugs.target_milestone";
+# Single-select fields are also accepted as valid column names.
+my @single_select_fields =
+ grep { $_->type == FIELD_TYPE_SINGLE_SELECT } Bugzilla->active_custom_fields;
+
+foreach my $custom_field (@single_select_fields) {
+ my $field_name = $custom_field->name;
+ $columns{$field_name} = "bugs.$field_name";
+}
+
# One which means "nothing". Any number would do, really. It just gets SELECTed
# so that we always select 3 items in the query.
$columns{''} = "42217354";
diff --git a/template/en/default/search/search-report-select.html.tmpl b/template/en/default/search/search-report-select.html.tmpl
index e893bf6a7..de6478716 100644
--- a/template/en/default/search/search-report-select.html.tmpl
+++ b/template/en/default/search/search-report-select.html.tmpl
@@ -43,5 +43,12 @@
[% " selected" IF default.$name.0 == field %]>
[% field_descs.$field || field FILTER html %]</option>
[% END %]
+
+ [%# Single-select fields are also valid column names. %]
+ [% FOREACH field = custom_fields %]
+ <option value="[% field.name FILTER html %]"
+ [% " selected" IF default.$name.0 == field.name %]>
+ [% field.description FILTER html %]</option>
+ [% END %]
</select>
[% END %]