Author: richter
Date: Sun Nov 12 20:41:09 2006
New Revision: 474140

URL: http://svn.apache.org/viewvc?view=rev&rev=474140
Log:
- Embperl::Form: readonly handling for radio buttons
- Embperl::Form::Validate: checked and notchecked validation rules

Modified:
    perl/embperl/trunk/Changes.pod
    perl/embperl/trunk/Embperl/Form/Control/radio.pm
    perl/embperl/trunk/Embperl/Form/Validate.pm
    perl/embperl/trunk/Embperl/Form/Validate/Default.pm

Modified: perl/embperl/trunk/Changes.pod
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Changes.pod?view=diff&rev=474140&r1=474139&r2=474140
==============================================================================
--- perl/embperl/trunk/Changes.pod (original)
+++ perl/embperl/trunk/Changes.pod Sun Nov 12 20:41:09 2006
@@ -23,6 +23,7 @@
     - Added Table of Content pod file, which lists
       all available Embperl documentation, to get
       a better overview. Thanks to Axel Beckert.
+    - Additional checked and notchecked Validationrules
     - Fixed Cookie expire calculation, because
       relative exipre times where only calculated
       once at server startup. Spotted by Derrick Spell. 

Modified: perl/embperl/trunk/Embperl/Form/Control/radio.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/radio.pm?view=diff&rev=474140&r1=474139&r2=474140
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/radio.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/radio.pm Sun Nov 12 20:41:09 2006
@@ -31,8 +31,29 @@
     {
     my ($self, $req) = @_ ;
 
+    my ($values, $options) = $self -> get_values ;
     my $name     = $self -> {name} ;
-    $self -> show_control ($req, "^\Q$fdat{$name}\\E\$") ;
+    my $addtop   = $self -> {addtop} || [] ;
+    my $addbottom= $self -> {addbottom} || [] ;
+    my $set      = !defined ($fdat{$name})?1:0 ;
+    my $filter   = $self -> {filter} ;
+
+    my $val ;     
+    my $i = 0 ;
+
+    if ($set)
+        {
+        foreach $val ((@$addtop, @$values, @$addbottom)) 
+            {
+            if (!defined ($filter) || (ref $val?$val -> [0]:$val =~ 
/$filter/i))
+                {
+                $fdat{$name} = ref $val?$val -> [0]:$val  ; 
+                last ;
+                }
+            }
+        }            
+
+    $self -> show_control ($req, "^\Q$fdat{$name}\\E\$", $values, $options) ;
     }
 
 1 ;
@@ -44,9 +65,9 @@
 #   show_control - output the control
 #]
 
-[$ sub show_control ($self, $req, $filter)
+[$ sub show_control ($self, $req, $filter, $values, $options)
 
-    my ($values, $options) = $self -> get_values ($req) ;
+    ($values, $options) = $self -> get_values ($req) if (!$values) ;
     my $name     = $self -> {name} ;
     $filter    ||= $self -> {filter} ;
     my $addtop   = $self -> {addtop} || [] ;
@@ -56,32 +77,48 @@
 
     my $val ;
     my $i = 0 ;
+
+if ($self -> {vert})
+    {
+    $tr = '<tr>' ;
+    $trend = '</tr>' ;
+    $trglob = '' ;
+    $trendglob = '' ;
+    }
+else
+    {
+    $tr = '' ;
+    $trend = '' ;
+    $trglob = '<tr>' ;
+    $trendglob = '</tr>' ;
+    }
+
 $]
+<table class="cRadioTab">[+ do { local $escmode = 0 ; $trglob }+]
 [$ foreach $val (@$addtop) $]
     [$if !defined ($filter) || ($val->[0] =~ /$filter/i) $]
     [- $fdat{$name} = $val -> [0], $set = 0 if ($set) ; -]
-    <input type="radio" name="[+ $name +]" value="[+ $val -> [0] +]"
-    >[+ $val ->[1] || $val -> [0] +]
+    [+ do { local $escmode = 0 ; $tr }+]<td><input type="radio" name="[+ $name 
+]" value="[+ $val -> [0] +]"
+    ></td><td>[+ $val ->[1] || $val -> [0] +]</td>[+ do { local $escmode = 0 ; 
$trend }+]
     [$endif$]
 [$endforeach$]
 [$ foreach $val (@$values) $]
     [$if !defined ($filter) || ($val =~ /$filter/i) $]
     [- $fdat{$name} = $val, $set = 0 if ($set) ; -]
