Bug 1007605 - Make FIXED non-fixed, by changing noresolveonopenblockers to define what the fixed resolution is. r,a=glob

git-svn-id: svn://10.0.0.236/trunk@265894 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bzrmirror%bugzilla.org 2015-03-30 18:00:52 +00:00
parent 5c17fd886b
commit ac987f352c
12 changed files with 52 additions and 24 deletions

View File

@ -1 +1 @@
9348
9349

View File

@ -1 +1 @@
2c82105b0fed5d6739111c5de8dba063b01ab446
79ec29975ac8d1a4f49b83ed404a1ee04c33b73c

View File

@ -1937,11 +1937,12 @@ sub _check_resolution {
# Don't allow open bugs to have resolutions.
ThrowUserError('resolution_not_allowed') if $is_open;
# Check noresolveonopenblockers.
# Check if resolution_forbidden_with_open_blockers.
my $dependson = ref($invocant) ? $invocant->dependson
: ($params->{dependson} || []);
if (Bugzilla->params->{"noresolveonopenblockers"}
&& $resolution eq 'FIXED'
if (Bugzilla->params->{"resolution_forbidden_with_open_blockers"}
&& $resolution eq
Bugzilla->params->{"resolution_forbidden_with_open_blockers"}
&& (!ref $invocant or !$invocant->resolution
or $resolution ne $invocant->resolution)
&& scalar @$dependson)

View File

@ -204,6 +204,10 @@ sub update_params {
$new_params{'search_allow_no_criteria'} = $param->{'specific_search_allow_empty_words'};
}
if (exists $param->{'noresolveonopenblockers'}) {
$new_params{'resolution_forbidden_with_open_blockers'} = $param->{'noresolveonopenblockers'} ? 'FIXED' : "";
}
# --- DEFAULTS FOR NEW PARAMS ---
_load_params unless %params;

View File

@ -31,6 +31,10 @@ sub get_param_list {
@closed_bug_statuses = @current_closed_states if scalar(@current_closed_states);
};
my $resolution_field = Bugzilla::Field->new({ name => 'resolution', cache => 1 });
# The empty resolution is included - it represents "no value"
my @resolutions = map {$_->name} @{ $resolution_field->legal_values };
my @param_list = (
{
name => 'duplicate_or_move_bug_status',
@ -71,10 +75,13 @@ sub get_param_list {
},
{
name => 'noresolveonopenblockers',
type => 'b',
default => 0,
name => 'resolution_forbidden_with_open_blockers',
type => 's',
choices => \@resolutions,
default => '',
checker => \&check_resolution,
} );
return @param_list;
}

View File

@ -28,7 +28,7 @@ use parent qw(Exporter);
check_ip check_mail_delivery_method check_notification
check_bug_status check_smtp_auth check_theschwartz_available
check_maxattachmentsize check_email check_smtp_ssl
check_comment_taggers_group check_smtp_server
check_comment_taggers_group check_smtp_server check_resolution
);
# Checking functions for the various values
@ -164,6 +164,18 @@ sub check_bug_status {
return "";
}
sub check_resolution {
my $resolution = shift;
my $resolution_field = Bugzilla::Field->new({ name => 'resolution', cache => 1 });
# The empty resolution is included - it represents "no value"
my @resolutions = map {$_->name} @{ $resolution_field->legal_values };
if (!grep($_ eq $resolution, @resolutions)) {
return "Must be blank or a valid resolution: one of " . join(', ', @resolutions);
}
return "";
}
sub check_group {
my $group_name = shift;
return "" unless $group_name;
@ -464,6 +476,8 @@ valid group is provided.
=item check_bug_status
=item check_resolution
=item check_shadowdb
=item check_smtp_server

View File

@ -88,8 +88,7 @@ sub is_static {
# If we need to special-case Resolution for *anything* else, it should
# get its own subclass.
if ($self->field->name eq 'resolution') {
return grep($_ eq $self->name, ('', 'FIXED', 'DUPLICATE'))
? 1 : 0;
return $self->name eq '' || $self->name eq 'DUPLICATE';
}
elsif ($self->field->custom) {
return $self->name eq '---' ? 1 : 0;

View File

@ -71,10 +71,10 @@ use constant PARAMETERS_LOGGED_IN => qw(
maxattachmentsize
maxlocalattachment
musthavemilestoneonaccept
noresolveonopenblockers
password_complexity
rememberlogin
requirelogin
resolution_forbidden_with_open_blockers
search_allow_no_criteria
urlbase
use_see_also
@ -428,10 +428,10 @@ A logged-in user can access the following parameters (listed alphabetically):
C<maxattachmentsize>,
C<maxlocalattachment>,
C<musthavemilestoneonaccept>,
C<noresolveonopenblockers>,
C<password_complexity>,
C<rememberlogin>,
C<requirelogin>,
C<resolution_forbidden_with_open_blockers>,
C<search_allow_no_criteria>,
C<urlbase>,
C<use_see_also>,

View File

@ -280,12 +280,14 @@ commenton*
any comment as to what the fix was (or even that it was truly
fixed!)
noresolveonopenblockers
This option will prevent users from resolving bugs as FIXED if
they have unresolved dependencies. Only the FIXED resolution
is affected. Users will be still able to resolve bugs to
resolutions other than FIXED if they have unresolved dependent
bugs.
resolution_forbidden_with_open_blockers
This option will prevent users from resolving bugs as the chosen resolution
if they have unresolved dependencies. If using Bugzilla's default
resolutions, the most common value to choose is FIXED, because if a bug
is fixed, either is dependencies are actually fixed (and should be marked
as such) or the dependency is mistaken and should be removed. Only the
chosen resolution is affected; users will be still able to resolve bugs to
other resolutions even if they have unresolved dependent bugs.
.. _param-bugfields:

View File

@ -187,10 +187,10 @@ Example response for authenticated user:
"maxattachmentsize" : "1000",
"maxlocalattachment" : "0",
"musthavemilestoneonaccept" : "0",
"noresolveonopenblockers" : "0",
"password_complexity" : "no_constraints",
"rememberlogin" : "on",
"requirelogin" : "0",
"resolution_forbidden_with_open_blockers" : "FIXED",
"urlbase" : "http://bugzilla.example.com/",
"use_see_also" : "1",
"useclassification" : "1",
@ -225,10 +225,10 @@ A logged-in user can access the following parameters (listed alphabetically):
* maxattachmentsize
* maxlocalattachment
* musthavemilestoneonaccept
* noresolveonopenblockers
* password_complexity
* rememberlogin
* requirelogin
* resolution_forbidden_with_open_blockers
* search_allow_no_criteria
* urlbase
* use_see_also

View File

@ -37,6 +37,6 @@
commentonduplicate => "If this option is on, the user needs to enter a short comment " _
"if the $terms.bug is marked as duplicate.",
noresolveonopenblockers => "Don\'t allow $terms.bugs to be resolved as fixed " _
"if they have unresolved dependencies." }
resolution_forbidden_with_open_blockers => "Don't allow $terms.bugs to be resolved with " _
"this resolution if they have unresolved dependencies." }
%]

View File

@ -1748,7 +1748,8 @@
[% END %].
They must either be resolved or removed from the
"[% field_descs.dependson FILTER html %]" field before you can resolve
this [% terms.bug %] as [% display_value("resolution", "FIXED") FILTER html %].
this [% terms.bug %] as [% display_value("resolution",
Param('resolution_forbidden_with_open_blockers')) FILTER html %].
[% ELSIF error == "sudo_invalid_cookie" %]
[% title = "Invalid Sudo Cookie" %]