Mailing List Archive

svn commit: r1378017 - in /perl/embperl/trunk/Embperl/Form: Control.pm Control/displaylink.pm Control/info.pm Control/number.pm Control/price.pm Validate.pm Validate/Number.pm
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>&nbsp;

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) +]&nbsp;[$ 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) +]&nbsp;[$ 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-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-cvs-help@perl.apache.org