diff options
author | lpsolit%gmail.com <> | 2009-01-03 02:08:27 +0100 |
---|---|---|
committer | lpsolit%gmail.com <> | 2009-01-03 02:08:27 +0100 |
commit | dd52ea1b9baad23990c47a3186933e63b0cc01bb (patch) | |
tree | 397a5d00dd30200c6e6f29fefc1454237c295de9 | |
parent | 3fcb8c1e072a420b64f229cf687026fcde5256a6 (diff) | |
download | bugzilla-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-x | query.cgi | 18 | ||||
-rwxr-xr-x | report.cgi | 9 | ||||
-rw-r--r-- | template/en/default/search/search-report-select.html.tmpl | 7 |
3 files changed, 31 insertions, 3 deletions
@@ -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 %] |