X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FElements%2FValidateCustomFields;h=922b885f2d57336cbe199ccf8a2259598db056fe;hb=a6fe07e49e3fc12169e801b1ed6874c3a5bd8500;hp=539c6f483785455b7124d9141a8043d655a3bbf8;hpb=fc6209f398899f0211cfcedeb81a3cd65e04a941;p=freeside.git diff --git a/rt/share/html/Elements/ValidateCustomFields b/rt/share/html/Elements/ValidateCustomFields index 539c6f483..922b885f2 100644 --- a/rt/share/html/Elements/ValidateCustomFields +++ b/rt/share/html/Elements/ValidateCustomFields @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) @@ -81,7 +81,32 @@ while ( my $CF = $CustomFields->Next ) { grep defined, @values; @values = ('') unless @values; - foreach my $value( @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, $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, $msg; + $valid = 0; + } + } + } + next if $CF->MatchPattern($value); my $msg = loc("Input must match [_1]", $CF->FriendlyPattern);