Commit 43f03aa4 authored by dkl%redhat.com's avatar dkl%redhat.com

Bug 99205: Allow mass-editing of dependencies

Patch by Dave Lawrence <dkl@redhat.com> - r/a=mkanat
parent dd52ea1b
......@@ -1156,7 +1156,9 @@ sub _check_dependencies {
my %deps_in = (dependson => $depends_on || '', blocked => $blocks || '');
foreach my $type qw(dependson blocked) {
my @bug_ids = split(/[\s,]+/, $deps_in{$type});
my @bug_ids = ref($deps_in{$type})
? @{$deps_in{$type}}
: split(/[\s,]+/, $deps_in{$type});
# Eliminate nulls.
@bug_ids = grep {$_} @bug_ids;
# We do this up here to make sure all aliases are converted to IDs.
......
......@@ -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;
......
......@@ -229,6 +229,36 @@
</tr>
[% END %]
<tr>
<th>
<label for="dependson">
Depends On:
</label>
</th>
<td colspan="3">
<input id="dependson" name="dependson" size="32">
<select name="dependson_action">
<option value="add">Add these IDs</option>
<option value="remove">Delete these IDs</option>
</select>
</td>
</tr>
<tr>
<th>
<label for="blocked">
Blocks:
</label>
</th>
<td colspan="3">
<input id="blocked" name="blocked" size="32">
<select name="blocked_action">
<option value="add">Add these IDs</option>
<option value="remove">Delete these IDs</option>
</select>
</td>
</tr>
[% IF Param('usestatuswhiteboard') %]
<tr>
<td align="right">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment