diff options
author | Pami Ketolainen <pami.ketolainen@jollamobile.com> | 2013-04-16 12:14:23 +0200 |
---|---|---|
committer | Frédéric Buclin <LpSolit@gmail.com> | 2013-04-16 12:14:23 +0200 |
commit | e6c6efd5b30f184ac22410808b3bb263eb00779a (patch) | |
tree | 73a32c48407fae63685fce06d7021319b649a4de | |
parent | Bug 861528: $user->can_enter_product() now returns the product object instead... (diff) | |
download | bugzilla-e6c6efd5b30f184ac22410808b3bb263eb00779a.tar.gz bugzilla-e6c6efd5b30f184ac22410808b3bb263eb00779a.tar.bz2 bugzilla-e6c6efd5b30f184ac22410808b3bb263eb00779a.zip |
Bug 782210: If a custom field depends on a product, component or classification, the "mandatory" bit is ignored on bug creation
r/a=LpSolit
-rw-r--r-- | Bugzilla/Bug.pm | 20 | ||||
-rw-r--r-- | Bugzilla/Field/ChoiceInterface.pm | 1 |
2 files changed, 13 insertions, 8 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index cad024bbd..7b86ab2a1 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -730,6 +730,17 @@ sub run_create_validators { my $class = shift; my $params = $class->SUPER::run_create_validators(@_); + # Add classification for checking mandatory fields which depend on it + $params->{classification} = $params->{product}->classification->name; + + my @mandatory_fields = @{ Bugzilla->fields({ is_mandatory => 1, + enter_bug => 1, + obsolete => 0 }) }; + foreach my $field (@mandatory_fields) { + $class->_check_field_is_mandatory($params->{$field->name}, $field, + $params); + } + my $product = delete $params->{product}; $params->{product_id} = $product->id; my $component = delete $params->{component}; @@ -754,18 +765,11 @@ sub run_create_validators { delete $params->{resolution}; delete $params->{lastdiffed}; delete $params->{bug_id}; + delete $params->{classification}; Bugzilla::Hook::process('bug_end_of_create_validators', { params => $params }); - my @mandatory_fields = @{ Bugzilla->fields({ is_mandatory => 1, - enter_bug => 1, - obsolete => 0 }) }; - foreach my $field (@mandatory_fields) { - $class->_check_field_is_mandatory($params->{$field->name}, $field, - $params); - } - return $params; } diff --git a/Bugzilla/Field/ChoiceInterface.pm b/Bugzilla/Field/ChoiceInterface.pm index 87354a103..3292536d3 100644 --- a/Bugzilla/Field/ChoiceInterface.pm +++ b/Bugzilla/Field/ChoiceInterface.pm @@ -183,6 +183,7 @@ sub is_set_on_bug { # This allows bug/create/create.html.tmpl to pass in a hashref that # looks like a bug object. my $value = blessed($bug) ? $bug->$field_name : $bug->{$field_name}; + $value = $value->name if blessed($value); return 0 if !defined $value; if ($self->field->type == FIELD_TYPE_BUG_URLS |