Author: richter
Date: Tue Nov 20 06:19:58 2012
New Revision: 1411558

URL: http://svn.apache.org/viewvc?rev=1411558&view=rev
Log:
Fix Form Validate for required with radio buttons & return names of failed 
controls

Modified:
    perl/embperl/trunk/Embperl/Form/Control.pm
    perl/embperl/trunk/Embperl/Form/ControlMultValue.pm
    perl/embperl/trunk/Embperl/Form/Validate.pm
    perl/embperl/trunk/Embperl/Form/Validate/Default.pm

Modified: perl/embperl/trunk/Embperl/Form/Control.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control.pm?rev=1411558&r1=1411557&r2=1411558&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control.pm Tue Nov 20 06:19:58 2012
@@ -87,7 +87,10 @@ sub is_disabled
     {
     my ($self, $req) = @_ ;
 
-    return $self -> {disable} || $req -> 
{form_options_masks}{$self->{name}}{disable} || $req -> 
{form_options_masks}{'*'}{disable} ;
+    my $disable = $self -> {disable} || $req -> 
{form_options_masks}{$self->{name}}{disable} || $req -> 
{form_options_masks}{'*'}{disable} ;
+    $disable = &{$disable}($self, $req) if (ref ($disable) eq 'CODE') ;
+    
+    return $disable ;
     }
 
 # ---------------------------------------------------------------------------
@@ -100,7 +103,10 @@ sub is_readonly
     {
     my ($self, $req) = @_ ;
 
-    return $self -> {readonly}  || $req -> 
{form_options_masks}{$self->{name}}{readonly} || $req -> 
{form_options_masks}{'*'}{readonly}  ;
+    my $redaonly = $self -> {readonly}  || $req -> 
{form_options_masks}{$self->{name}}{readonly} || $req -> 
{form_options_masks}{'*'}{readonly}  ;
+    $redaonly = &{$redaonly}($req) if (ref ($redaonly) eq 'CODE') ;
+    
+    return $redaonly ;
     }
 
 # ---------------------------------------------------------------------------

Modified: perl/embperl/trunk/Embperl/Form/ControlMultValue.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/ControlMultValue.pm?rev=1411558&r1=1411557&r2=1411558&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/ControlMultValue.pm (original)
+++ perl/embperl/trunk/Embperl/Form/ControlMultValue.pm Tue Nov 20 06:19:58 2012
@@ -103,7 +103,7 @@ sub get_all_values
     if ($addtop)
         {
         push @values, map { $_ -> [0] } @$addtop ;
-        push @options, map { $_ -> [0] } @$addtop ;
+        push @options, map { $_ -> [1] } @$addtop ;
         }
         
     if ($values)
@@ -115,7 +115,7 @@ sub get_all_values
     if ($addbottom)
         {
         push @values, map { $_ -> [0] } @$addbottom ;
-        push @options, map { $_ -> [0] } @$addbottom ;
+        push @options, map { $_ -> [1] } @$addbottom ;
         }
 
     $req -> {$key} = [\@values, \@options] ;

Modified: perl/embperl/trunk/Embperl/Form/Validate.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Validate.pm?rev=1411558&r1=1411557&r2=1411558&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Validate.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Validate.pm Tue Nov 20 06:19:58 2012
@@ -692,11 +692,15 @@ function epform_validate_$fname(return_m
             var elems = document.$fname\[ids[key]\] ;
             if (elems)
                 {
-                if (elems.constructor.name != 'NodeList')
+                if (!(elems instanceof NodeList))
                     elems = [elems] ;
+                if (elems[0] instanceof NodeList)
+                    elems = elems[0] ;
                 for (i = 0; i < elems.length ;i++)
                     {
                     var elem = elems[i] ;
+                    if (elem.getAttribute('type') == 'radio')
+                        elem = elem.parentElement ;
                     var eclass = elem.getAttribute('class') ;
                     elem.setAttribute ('class', eclass + ' ' + failed_class) ;
                     elem.setAttribute ('title', msgs[key]) ;
@@ -706,7 +710,10 @@ function epform_validate_$fname(return_m
         }
         
     if (return_msgs)
-        return msgs ;
+        {
+        var ret = [msgs, ids] ;
+        return ret ;
+        }
         
     if (i)
         alert (msgs.join('\\n')) ;

Modified: perl/embperl/trunk/Embperl/Form/Validate/Default.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Validate/Default.pm?rev=1411558&r1=1411557&r2=1411558&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Validate/Default.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Validate/Default.pm Tue Nov 20 06:19:58 2012
@@ -151,7 +151,7 @@ sub getscript_required
     {
     my ($self, $arg, $pref) = @_ ;
     
-    return ('obj.value', ['validate_required']) ;
+    return ('obj instanceof NodeList?obj[0].value:obj.value', 
['validate_required']) ;
     }
 
 # --------------------------------------------------------------



---------------------------------------------------------------------
To unsubscribe, e-mail: embperl-cvs-unsubscr...@perl.apache.org
For additional commands, e-mail: embperl-cvs-h...@perl.apache.org

Reply via email to