diff --git a/post_bug.cgi b/post_bug.cgi index c0878b0..bb82139 100755 --- a/post_bug.cgi +++ b/post_bug.cgi @@ -144,6 +144,19 @@ foreach my $field (@multi_selects) { $bug_params{$field->name} = [$cgi->param($field->name)]; } +# ROSA-specific feature: if a checkbox for a drop-down field is displayed instead, use it +my @drop_down_fields = grep {$_->type == FIELD_TYPE_SINGLE_SELECT + || $_->type == FIELD_TYPE_MULTI_SELECT} + Bugzilla->active_custom_fields; +foreach my $field (@drop_down_fields) { + next if $field->legal_values && (@{$field->legal_values} > 1); + if ($cgi->param("checkbox_".$field->name)) { + $bug_params{$field->name} = [$field->legal_values->[0]->name]; + } else { + $bug_params{$field->name} = []; + } +} + my $bug = Bugzilla::Bug->create(\%bug_params); # Get the bug ID back and delete the token used to create this bug. diff --git a/process_bug.cgi b/process_bug.cgi index cec227a..c24a04f 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -343,6 +343,20 @@ foreach my $field (@custom_fields) { } } +# ROSA-specific feature: if a checkbox for a drop-down field is displayed instead, use it +my @drop_down_fields = grep {$_->type == FIELD_TYPE_SINGLE_SELECT + || $_->type == FIELD_TYPE_MULTI_SELECT} + Bugzilla->active_custom_fields; +foreach my $field (@drop_down_fields) { + next if $field->legal_values && (@{$field->legal_values} > 1); + if ($cgi->param("checkbox_".$field->name)) { + $set_all_fields{$field->name} = [$field->legal_values->[0]->name]; + } else { + $set_all_fields{$field->name} = []; + } +} + + # We are going to alter the list of removed groups, so we keep a copy here. my @unchecked_groups = @$removed_groups; foreach my $b (@bug_objects) { diff --git a/template/en/default/bug/field.html.tmpl b/template/en/default/bug/field.html.tmpl index 9c956ea..a7c64db 100644 --- a/template/en/default/bug/field.html.tmpl +++ b/template/en/default/bug/field.html.tmpl @@ -97,6 +97,24 @@ [% CASE [ constants.FIELD_TYPE_SINGLE_SELECT constants.FIELD_TYPE_MULTI_SELECT ] %] + [% IF override_legal_values %] + [% legal_values = override_legal_values %] + [% ELSE %] + [% legal_values = field.legal_values %] + [% END %] + [% IF field.custom && legal_values.size == 1 %] + + + [% ELSE %]