[Rt-commit] r9119 - in rt/branches/3.6-RELEASE: html/REST/1.0/Forms/ticket

sunnavy at bestpractical.com sunnavy at bestpractical.com
Fri Sep 21 16:24:07 EDT 2007


Author: sunnavy
Date: Fri Sep 21 16:24:07 2007
New Revision: 9119

Modified:
   rt/branches/3.6-RELEASE/html/REST/1.0/Forms/ticket/default
   rt/branches/3.6-RELEASE/lib/t/regression/26command_line.t

Log:
single value cf can be set rightly through bin/rt.

Modified: rt/branches/3.6-RELEASE/html/REST/1.0/Forms/ticket/default
==============================================================================
--- rt/branches/3.6-RELEASE/html/REST/1.0/Forms/ticket/default	(original)
+++ rt/branches/3.6-RELEASE/html/REST/1.0/Forms/ticket/default	Fri Sep 21 16:24:07 2007
@@ -314,13 +314,44 @@
             }
             else {
                 my $vals = $ticket->CustomFieldValues($cf->id);
-                while (my $v = $vals->Next()) {
-                    $v->Delete();
+
+                if ( $cf->SingleValue ) {
+                    my $old = $vals->Next;
+                    if ( $old ) {
+                        if ( $val ne $old->Content ) {
+                            $old->Delete;
+                            ($n, $s) = $ticket->AddCustomFieldValue(
+                                 Field => $cf, Value => $val );
+                            $s =~ s/^# // if defined $s;
+                        }
+                    }
+                    else {
+                        ($n, $s) = $ticket->AddCustomFieldValue(
+                             Field => $cf, Value => $val );
+                        $s =~ s/^# // if defined $s;
+                    }
                 }
-                for ( split /,\s*/, $val ) {
-                    ($n, $s) = $ticket->AddCustomFieldValue(
-                             Field => $cf, Value => $_ );
-                    $s =~ s/^# // if defined $s;
+                else {
+                    my @new = split ',\s*', $val;
+                    my %new;
+                    $new{$_}++ for @new;
+                     
+                    while (my $v = $vals->Next()) {
+                        my $c = $v->Content;
+                        if ( $new{$c} ) {
+                            $new{$c}--;
+                        }
+                        else {
+                            $v->Delete();
+                        }
+                    }
+                    for ( @new ) {
+                        while ( $new{$_} && $new{$_}-- ) {
+                            ($n, $s) = $ticket->AddCustomFieldValue(
+                                Field => $cf, Value => $_ );
+                            $s =~ s/^# // if defined $s;
+                        }
+                    }
                 }
             }
         }

Modified: rt/branches/3.6-RELEASE/lib/t/regression/26command_line.t
==============================================================================
--- rt/branches/3.6-RELEASE/lib/t/regression/26command_line.t	(original)
+++ rt/branches/3.6-RELEASE/lib/t/regression/26command_line.t	Fri Sep 21 16:24:07 2007
@@ -3,7 +3,7 @@
 use strict;
 use Test::Expect;
 #use Test::More qw/no_plan/;
-use Test::More tests => 235;
+use Test::More tests => 241;
 
 use RT;
 RT::LoadConfig();
@@ -167,6 +167,14 @@
 expect_send("show ticket/$ticket_id -f 'CF-my CF$$'", 'Checking new value');
 expect_like(qr/my CF$$: VALUE/i, 'Verified change');
 
+# Test reading and setting single value custom field with commas
+expect_send("show ticket/$ticket_id -f 'CF-my CF$$'", 'Checking initial value');
+expect_like(qr/my CF$$:/i, 'Verified change');
+expect_send("edit ticket/$ticket_id set 'CF-my CF$$=1,2,3' ", 'Changing CF...');
+expect_like(qr/Ticket $ticket_id updated/, 'Changed cf');
+expect_send("show ticket/$ticket_id -f 'CF-my CF$$'", 'Checking new value');
+expect_like(qr/my CF$$: 1,2,3/i, 'Verified change');
+
 # Test reading and setting custom fields with multiple values
 expect_send("show ticket/$ticket_id -f CF-MultipleCF$$", 'Checking initial value');
 expect_like(qr/CF-MultipleCF$$:/i, 'Verified multiple cf change');


More information about the Rt-commit mailing list