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 2011/07/29 06:53:14 UTC

svn commit: r1152101 - in /perl/embperl/trunk/Embperl: Form.pm Form/Control/grid.pm Form/Control/mult.pm Form/Control/selectdyn.pm

Author: richter
Date: Fri Jul 29 04:53:13 2011
New Revision: 1152101

URL: http://svn.apache.org/viewvc?rev=1152101&view=rev
Log:
Fixes for grid and mult

Modified:
    perl/embperl/trunk/Embperl/Form.pm
    perl/embperl/trunk/Embperl/Form/Control/grid.pm
    perl/embperl/trunk/Embperl/Form/Control/mult.pm
    perl/embperl/trunk/Embperl/Form/Control/selectdyn.pm

Modified: perl/embperl/trunk/Embperl/Form.pm
URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form.pm?rev=1152101&r1=1152100&r2=1152101&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form.pm (original)
+++ perl/embperl/trunk/Embperl/Form.pm Fri Jul 29 04:53:13 2011
@@ -66,6 +66,8 @@ sub sub_new
     $self -> {valign}         = $options -> {valign}   || 'top' ;
     $self -> {jsnamespace}    = $options -> {jsnamespace} || '' ;
     $self -> {jsnamespace}   .= '.' if ($self -> {jsnamespace}) ;
+    $self -> {control_packages} = $options -> {control_packages} ;
+    $self -> {datasrc_packages} = $options -> {datasrc_packages} ;
     
     bless $self, $class if (!ref $class);
 
@@ -1090,6 +1092,17 @@ Gives the CSS class of the DIV arround t
 If set to true, allow to call the function diff_checkitems after the data is
 posted and see which form fields are changed.
 
+=item * control_packages
+
+Arrayref with package names to search for form controls. Alternativly you can
+overwrite the method get_control_packages.
+
+=item * datasrc_packages
+
+Arrayref with package names to search for form data source modules. Alternativly you can
+overwrite the method get_datasrc_packages.
+
+
 =back
 
 =back

Modified: perl/embperl/trunk/Embperl/Form/Control/grid.pm
URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/grid.pm?rev=1152101&r1=1152100&r2=1152101&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/grid.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/grid.pm Fri Jul 29 04:53:13 2011
@@ -90,17 +90,17 @@ sub init_data
         foreach my $field (@$fields)
             {
             $col = exists $field -> {col}?$field -> {col}:$j ;
-            $fdat->{"${name}_${j}_$i"} = $data->[$col] ;
+            $fdat->{"__${name}_${j}_$i"} = $data->[$col] ;
             if ($field -> can ('init_data'))
                 {
-                local $field->{name} = "${name}_${j}_$i" ;
+                local $field->{name} = "__${name}_${j}_$i" ;
                 $field -> init_data ($req, $self)  ;
                 }
             $j++ ;    
             }
         $i++ ;
         }
-    $fdat->{"$name-max"} = $i?$i:1;
+    $fdat->{"__${name}_max"} = $i?$i:1;
     }
 
 # ------------------------------------------------------------------------------------------
@@ -130,7 +130,7 @@ sub prepare_fdat
     my $ldap    = $req->{ldap};
     my $name    = $self->{name} ;
     my $fields  = $self -> {fields} ;
-    my $max     = $fdat->{"$name-max"} ;
+    my $max     = $fdat->{"__${name}_max"} ;
 
     my @rows;
     my $j ;
@@ -147,7 +147,7 @@ sub prepare_fdat
             {
             if ((ref ($field) =~ /::/) && $field -> can ('prepare_fdat'))
                 {
-                local $field->{name} = "${name}_${j}_$i" ;
+                local $field->{name} = "__${name}_${j}_$i" ;
                 $field -> prepare_fdat ($req)  ;
                 }
 	    $ok++ ;
@@ -156,7 +156,7 @@ sub prepare_fdat
         
 	next if (!$ok) ;
 
-        $order = $fdat->{"$name-#row#-$i"} ;
+        $order = $fdat->{"__${name}_#row#_$i"} ;
         next if (!defined($order)) ;
         $order = $i + 10000 if (!defined($order)) ;
         $orders{$order} = $i ;
@@ -172,7 +172,7 @@ sub prepare_fdat
         foreach my $field (@$fields)
             {
             $col = exists $field -> {col}?$field -> {col}:$j ;
-            $data[$col+1] = $fdat->{"${name}_${j}_$i"} ;
+            $data[$col+1] = $fdat->{"__${name}_${j}_$i"} ;
             $j++ ;
             }
         $val = $ldap?ecos::LdapBase -> joinAttrValue(\@data):\@data ;
@@ -180,11 +180,11 @@ sub prepare_fdat
         }
     $fdat->{$name} = \@rows ;
     
-    
     foreach my $key (keys %$fdat)
         {
-        delete $fdat->{$key} if ($key =~ /^\Q$name-\E/) ;
+        delete $fdat->{$key} if ($key =~ /^__\Q$name\E_/) ;
         }
+
     }
 
 1 ;
