Commit 7072d6a6 authored by Max Kanat-Alexander's avatar Max Kanat-Alexander

Bug 561296: A fix allowing updating a field value's name when it is

the default value r=LpSolit, a=LpSolit
parent 80130158
...@@ -329,6 +329,14 @@ sub _fix_utf8 { ...@@ -329,6 +329,14 @@ sub _fix_utf8 {
return $input; return $input;
} }
sub should_set {
my ($self, $param) = @_;
my $set = (defined $self->param($param)
or defined $self->param("defined_$param"))
? 1 : 0;
return $set;
}
# The various parts of Bugzilla which create cookies don't want to have to # The various parts of Bugzilla which create cookies don't want to have to
# pass them around to all of the callers. Instead, store them locally here, # pass them around to all of the callers. Instead, store them locally here,
# and then output as required from |header|. # and then output as required from |header|.
......
...@@ -61,7 +61,7 @@ use constant VALIDATORS => { ...@@ -61,7 +61,7 @@ use constant VALIDATORS => {
value => \&_check_value, value => \&_check_value,
sortkey => \&_check_sortkey, sortkey => \&_check_sortkey,
visibility_value_id => \&_check_visibility_value_id, visibility_value_id => \&_check_visibility_value_id,
isactive => \&Bugzilla::Object::check_boolean, isactive => \&_check_isactive,
}; };
use constant CLASS_MAP => { use constant CLASS_MAP => {
...@@ -216,6 +216,25 @@ sub set_visibility_value { ...@@ -216,6 +216,25 @@ sub set_visibility_value {
# Validators # # Validators #
############## ##############
sub _check_isactive {
my ($invocant, $value) = @_;
$value = Bugzilla::Object::check_boolean($invocant, $value);
if (!$value and ref $invocant) {
if ($invocant->is_default) {
my $field = $invocant->field;
ThrowUserError('fieldvalue_is_default',
{ value => $invocant, field => $field,
param_name => $invocant->DEFAULT_MAP->{$field->name}
});
}
if ($invocant->is_static) {
ThrowUserError('fieldvalue_not_deletable',
{ value => $invocant, field => $invocant->field });
}
}
return $value;
}
sub _check_value { sub _check_value {
my ($invocant, $value) = @_; my ($invocant, $value) = @_;
......
...@@ -181,12 +181,12 @@ if ($action eq 'edit') { ...@@ -181,12 +181,12 @@ if ($action eq 'edit') {
if ($action eq 'update') { if ($action eq 'update') {
check_token_data($token, 'edit_field_value'); check_token_data($token, 'edit_field_value');
$vars->{'value_old'} = $value->name; $vars->{'value_old'} = $value->name;
if ($cgi->should_set('is_active')) {
$value->set_is_active($cgi->param('is_active'));
}
$value->set_name($cgi->param('value_new')); $value->set_name($cgi->param('value_new'));
$value->set_sortkey($cgi->param('sortkey')); $value->set_sortkey($cgi->param('sortkey'));
$value->set_visibility_value($cgi->param('visibility_value_id')); $value->set_visibility_value($cgi->param('visibility_value_id'));
if (!($value->is_static || $value->is_default)) {
$value->set_is_active($cgi->param('is_active'));
}
$vars->{'changes'} = $value->update(); $vars->{'changes'} = $value->update();
delete_token($token); delete_token($token);
$vars->{'message'} = 'field_value_updated'; $vars->{'message'} = 'field_value_updated';
......
...@@ -94,7 +94,11 @@ ...@@ -94,7 +94,11 @@
[% ELSIF value.is_static %] [% ELSIF value.is_static %]
This value is non-deletable and cannot be disabled. This value is non-deletable and cannot be disabled.
[% END %] [% END %]
</td> [% IF !(value.is_default OR value.is_static) %]
<input id="defined_is_active" name="defined_is_active"
type="hidden" value="1">
[% END %]
</td>
</tr> </tr>
</table> </table>
<input type="hidden" name="value" value="[% value.name FILTER html %]"> <input type="hidden" name="value" value="[% value.name FILTER html %]">
......
...@@ -521,7 +521,8 @@ ...@@ -521,7 +521,8 @@
[% ELSIF error == "fieldvalue_is_default" %] [% ELSIF error == "fieldvalue_is_default" %]
[% title = "Specified Field Value Is Default" %] [% title = "Specified Field Value Is Default" %]
'[% value.name FILTER html %]' is the default value for '[% value.name FILTER html %]' is the default value for
the '[% field.description FILTER html %]' field and cannot be deleted. the '[% field.description FILTER html %]' field and cannot be deleted
or disabled.
[% IF user.in_group('tweakparams') %] [% IF user.in_group('tweakparams') %]
You have to <a href="editparams.cgi?section=bugfields# You have to <a href="editparams.cgi?section=bugfields#
[%- param_name FILTER url_quote %]">change</a> the default value first. [%- param_name FILTER url_quote %]">change</a> the default value first.
...@@ -541,9 +542,9 @@ ...@@ -541,9 +542,9 @@
[% ELSIF error == "fieldvalue_not_deletable" %] [% ELSIF error == "fieldvalue_not_deletable" %]
[% title = "Field Value Not Deletable" %] [% title = "Field Value Not Deletable" %]
The value '[% value.name FILTER html %]' cannot be removed because The value '[% value.name FILTER html %]' cannot be removed or
it plays some special role for the '[% field.description FILTER html %]' disabled, because it plays some special role for the
field. '[% field.description FILTER html %]' field.
[% ELSIF error == "fieldvalue_reserved_word" %] [% ELSIF error == "fieldvalue_reserved_word" %]
[% title = "Reserved Word Not Allowed" %] [% title = "Reserved Word Not Allowed" %]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment