Author: richter
Date: Wed Dec 28 19:46:34 2011
New Revision: 1225319

URL: http://svn.apache.org/viewvc?rev=1225319&view=rev
Log:
Allow Multiple Forms in one html document

Modified:
    perl/embperl/trunk/Embperl/Form.pm
    perl/embperl/trunk/Embperl/Form/Control/datetime.pm
    perl/embperl/trunk/Embperl/Form/Control/tabs.pm

Modified: perl/embperl/trunk/Embperl/Form.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form.pm?rev=1225319&r1=1225318&r2=1225319&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form.pm (original)
+++ perl/embperl/trunk/Embperl/Form.pm Wed Dec 28 19:46:34 2011
@@ -33,6 +33,7 @@ use Storable ;
 use MIME::Base64 ;
 
 our %forms ;
+our $form_cnt = 1 ;
 our %CLEANUP = ('forms' => 0) ;
 
 use vars qw{$epreq} ;
@@ -79,7 +80,7 @@ sub sub_new
 
     if ($toplevel)
         {
-       $self -> {fields2empty} = [] ;
+        $self -> {fields2empty} = [] ;
         $self -> {init_data}    = [] ;
         $self -> {prepare_fdat} = [] ;
         }
@@ -477,6 +478,15 @@ sub show_controls
     {
     my ($self, $req, $activeid) = @_ ;
 
+    if ($self -> {toplevel})
+        {
+        $self -> {unique_id}    = '_' . $$ . '_' . $form_cnt++ ;
+        }
+    else
+        {
+        $self -> {unique_id}    = $self -> parent_form -> {unique_id} ;
+        }
+
     my $lines = $self -> {layout} ;
     my %n ;
     my $activesubid ;
@@ -530,9 +540,13 @@ sub show
     {
     my ($self, $req, $activeid) = @_ ;
 
-    $self -> init_data ($req) if ($self -> {toplevel});
+    if ($self -> {toplevel})
+        {
+        $self -> init_data ($req) ;
+        $self -> show_form_begin ($req) ;
+        }
+    
     #$self -> validate ($req) if ($self -> {toplevel});
-    $self -> show_form_begin ($req) if ($self -> {toplevel});
     $self -> show_controls ($req, $activeid) ;
     $self -> show_form_end  ($req) if ($self -> {toplevel});
     }
@@ -892,7 +906,7 @@ onSubmit="v=doValidate; doValidate=1; re
 my $parent = $self -> parent_form ;
 my $class  = $self -> {options}{classdiv} || ($parent -> 
{noframe}?'ef-tabs-border-u':'ef-tabs-border') ;
 $]
-<div  id="[+ $self->{id} +]"
+<div  id="[+ $self -> {unique_id} +]_[+ $self->{id} +]"
 [$if ($activeid && $self->{id} ne $activeid) $] style="display: none" [$endif$]
 >
 [$if (!$self -> {noframe}) $]<table class="[+ $class +]"><tr><td 
class="ef-tabs-content-cell"> [$endif$]

Modified: perl/embperl/trunk/Embperl/Form/Control/datetime.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/datetime.pm?rev=1225319&r1=1225318&r2=1225319&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/datetime.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/datetime.pm Wed Dec 28 19:46:34 2011
@@ -162,7 +162,7 @@ my $class = $self -> {class} ||= '' ;
 my $nsprefix = $self -> form -> {jsnamespace} ;
 $]
 
-<input type="text"  [+ do { local $escmode = 0 ; $self -> 
get_std_control_attr() } +]
+<input type="text" name="[+ $self -> {force_name} || $self -> {name} +]"  [+ 
do { local $escmode = 0 ; $self -> get_std_control_attr() } +]
 [$if $self -> {size} $]size="[+ $self->{size} +]"[$endif$]
 [$if $self -> {maxlength} $]maxlength="[+ $self->{maxlength} +]"[$endif$]
 >

Modified: perl/embperl/trunk/Embperl/Form/Control/tabs.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/tabs.pm?rev=1225319&r1=1225318&r2=1225319&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/tabs.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/tabs.pm Wed Dec 28 19:46:34 2011
@@ -105,7 +105,10 @@ __EMBPERL__
     my $name     = $self -> {name} ;
     my $dataval  = $fdat{$name} || $values -> [0] ;
     my $activeid = $self -> get_active_id ($req) ;
-    my $nsprefix = $self -> form -> {jsnamespace} ;
+    my $form     = $self -> form ;
+    my $nsprefix = $form -> {jsnamespace} ;
+    my $uid      = $form -> {unique_id} ;
+    my $fullname = $uid . '_' . $name ;
     my $tabs_per_line = $self -> {'tabs_per_line'} || 99;
     $tabs_per_line = [$tabs_per_line, $tabs_per_line, $tabs_per_line, 
$tabs_per_line] 
        if (!ref $tabs_per_line) ;
@@ -126,12 +129,11 @@ $]
       *]
       [$ while ($i < @$values) $]
         [*
-       $val = $values -> [$i] ;
+        $val = $values -> [$i] ;
         my $id        = $self -> {subids}[$i] ;
         my $cellclass = $id eq $activeid?'ef-tabs-cell-on':'ef-tabs-cell-off' ;
         my $divclass  = $id eq $activeid?'ef-tabs-div-on':'ef-tabs-div-off' ;
 
-        my $form = $self -> form ;
         my @switch_code ;
 
         foreach my $sub (@{$form -> {controls}})
@@ -140,11 +142,12 @@ $]
             push @switch_code, $code if ($code) ;
             }
         my $js = join (';', @switch_code) ;
+        my $fullid = $uid . '_' . $id ;
         *]
         <td class="[+ $cellclass +]"><div class="[+ $divclass +]" 
               [$ if $i - $start_i == 0 $]style="border-left: black 1px solid" 
[$endif$]
-              id="__tabs_[+ $id +]">
-        <a href="#" onClick="[+ $nsprefix +]tab_selected(document, '[+ $id 
+]','[+ $name +]'); [+ do { local $escmode = 0 ; $js } +]" style="color:black; 
text-decoration: none;">[+ $options ->[$i] || $val +]</a></div></td>
+              id="__tabs_[+ $fullid +]">
+        <a href="#" onClick="[+ $nsprefix +]tab_selected(document, '[+ $fullid 
+]','[+ $fullname +]'); [+ do { local $escmode = 0 ; $js } +]" 
style="color:black; text-decoration: none;">[+ $options ->[$i] || $val 
+]</a></div></td>
         [* $i++ ;
            if ($i - $start_i >= $tabs && @$values > $i)
              {
@@ -157,7 +160,7 @@ $]
       [$if ($i == @$values) $]<td 
class="ef-tabs-cell-blank">&nbsp;</td>[$endif$]
       </tr></table>
     [$endwhile$]
-    <input type="hidden" name="[+ $name +]" id="[+ $name +]" value="[+ 
$activeid +]">
+    <input type="hidden" name="[+ $name +]" id="[+ $fullname +]" value="[+ 
$uid +]_[+ $activeid +]">
 </td>
 [$endsub$]
 



---------------------------------------------------------------------
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