]> git.uio.no Git - usit-rt.git/blobdiff - share/html/Elements/ValidateCustomFields
Master to 4.2.8
[usit-rt.git] / share / html / Elements / ValidateCustomFields
index 6f290a109f1b29e3a9e276fe9ebb0c7f3594e97e..8320ed8868747a350bcda24baf76204df24662a7 100644 (file)
@@ -68,37 +68,39 @@ while ( my $CF = $CustomFields->Next ) {
     next if $submitted->{"Values-Magic"} and exists $submitted->{"Values"}
         and ref $submitted->{"Values"};
 
-    $m->notes(('Field-' . $CF->Id) => $submitted->{Value);
+    $m->notes(('Field-' . $CF->Id) => $submitted->{Values} // $submitted->{Value});
 
     my @values = _NormalizeObjectCustomFieldValue(
         CustomField => $CF,
-        Value       => $submitted->{Values} || $submitted->{Value} || $submitted->{Upload},
+        Value       => ($submitted->{Values} // $submitted->{Value} // $submitted->{Upload}),
     );
+    if ($CF->Type =~ /^Date(?:Time)?$/) {
+        if (not @values) {
+            my $values = $Object->CustomFieldValues($CF->Id);
+            while (my $ocfv = $values->Next) {
+                push @values, $ocfv->Content;
+            }
+        }
+        @values = grep {
+            my $DateObj = RT::Date->new ( $session{'CurrentUser'} );
+            $DateObj->Set(
+                Format => 'unknown',
+                Value => $_,
+                ($CF->Type eq "Date" ? (Timezone => 'utc') : ())
+            );
+            $DateObj->IsSet
+        } @values;
+    }
     push @values, '' unless @values;
 
     for my $value( @values ) {
         if ($value) {
-            if ( $CF->Type eq 'IPAddress' ) {
-                use Regexp::Common qw(RE_net_IPv4);
-                my $ip = RT::ObjectCustomFieldValue->ParseIP( $value );
-                unless ( $ip ) {
-                    my $msg =
-                      loc( "Input can not be parsed as an IP address" );
-                    $m->notes( ( 'InvalidField-' . $CF->Id ) => $msg );
-                    push @res, $CF->Name .': '. $msg;
-                    $valid = 0;
-                }
-            }
-            elsif ( $CF->Type eq 'IPAddressRange' ) {
-                my ( $start_ip, $end_ip ) =
-                  RT::ObjectCustomFieldValue->ParseIPRange($value);
-                unless ( $start_ip && $end_ip ) {
-                    my $msg =
-                      loc( "Input can not be parsed as an IP address range" );
-                    $m->notes( ( 'InvalidField-' . $CF->Id ) => $msg );
-                    push @res, $CF->Name .': '. $msg;
-                    $valid = 0;
-                }
+            my $ref = { Content => $value };
+            my ($ok, $msg) = $CF->_CanonicalizeValue( $ref );
+            unless ($ok) {
+                $m->notes( ( 'InvalidField-' . $CF->Id ) => $msg );
+                push @res, $CF->Name .': '. $msg;
+                $valid = 0;
             }
         }