diff --git a/showdependencygraph.cgi b/showdependencygraph.cgi
index 93accdb72..6364df93b 100755
--- a/showdependencygraph.cgi
+++ b/showdependencygraph.cgi
@@ -306,21 +306,28 @@ sub GetEdges
my @stack = keys %$baselist;
- if ($display eq 'web')
+ # web: Any relationship with selected bugs
+ # openweb: Any relationship with selected bugs + state must be open
+ if ($display eq 'web' || $display eq 'openweb')
{
- my $sth = $dbh->prepare("SELECT blocked, dependson
- FROM dependencies
- WHERE blocked = ? OR dependson = ?");
+ my $openweb = $display eq 'openweb' ? 1 : 0;
+ my $sth = $dbh->prepare("SELECT blocked, dependson, bs.bug_status blocked_status, ds.bug_status dependson_status
+ FROM dependencies, bugs bs, bugs ds
+ WHERE (blocked=? OR dependson=?) AND bs.bug_id=blocked AND ds.bug_id=dependson");
foreach my $id (@stack)
{
my $dependencies = $dbh->selectall_arrayref($sth, undef, ($id, $id));
foreach my $dependency (@$dependencies)
{
- my ($blocked, $dependson) = @$dependency;
- if ($blocked != $id && !exists $seen->{$blocked}) {
+ my ($blocked, $dependson, $bs, $ds) = @$dependency;
+ if ($blocked != $id && !exists $seen->{$blocked})
+ {
+ next if $openweb && !is_open_state($bs); # skip AddLink also
push @stack, $blocked;
}
- if ($dependson != $id && !exists $seen->{$dependson}) {
+ if ($dependson != $id && !exists $seen->{$dependson})
+ {
+ next if $openweb && !is_open_state($ds); # skip AddLink also
push @stack, $dependson;
}
AddLink($blocked, $dependson, $seen, $edges);
diff --git a/template/en/default/bug/dependency-graph.html.tmpl b/template/en/default/bug/dependency-graph.html.tmpl
index 2c931b16a..002888e56 100644
--- a/template/en/default/bug/dependency-graph.html.tmpl
+++ b/template/en/default/bug/dependency-graph.html.tmpl
@@ -98,6 +98,8 @@
Restrict to [% terms.bugs %] having a direct relationship with entered [% terms.bugs %]
+