@@ -205,7 +205,7 @@ __EMBPERL__
     my $jsname = $name ;
     $jsname =~ s/[^a-zA-Z0-9]/_/g ;
     $jsname .= 'Grid' ;
-    my $max    = $fdat{"$name-max"} ;
+    my $max    = $fdat{"__${name}_max"} ;
     my $on_grid_change = $self -> {on_grid_change} ;
 $]
   <td class="cBase cLabelBox" colspan="[+ $span +]">
@@ -214,14 +214,14 @@ $]
     my $span = 0 ;
     $self -> show_grid_title ($jsname);
   -]
-  <input type="hidden" name="[+ $self -> {name} +]-max" id="[+ $self -> {id} +]-max">
+  <input type="hidden" name="__[+ $self -> {name} +]_max" id="__[+ $self -> {id} +]_max">
   <table class="cGridTable cBase" id="[+ $self -> {id} +]">
     [- $self -> show_grid_header ($req); -]
     [- $self -> show_grid_table ($req) ; -]
   </table>
   [- $self -> show_grid_title ($jsname)
             if ($max > $self -> {header_bottom}) -]
-  <table id="[+ $self -> {id} +]-newrow" style="display: none">
+  <table id="__[+ $self -> {id} +]_newrow" style="display: none">
     [-
     local $req -> {epf_no_script} = 1 ;
     $self -> show_grid_table_row ($req, '%row%') ;
@@ -229,11 +229,6 @@ $]
   </table>
   <script>
        $('#[+ $self -> {id} +]').eplgrid ([$if $on_grid_change $]{'onchange': [+ $on_grid_change +] }[$endif$]) ;
-       [#
-      [+ $jsname +] = new [+ $nsprefix +]Grid (document.getElementById('[+ $self -> {id} +]'),
-                                               document.getElementById('[+ $self -> {id} +]-newrow'),
-                                               document.getElementById('[+ $self -> {id} +]-max')) ;
-      #]
   </script>
   </td>
 [$endsub$]
@@ -298,8 +293,8 @@ $]
     <tr class="cGridRow" id="[+ "$id-row-$i" +]">
         [$foreach $field (@$fields)$]
             [- $ro = $gridro || $field -> is_readonly ; -]
-            <td class="[+ $ro?'cGridCellReadonly':'cGridCell' +]">[$if $n++ == 0$]<input type="hidden" name="[+ "$name-#row#-$i" +]" value="[+ $i +]">[$endif$][-
-                local $field -> {name} = "${name}_${j}_$i" ;
+            <td class="[+ $ro?'cGridCellReadonly':'cGridCell' +]">[$if $n++ == 0$]<input type="hidden" name="[+ "__${name}_#row#_$i" +]" value="[+ $i +]">[$endif$][-
+                local $field -> {name} = "__${name}_${j}_$i" ;
                 if ($ro)
                     {
                     $field -> show_control_readonly ($req)
@@ -324,7 +319,7 @@ $]
     my $fields = $self -> {fields} ;
     my $id     = $self -> {id};
     my $i      = 0 ;
-    my $max    = $fdat{"$name-max"} || 1 ;
+    my $max    = $fdat{"__${name}_max"} || 1 ;
     $]
 
     <tbody>

Modified: perl/embperl/trunk/Embperl/Form/Control/mult.pm
URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/mult.pm?rev=1152101&r1=1152100&r2=1152101&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/mult.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/mult.pm Fri Jul 29 04:53:13 2011
@@ -71,16 +71,16 @@ sub init_data
     
     my $fdat  = $req -> {docdata} || \%fdat ;
     my $name    = $self->{name} ;
-    my @entries = split("\t",$fdat->{$name});
+    my @entries = ref $fdat->{$name} eq 'ARRAY'?@{$fdat->{$name}}:split("\t",$fdat->{$name});
 
     my $i = 0 ;
     foreach my $entry (@entries)
         {
-        $fdat->{"$name--$i"} = $entry ;
+        $fdat->{"__${name}__$i"} = $entry ;
             
         $i++ ;
         }
-    $fdat->{"$name-max"} = $i?$i:1;
+    $fdat->{"__${name}_max"} = $i?$i:1;
     }
 
 # ------------------------------------------------------------------------------------------
@@ -92,21 +92,26 @@ sub prepare_fdat
     {
     my ($self, $req) = @_ ;
     my $fdat  = $req -> {form} || \%fdat ;
-    my $ldap    = $req->{ldap};
     my $name    = $self->{name} ;
-    my $max     = $fdat->{"$name-max"} || 1 ;
+    my $max     = $fdat->{"__${name}_max"} || 1 ;
 
     my @rows;
     my $val ;
     for (my $i = 0; $i < $max; $i++)
         {
-        $val = $fdat->{"$name--$i"} ;
+        $val = $fdat->{"__${name}__$i"} ;
         push @rows, $val if ($val ne '') ;
         }
     $fdat->{$name} = \@rows ;    
+
+    foreach my $key (keys %$fdat)
+        {
+        delete $fdat->{$key} if ($key =~ /^__\Q$name\E__/) ;
+        }
     }
 
 sub show { Embperl::Form::Control::show (@_) } 
