You are viewing a plain text version of this content. The canonical link for it is here.
Posted to embperl-cvs@perl.apache.org by ri...@apache.org on 2012/08/28 10:26:45 UTC

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