diff options
-rw-r--r-- | Bugzilla/Bug.pm | 37 | ||||
-rw-r--r-- | template/en/default/global/user-error.html.tmpl | 35 |
2 files changed, 16 insertions, 56 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index 2cf49d151..db9f2438d 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -1757,13 +1757,14 @@ sub _check_resolution { # Check noresolveonopenblockers. if (Bugzilla->params->{"noresolveonopenblockers"} && $resolution eq 'FIXED' - && (!$self->resolution || $resolution ne $self->resolution)) + && (!$self->resolution || $resolution ne $self->resolution) + && scalar @{$self->dependson}) { - my @dependencies = CountOpenDependencies($self->id); - if (@dependencies) { + my $dep_bugs = Bugzilla::Bug->new_from_list($self->dependson); + my $count_open = grep { $_->isopened } @$dep_bugs; + if ($count_open) { ThrowUserError("still_unresolved_bugs", - { dependencies => \@dependencies, - dependency_count => scalar @dependencies }); + { bug_id => $self->id, dep_count => $count_open }); } } @@ -3775,32 +3776,6 @@ sub map_fields { return \%field_values; } -# CountOpenDependencies counts the number of open dependent bugs for a -# list of bugs and returns a list of bug_id's and their dependency count -# It takes one parameter: -# - A list of bug numbers whose dependencies are to be checked -sub CountOpenDependencies { - my (@bug_list) = @_; - my @dependencies; - my $dbh = Bugzilla->dbh; - - my $sth = $dbh->prepare( - "SELECT blocked, COUNT(bug_status) " . - "FROM bugs, dependencies " . - "WHERE " . $dbh->sql_in('blocked', \@bug_list) . - "AND bug_id = dependson " . - "AND bug_status IN (" . join(', ', map {$dbh->quote($_)} BUG_STATE_OPEN) . ") " . - $dbh->sql_group_by('blocked')); - $sth->execute(); - - while (my ($bug_id, $dependencies) = $sth->fetchrow_array()) { - push(@dependencies, { bug_id => $bug_id, - dependencies => $dependencies }); - } - - return @dependencies; -} - ################################################################################ # check_can_change_field() defines what users are allowed to change. You # can add code here for site-specific policy changes, according to the diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl index 1fd2a52e1..2d5ad72d7 100644 --- a/template/en/default/global/user-error.html.tmpl +++ b/template/en/default/global/user-error.html.tmpl @@ -1483,32 +1483,17 @@ already exists. [% ELSIF error == "still_unresolved_bugs" %] - [% IF dependency_count == 1 %] - [% terms.Bug %]# <a href="show_bug.cgi?id=[% dependencies.0.bug_id FILTER none %]">[% dependencies.0.bug_id FILTER none %]</a> - still has [% dependencies.0.dependencies FILTER html %] unresolved - [% IF dependencies.0.dependencies == 1 %] - dependency - [% ELSE %] - dependencies - [% END %]. Show - <a href="showdependencytree.cgi?id=[% dependencies.0.bug_id FILTER none %]&hide_resolved=1">Dependency - Tree</a>. + [% title = "Unresolved Dependencies" %] + [% terms.Bug %] [%+ bug_id FILTER bug_link(bug_id) FILTER none %] + has [% dep_count FILTER none %] unresolved + [% IF dep_count == 1 %] + dependency [% ELSE %] - There are [% dependency_count FILTER none %] open [% terms.bugs %] which - have unresolved dependencies. - <br> - [% FOREACH bug = dependencies %] - [% terms.Bug %]# <a href="show_bug.cgi?id=[% bug.bug_id FILTER none %]">[% bug.bug_id FILTER none %]</a> - has [% bug.dependencies FILTER html %] open - [% IF bug.dependencies == 1 %] - dependency. - [% ELSE %] - dependencies. - [% END %] - (<a href="showdependencytree.cgi?id=[% bug.bug_id FILTER none %]&hide_resolved=1">Dependency - Tree</a>)<br> - [% END %] - [% END %] + dependencies + [% 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 %]. [% ELSIF error == "sudo_invalid_cookie" %] [% title = "Invalid Sudo Cookie" %] |