+sub show_control_readonly { my $self = shift ; $self -> show_control (@_) }
 
 1 ;
 
@@ -121,36 +126,45 @@ __EMBPERL__
 [$ sub show_control ($self, $req)
 
     my $name     = $self -> {name} ;
+    my $max    = $fdat{"__${name}_max"} ;
+
     my $span = ($self->{width_percent})  ;
     my $nsprefix = $self -> form -> {jsnamespace} ;
     my $jsname = $name ;
     $jsname =~ s/[^a-zA-Z0-9]/_/g ;
     $jsname .= 'Grid' ;
-    my $max    = $fdat{"$name-max"} ;
+    my $on_grid_change = $self -> {on_grid_change} ;
 $]
+[$     if ($max == 1 && $self -> is_readonly() ) $]
+[-
+        my $field = $self -> {fields}[0] ;    
+        local $field -> {name} = "__${name}__0" ;
+        $field -> show_control_readonly ($req) ;
+-]
+[$else$]
+
   [-
     $fdat{$name} = $self -> {default} if ($fdat{$name} eq '' && exists ($self -> {default})) ;
     my $span = 0 ;
   -]
-  <input type="hidden" name="[+ $self -> {name} +]-max" id="[+ $self -> {id} +]-max">
+  <input type="hidden" name="__[+ $self -> {name} +]_max" id="__[+ $self -> {id} +]_max">
   <table class="[+ $self -> {class} +]Table cBase" id="[+ $self -> {id} +]">
     [- $self -> show_grid_table ($req) ; -]
   </table>
-  <table id="[+ $self -> {id} +]-newrow" style="display: none">
+  <table id="__[+ $self -> {id} +]_newrow" style="display: none">
     [-
     local $req -> {epf_no_script} = 1 ;
     $self -> show_grid_table_row ($req, '%row%') ;
     -]
   </table>
-  <script>
-      $('#[+ $self -> {id} +]').eplgrid () ;
-      [#
-      [+ $jsname +] = new [+ $nsprefix +]Grid (document.getElementById('[+ $self -> {id} +]'),
-      [+ $jsname +] = new [+ $nsprefix +]Grid (document.getElementById('[+ $self -> {id} +]'),
-                                               document.getElementById('[+ $self -> {id} +]-newrow'),
-                                               document.getElementById('[+ $self -> {id} +]-max')) ;
-      #]
-  </script>
+
+
+[$if (! $self -> is_readonly ()) $]
+ <[$if $noscript $]x-[$endif$]script>
+      $('#[+ $self -> {id} +]').eplgrid ([$if $on_grid_change $]{'onchange': [+ $on_grid_change +] }[$endif$]) ;
+ </[$if $noscript $]x-[$endif$]script>
+[$endif$]  
+[$endif$]  
 [$endsub$]
   
 
@@ -168,14 +182,22 @@ $]
     my $jsname = $name ;
     $jsname =~ s/[^a-zA-Z0-9]/_/g ;
     $jsname .= 'Grid' ;
+    my $ro = $self -> is_readonly () ;
     $]
 
     <tr class="cGridRow" id="[+ "$id-row-$i" +]">
 
             <td class="[+ $self -> {class} +]Cell">
               [-
-                local $field -> {name} = "$name--$i" ;
-                $field -> show_control ($req)
+                local $field -> {name} = "__${name}__$i" ;
+                if ($ro)
+                    {
+                    $field -> show_control_readonly ($req)
+                    }
+                else    
+                    {
+                    $field -> show_control ($req)
+                    }
                 -]
             </td>
     </tr>             
@@ -190,9 +212,10 @@ $]
  
  
  $]
-
+[$if (! $self -> is_readonly ()) $]
               <img src="[+ $self -> {imagedir} +]/btn_add.gif"   id="[+ $self -> {id} +]-add" title="Zeile Hinzuf&uuml;gen">
               <img src="[+ $self -> {imagedir} +]/btn_del.gif"  id="[+ $self -> {id} +]-del" title="Zeile L&ouml;schen">
+[$endif$]              
 [$endsub$]
              
 [# ---------------------------------------------------------------------------
@@ -205,7 +228,7 @@ $]
     my $fields = $self -> {fields} ;
     my $id     = $self -> {id};
     my $i      = 0 ;
-    my $max    = $fdat{"$name-max"} || 1 ;
+    my $max    = $fdat{"__${name}_max"} || 1 ;
     $]
 
     [* for ($i = 0; $i < $max ; $i++ ) { *]

Modified: perl/embperl/trunk/Embperl/Form/Control/selectdyn.pm
URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/selectdyn.pm?rev=1152101&r1=1152100&r2=1152101&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/selectdyn.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/selectdyn.pm Fri Jul 29 04:53:13 2011
@@ -161,7 +161,7 @@ autocomplete_setup($( "#_inp_[+ $jsname 
                         use_ajax:     '[+ $self->{use_ajax} +]',
                         show_on_select: [+ $self->{show_on_select}?'true':'false' +]
                         }) ;
-</[$if $noscript $]x-[$endif$]script type="text/javascript">
+</[$if $noscript $]x-[$endif$]script >
 
 [$endsub$]
 



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