Author: richter Date: Tue Aug 28 08:26:44 2012 New Revision: 1378017 URL: http://svn.apache.org/viewvc?rev=1378017&view=rev Log: Automatic Form Validation for controls number and price
Modified: perl/embperl/trunk/Embperl/Form/Control.pm perl/embperl/trunk/Embperl/Form/Control/displaylink.pm perl/embperl/trunk/Embperl/Form/Control/info.pm perl/embperl/trunk/Embperl/Form/Control/number.pm perl/embperl/trunk/Embperl/Form/Control/price.pm perl/embperl/trunk/Embperl/Form/Validate.pm perl/embperl/trunk/Embperl/Form/Validate/Number.pm Modified: perl/embperl/trunk/Embperl/Form/Control.pm URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control.pm?rev=1378017&r1=1378016&r2=1378017&view=diff ============================================================================== --- perl/embperl/trunk/Embperl/Form/Control.pm (original) +++ perl/embperl/trunk/Embperl/Form/Control.pm Tue Aug 28 08:26:44 2012 @@ -224,6 +224,21 @@ sub label_text # --------------------------------------------------------------------------- # +# get_validate_auto_rules - get rules for validation, in case user did +# not specify any +# should be overwritten by control +# + +sub get_validate_auto_rules + { + my ($self, $req) = @_ ; + + return if (!$self -> {required}) ; + return [ required => 1 ] ; + } + +# --------------------------------------------------------------------------- +# # get_validate_rules - get rules for validation # @@ -234,11 +249,20 @@ sub get_validate_rules my @local_rules ; if ($self -> {validate}) { - @local_rules = ( -key => $self->{name} ); push @local_rules, -name => $self -> label_text ; push @local_rules, @{$self -> {validate}}; } + else + { + my $auto = $self -> get_validate_auto_rules ($req) ; + if ($auto) + { + @local_rules = ( -key => $self->{name} ); + push @local_rules, -name => $self -> label_text ; + push @local_rules, @{$auto}; + } + } return \@local_rules ; } Modified: perl/embperl/trunk/Embperl/Form/Control/displaylink.pm URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/displaylink.pm?rev=1378017&r1=1378016&r2=1378017&view=diff ============================================================================== --- perl/embperl/trunk/Embperl/Form/Control/displaylink.pm (original) +++ perl/embperl/trunk/Embperl/Form/Control/displaylink.pm Tue Aug 28 08:26:44 2012 @@ -51,6 +51,7 @@ my $opens = $self -> {open} ; my $displays = $self -> {link} || $self -> {value} ; my $form = $self -> form ; my $showoptions = $self -> {showoptions} ; +my $state = $self -> {state} ; $hrefs = [$hrefs] if (!ref $hrefs) ; $targets = [$targets] if ($targets && !ref $targets) ; @@ -67,9 +68,9 @@ $] <div [+ do { local $escmode = 0 ; $self -> get_std_control_attr($req, '', 'readonly') } +]> [$ foreach $display (@displays) $] [$if $opens[$dispn] $] - <a href="#" onclick="[+ $opens[$dispn] +][$if $hrefs[$dispn] $]('[+ $hrefs[$dispn] +]')[$endif$]" [+ do { local $escmode = 0 ; $self -> {eventattrs} } +]> + <a href="#" class="[+ $state +]" onclick="if (this.className.search('ef-disabled') == -1) [+ $opens[$dispn] +][$if $hrefs[$dispn] $]('[+ $hrefs[$dispn] +]')[$endif$]" [+ do { local $escmode = 0 ; $self -> {eventattrs} } +]> [$else$] - <a href="[+ do {local $escmode=0;$hrefs[$dispn]} +]" + <a href="[+ do {local $escmode=0;$hrefs[$dispn]} +]" class="[+ $state +]" [$if $targets -> [$dispn] $]target="[+ $targets -> [$dispn] +]"[$endif$] [+ do { local $escmode = 0 ; $self -> {eventattrs} } +]> [$endif$][$ if $showoptions < 0 $][+ do { local $escmode = 0 ; $display } +][$else$][+ $showoptions?$display:$form -> convert_text ($self, $display) +][$endif$]</a> Modified: perl/embperl/trunk/Embperl/Form/Control/info.pm URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/info.pm?rev=1378017&r1=1378016&r2=1378017&view=diff ============================================================================== --- perl/embperl/trunk/Embperl/Form/Control/info.pm (original) +++ perl/embperl/trunk/Embperl/Form/Control/info.pm Tue Aug 28 08:26:44 2012 @@ -36,9 +36,9 @@ my $span = ($self->{width_percent}); my $section = $self->{section}; my $class = $self -> {class} ; my $state = $self -> {state} ; -$]<table class="ef-element ef-element-width-[+ $self -> {width_percent} +] [+ $state +]"> +$]<table class="ef-element ef-element-width-[+ $self -> {width_percent} +][+ ' '+][+ $state +]"> <tr> -<td class="do { local $escmode = 0 ; $self -> get_std_control_attr($req, '', 'readonly') }">[$ if $section $]<b>[$ endif $][$ if $self -> {image} $]<img class="cControlButtonSymbol" src="[+ $self -> {image} +]">[$endif$][+ $self -> {showtext}?($self->{text}):$self -> form -> convert_text ($self) +] [$ if $section $]</b>[$ endif $]</td> +<td class="[+ do { local $escmode = 0 ; $self -> get_std_control_attr($req, '', 'readonly') } +]">[$ if $section $]<b>[$ endif $][$ if $self -> {image} $]<img class="cControlButtonSymbol" src="[+ $self -> {image} +]">[$endif$][+ $self -> {showtext}?($self->{text}):$self -> form -> convert_text ($self) +] [$ if $section $]</b>[$ endif $]</td> </tr> </table>[$endsub$] Modified: perl/embperl/trunk/Embperl/Form/Control/number.pm URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/number.pm?rev=1378017&r1=1378016&r2=1378017&view=diff ============================================================================== --- perl/embperl/trunk/Embperl/Form/Control/number.pm (original) +++ perl/embperl/trunk/Embperl/Form/Control/number.pm Tue Aug 28 08:26:44 2012 @@ -49,6 +49,19 @@ sub show_control_readonly $self -> SUPER::show_control_readonly ($req, $value) ; } +# --------------------------------------------------------------------------- +# +# get_validate_auto_rules - get rules for validation, in case user did +# not specify any +# + +sub get_validate_auto_rules + { + my ($self, $req) = @_ ; + + return [ $self -> {required}?(required => 1):(emptyok => 1), -type => 'PosInteger' ] ; + } + 1 ; __EMBPERL__ Modified: perl/embperl/trunk/Embperl/Form/Control/price.pm URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/price.pm?rev=1378017&r1=1378016&r2=1378017&view=diff ============================================================================== --- perl/embperl/trunk/Embperl/Form/Control/price.pm (original) +++ perl/embperl/trunk/Embperl/Form/Control/price.pm Tue Aug 28 08:26:44 2012 @@ -109,6 +109,19 @@ sub prepare_fdat $fdat->{$name} = $val + 0 ; } + +# --------------------------------------------------------------------------- +# +# get_validate_auto_rules - get rules for validation, in case user did +# not specify any +# + +sub get_validate_auto_rules + { + my ($self, $req) = @_ ; + + return [ $self -> {required}?(required => 1):(emptyok => 1), -type => 'Number' ] ; + } 1 ; Modified: perl/embperl/trunk/Embperl/Form/Validate.pm URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Validate.pm?rev=1378017&r1=1378016&r2=1378017&view=diff ============================================================================== --- perl/embperl/trunk/Embperl/Form/Validate.pm (original) +++ perl/embperl/trunk/Embperl/Form/Validate.pm Tue Aug 28 08:26:44 2012 @@ -594,13 +594,13 @@ sub gather_script_code } if (!ref $key) { - $script .= "obj = document.$form\['$key'\] ; if (!($code)) { $setmsg " . ($param{fail}?'fail=1;break;':($param{cont}?'':'break;')) . "}\n" ; + $script .= "obj = document.$form\['$key'\] ; if (obj && !($code)) { $setmsg " . ($param{fail}?'fail=1;break;':($param{cont}?'':'break;')) . "}\n" ; } else { foreach my $k (@$keys) { - $script .= "obj = document.$form\['$k'\] ; if (!($code)) {" ; + $script .= "obj = document.$form\['$k'\] ; if (obj && !($code)) {" ; } $script .= " $setmsg " . ($param{fail}?'fail=1;break;':($param{cont}?'':'break;')) . "\n" ; @@ -676,25 +676,27 @@ function epform_validate_$fname(return_m $script ; } while (0) ; - var firstelem ; if (failed_class) { var key ; + var i ; for (key in ids) { - var elem = document.$fname\[ids[key]\] ; - if (elem) + var elems = document.$fname\[ids[key]\] ; + if (elems) { - var eclass = elem.getAttribute('class') ; - elem.setAttribute ('class', eclass + ' ' + failed_class) ; - elem.setAttribute ('title', msgs[key]) ; - if (!firstelem) - firstelem = elem ; + if (elems.constructor.name != 'NodeList') + elems = [elems] ; + for (i = 0; i < elems.length ;i++) + { + var elem = elems[i] ; + var eclass = elem.getAttribute('class') ; + elem.setAttribute ('class', eclass + ' ' + failed_class) ; + elem.setAttribute ('title', msgs[key]) ; + } } } } - if (firstelem) - firstelem.focus() ; if (return_msgs) return msgs ; Modified: perl/embperl/trunk/Embperl/Form/Validate/Number.pm URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Validate/Number.pm?rev=1378017&r1=1378016&r2=1378017&view=diff ============================================================================== --- perl/embperl/trunk/Embperl/Form/Validate/Number.pm (original) +++ perl/embperl/trunk/Embperl/Form/Validate/Number.pm Tue Aug 28 08:26:44 2012 @@ -58,7 +58,7 @@ sub validate { my ($self, $key, $value, $fdat, $pref) = @_ ; - return $value =~ /^\s*[0-9+-.][0-9.eE]*\s*$/ ? undef : ['validate_number', $value] ; + return $value =~ /^\s*[0-9+-.,][0-9.,eE]*\s*$/ ? undef : ['validate_number', $value] ; } # -------------------------------------------------------------- @@ -67,7 +67,7 @@ sub getscript_validate { my ($self, $arg, $pref) = @_ ; - return ('obj.value.search(/^\s*[0-9+-.][0-9.eE]*\s*$/) >= 0', ['validate_number', "'+obj.value+'"]) ; + return ('obj.value.search(/^\s*[0-9+-.,][0-9.,eE]*\s*$/) >= 0', ['validate_number', "'+obj.value+'"]) ; } # -------------------------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: embperl-cvs-unsubscr...@perl.apache.org For additional commands, e-mail: embperl-cvs-h...@perl.apache.org