[Rt-commit] r16551 - in rt/branches/3.999-DANGEROUS: lib/RT/Action

sunnavy at bestpractical.com sunnavy at bestpractical.com
Mon Oct 27 05:45:51 EDT 2008


Author: sunnavy
Date: Mon Oct 27 05:45:49 2008
New Revision: 16551

Modified:
   rt/branches/3.999-DANGEROUS/   (props changed)
   rt/branches/3.999-DANGEROUS/lib/RT/Action/EditTicketCFs.pm

Log:
 r17414 at sunnavys-mb:  sunnavy | 2008-10-27 17:17:12 +0800
 improve cf action a bit


Modified: rt/branches/3.999-DANGEROUS/lib/RT/Action/EditTicketCFs.pm
==============================================================================
--- rt/branches/3.999-DANGEROUS/lib/RT/Action/EditTicketCFs.pm	(original)
+++ rt/branches/3.999-DANGEROUS/lib/RT/Action/EditTicketCFs.pm	Mon Oct 27 05:45:49 2008
@@ -113,35 +113,50 @@
                     }
                 }
 
+                my $not_add;
                 if ($values) {
                     my $delete_flag;
-                    foreach my $old_cf ( @{ $values->items_array_ref } ) {
-                        if (   !$delete_flag
-                            && @$new_values
-                            && $old_cf->content eq $new_values->[0] )
-                        {
-                            shift @$new_values;
-                            next;
+
+                    if (   $cf->max_values == 1
+                        && $values->count == 1
+                        && @$new_values == 1 )
+                    {
+# add_custom_field_value later can handle this
+                        $not_add = 1
+                          if $new_values->[0] eq $values->first->content;
+                    }
+                    else {
+                        foreach my $old_cf ( @{ $values->items_array_ref } ) {
+                            if (   !$delete_flag
+                                && @$new_values
+                                && $old_cf->content eq $new_values->[0] )
+                            {
+                                shift @$new_values;
+                                next;
+                            }
+                            $delete_flag ||= 1;
+                            my ( $val, $msg ) =
+                              $ticket->delete_custom_field_value(
+                                field    => $cfid,
+                                value_id => $old_cf->id,
+                              );
+                            Jifty->log->error($msg) unless $val;
+                            push @{ $self->result->content('detailed_messages')
+                                  ->{ $cf->name } }, $msg;
                         }
-                        $delete_flag ||= 1;
-                        my ( $val, $msg ) = $ticket->delete_custom_field_value(
-                            field    => $cfid,
-                            value_id => $old_cf->id,
+                    }
+                }
+                for my $new_value (@$new_values) {
+                    unless ($not_add) {
+                        my ( $val, $msg ) = $ticket->add_custom_field_value(
+                            field => $cfid,
+                            value => $new_value,
                         );
                         Jifty->log->error($msg) unless $val;
                         push @{ $self->result->content('detailed_messages')
                               ->{ $cf->name } }, $msg;
                     }
                 }
-                for my $new_value (@$new_values) {
-                    my ( $val, $msg ) = $ticket->add_custom_field_value(
-                        field => $cfid,
-                        value => $new_value,
-                    );
-                    Jifty->log->error($msg) unless $val;
-                    push @{ $self->result->content('detailed_messages')
-                          ->{ $cf->name } }, $msg;
-                }
             }
         }
     }


More information about the Rt-commit mailing list