summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Bug.pm37
-rw-r--r--template/en/default/global/user-error.html.tmpl35
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 %]&amp;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 %]&amp;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" %]