From 43f03aa4fb7fce809332f05e6d973430a515f960 Mon Sep 17 00:00:00 2001 From: "dkl%redhat.com" <> Date: Sun, 4 Jan 2009 04:38:35 +0000 Subject: Bug 99205: Allow mass-editing of dependencies Patch by Dave Lawrence - r/a=mkanat --- process_bug.cgi | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'process_bug.cgi') diff --git a/process_bug.cgi b/process_bug.cgi index bea5d1a7b..c64594bd9 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -271,10 +271,24 @@ if ($cgi->param('id') && (defined $cgi->param('dependson') $first_bug->set_dependencies(scalar $cgi->param('dependson'), scalar $cgi->param('blocked')); } -# Right now, you can't modify dependencies on a mass change. -else { - $cgi->delete('dependson'); - $cgi->delete('blocked'); +elsif (should_set('dependson') || should_set('blocked')) { + foreach my $bug (@bug_objects) { + my %temp_deps; + foreach my $type (qw(dependson blocked)) { + $temp_deps{$type} = { map { $_ => 1 } @{$bug->$type} }; + if (should_set($type) && $cgi->param($type . '_action') =~ /^(add|remove)$/) { + foreach my $id (split(/[,\s]+/, $cgi->param($type))) { + if ($cgi->param($type . '_action') eq 'remove') { + delete $temp_deps{$type}{$id}; + } + else { + $temp_deps{$type}{$id} = 1; + } + } + } + } + $bug->set_dependencies([ keys %{$temp_deps{'dependson'}} ], [ keys %{$temp_deps{'blocked'}} ]); + } } my $any_keyword_changes; -- cgit v1.2.3-24-g4f1b