-    <input type="radio" name="[+ $name +]" value="[+ $val +]"
+    [+ do { local $escmode = 0 ; $tr }+]<td><input type="radio" name="[+ $name 
+]" value="[+ $val +]"
     [$if ($self -> {sublines} || $self -> {subobjects}) $] 
OnClick="show_radio_checked(this,[+ $i +],[+ $max +])" [$endif$]
-    >[+ $options ->[$i] || $val +]
-    [- $vert = $self -> {vert} -][$while $vert-- > 0 $]<br/>[$endwhile$]
+    ></td><td>[+ $options ->[$i] || $val +]</td>[+ do { local $escmode = 0 ; 
$trend }+]
     [$endif$]
     [* $i++ ; *]
 [$endforeach$]
 [$ foreach $val (@$addbottom) $]
     [$if !defined ($filter) || ($val->[0] =~ /$filter/i) $]
     [- $fdat{$name} = $val -> [0], $set = 0 if ($set) ; -]
-    <input type="radio" name="[+ $name +]" value="[+ $val -> [0] +]"
-    >[+ $val ->[1] || $val -> [0] +]
+    [+ do { local $escmode = 0 ; $tr }+]<td><input type="radio" name="[+ $name 
+]" value="[+ $val -> [0] +]"
+    ></td><td>[+ $val ->[1] || $val -> [0] +]</td>[+ do { local $escmode = 0 ; 
$trend }+]
     [$endif$]
 [$endforeach$]
-
+[+ do { local $escmode = 0 ; $trendglob }+]</table>
 [$endsub$]
 
 

Modified: perl/embperl/trunk/Embperl/Form/Validate.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Validate.pm?view=diff&rev=474140&r1=474139&r2=474140
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Validate.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Validate.pm Sun Nov 12 20:41:09 2006
@@ -915,6 +915,14 @@
 
 =item must_contain_one_of
 
+=item checked
+
+Checkbox must be selected
+
+=item notchecked
+
+Checkbox must not be selected
+
 =back
 
 

Modified: perl/embperl/trunk/Embperl/Form/Validate/Default.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Validate/Default.pm?view=diff&rev=474140&r1=474139&r2=474140
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Validate/Default.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Validate/Default.pm Sun Nov 12 20:41:09 2006
@@ -171,6 +171,43 @@
     return ('obj.value') ;
     }
 
+
+# --------------------------------------------------------------
+
+sub validate_checked
+    {
+    my ($self, $key, $value, $arg, $fdat, $pref) = @_ ;
+    
+    return !defined($value) || $value eq ''  ? undef : []  ;
+    }
+
+# --------------------------------------------------------------
+
+sub getscript_checked
+    {
+    my ($self, $arg, $pref) = @_ ;
+    
+    return ('obj.checked') ;
+    }
+
+# --------------------------------------------------------------
+
+sub validate_notchecked
+    {
+    my ($self, $key, $value, $arg, $fdat, $pref) = @_ ;
+    
+    return !defined($value) || $value eq ''  ? [] : undef ;
+    }
+
+# --------------------------------------------------------------
+
+sub getscript_notchecked
+    {
+    my ($self, $arg, $pref) = @_ ;
+    
+    return ('!obj.checked') ;
+    }
+
 # --------------------------------------------------------------
 
 sub validate_eq 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to