]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 69447 - Make CC changes not cause midairs.
authorDave Lawrence <dlawrence@mozilla.com>
Tue, 4 Sep 2012 22:25:24 +0000 (18:25 -0400)
committerDave Lawrence <dlawrence@mozilla.com>
Tue, 4 Sep 2012 22:25:24 +0000 (18:25 -0400)
r/a=LpSolit

process_bug.cgi

index d9ae9c109ce516a89a430488f15754562c7b427f..05c882ed86b67e0e291a6e194a3d83bb5acf33db 100755 (executable)
@@ -118,23 +118,43 @@ if (defined $cgi->param('delta_ts'))
     if ($first_delta_tz_z ne $delta_ts_z) {
         ($vars->{'operations'}) = $first_bug->get_activity(undef, $cgi->param('delta_ts'));
 
-        $vars->{'title_tag'} = "mid_air";
-    
         ThrowCodeError('undefined_field', { field => 'longdesclength' })
             if !defined $cgi->param('longdesclength');
 
-        $vars->{'start_at'} = $cgi->param('longdesclength');
+        my $start_at = $cgi->param('longdesclength');
+
         # Always sort midair collision comments oldest to newest,
         # regardless of the user's personal preference.
-        $vars->{'comments'} = $first_bug->comments({ order => "oldest_to_newest" });
-        $vars->{'bug'} = $first_bug;
+        my $comments = $first_bug->comments({ order => "oldest_to_newest" });
 
         # The token contains the old delta_ts. We need a new one.
         $cgi->param('token', issue_hash_token([$first_bug->id, $first_bug->delta_ts]));
-        # Warn the user about the mid-air collision and ask them what to do.
-        $template->process("bug/process/midair.html.tmpl", $vars)
-          || ThrowTemplateError($template->error());
-        exit;
+
+        # Show midair if previous changes made other than CC
+        # and/or one or more comments were made
+        my $do_midair = scalar @$comments > $start_at ? 1 : 0;
+
+        if (!$do_midair) {
+            foreach my $operation (@{ $vars->{'operations'} }) {
+                foreach my $change (@{ $operation->{'changes'} }) {
+                    $do_midair = 1 if $change->{'fieldname'} ne 'cc';
+                    last;
+                }
+                last if $do_midair;
+            }
+        }
+
+        if ($do_midair) {
+            $vars->{'title_tag'} = "mid_air";
+            $vars->{'start_at'} = $start_at;
+            $vars->{'comments'} = $comments;
+            $vars->{'bug'} = $first_bug;
+
+            # Warn the user about the mid-air collision and ask them what to do.
+            $template->process("bug/process/midair.html.tmpl", $vars)
+                || ThrowTemplateError($template->error());
+            exit;
+        }
     }
 }