Author: richter
Date: Tue Jan 21 10:46:39 2014
New Revision: 1559969

URL: http://svn.apache.org/r1559969
Log:
Embperl::Form dynamic fingerprints

Modified:
    perl/embperl/trunk/Embperl/Form.pm
    perl/embperl/trunk/Embperl/Form/Control.pm
    perl/embperl/trunk/Embperl/Form/Control/display.pm
    perl/embperl/trunk/Embperl/Form/Control/grid.pm
    perl/embperl/trunk/Embperl/Form/ControlMultValue.pm
    perl/embperl/trunk/Embperl/Form/DataSource.pm

Modified: perl/embperl/trunk/Embperl/Form.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form.pm?rev=1559969&r1=1559968&r2=1559969&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form.pm (original)
+++ perl/embperl/trunk/Embperl/Form.pm Tue Jan 21 10:46:39 2014
@@ -86,6 +86,7 @@ sub sub_new
         $self -> {init_markup}  = [] ;
         $self -> {prepare_fdat} = [] ;
         $self -> {code_refs}    = [] ;
+        $self -> {constrain_attrs} = [] ;
         $self -> {do_validate}  = [] ;
         }
     else
@@ -94,6 +95,7 @@ sub sub_new
         $self -> {init_data}    = $self -> parent_form -> {init_data} ;
         $self -> {init_markup}  = $self -> parent_form -> {init_markup} ;
         $self -> {prepare_fdat} = $self -> parent_form -> {prepare_fdat} ;
+        $self -> {constrain_attrs}    = $self -> parent_form -> 
{constrain_attrs} ;
         $self -> {code_refs}    = $self -> parent_form -> {code_refs} ;
         $self -> {do_validate}  = $self -> parent_form -> {do_validate} ;
         }
@@ -313,6 +315,7 @@ sub new_controls
                 push @{$self -> {prepare_fdat}}, $control if ($control -> can 
('prepare_fdat')) ;
                 push @{$self -> {code_refs}}, $control if ($control -> 
has_code_refs) ;
                 push @{$self -> {do_validate}}, $control if ($control -> 
has_validate_rules) ;
+                push @{$self -> {constrain_attrs}}, $control -> 
constrain_attrs ;
                 }
             }
         $self -> {controlids}{$control->{id}} = $control ;
@@ -736,6 +739,21 @@ sub all_code_ref_fingerprints
     return $fp ;    
     }
 
+# ---------------------------------------------------------------------------
+#
+#   constrain_attrs - returns attrs that might change the form layout
+#                     if there value changes
+#
+
+sub constrain_attrs
+
+    {
+    my ($self, $req) = @_ ;
+
+    return $self -> {constrain_attrs} ;
+    }
+
+
 # ---------------------------------------------------------------------------
 #
 #   validate - validate the form input

Modified: perl/embperl/trunk/Embperl/Form/Control.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control.pm?rev=1559969&r1=1559968&r2=1559969&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control.pm Tue Jan 21 10:46:39 2014
@@ -89,7 +89,23 @@ sub is_disabled
 
     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 ;
+    }
+
+# ---------------------------------------------------------------------------
+#
+#   is_blanked - display this control as blank field
+#
+
+sub is_blanked
+
+    {
+    my ($self, $req) = @_ ;
+
+    my $disable = $self -> {blank} || $req -> 
{form_options_masks}{$self->{name}}{blank} || $req -> 
{form_options_masks}{'*'}{blank} ;
+    $disable = &{$disable}($self, $req) if (ref ($disable) eq 'CODE') ;
+
     return $disable ;
     }
 
@@ -145,7 +161,7 @@ sub has_code_refs
     {
     my ($self, $req) = @_ ;
 
-    return  ref ($self -> {readonly}) eq 'CODE' || ref ($self -> {disable}) eq 
'CODE'  ;
+    return  ref ($self -> {readonly}) eq 'CODE' || ref ($self -> {disable}) eq 
'CODE'  || ref ($self -> {blank}) eq 'CODE'  ;
     }
 
 
@@ -159,9 +175,22 @@ sub code_ref_fingerprint
     {
     my ($self, $req) = @_ ;
 
-    return  ($self -> is_readonly($req)?'R':'W') . ($self -> 
is_disabled($req)?'D':'E') ;
+    return  ($self -> is_readonly($req)?'R':'W') . ($self -> 
is_disabled($req)?'D':'E') . ($self -> is_blanked($req)?'B':'S') ;
     }
 
+# ---------------------------------------------------------------------------
+#
+#   constrain_attrs - returns attrs that might change the form layout
+#                     if there value changes
+#
+
+sub constrain_attrs
+
+    {
+    my ($self, $req) = @_ ;
+
+    return () ;
+    }
 
 # ---------------------------------------------------------------------------
 #
@@ -452,10 +481,12 @@ my $span = 0 ;
 
 $]<table class="ef-element ef-element-width-[+ $self -> {width_percent} +] 
ef-element-[+ $self -> {type} +] [+ $self -> {state} +]">
   <tr>
-    [-
+    [$ if ($self -> is_blanked ($req)) $]
+    <td class="ef-label-box ef-label-box-width-100"> </td>    
+    [$else$][-
     $span += $self -> show_label_cell ($req, $span);
     $self -> show_control_cell ($req, $span) ;
-    -]
+    -][$endif$]
   </tr>
   </table>[$  
  endsub $]
@@ -602,8 +633,8 @@ sub show_control_readonly_array
 $]
     <td class="ef-control-box [+ $addclass +]">
     [*
-     my @ret = $ro?$self -> show_control_readonly_array($req):$self -> 
show_control ($req);
-     $self -> show_control_addons ($req) ;
+    my @ret = $ro?$self -> show_control_readonly_array($req):$self -> 
show_control ($req);
+    $self -> show_control_addons ($req) ;
      *]
     </td>
 [* return @ret ; *]

Modified: perl/embperl/trunk/Embperl/Form/Control/display.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/display.pm?rev=1559969&r1=1559968&r2=1559969&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/display.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/display.pm Tue Jan 21 10:46:39 2014
@@ -22,6 +22,50 @@ use base 'Embperl::Form::Control' ;
 
 use Embperl::Inline ;
 
+use vars qw{%fdat} ;
+
+
+# 
------------------------------------------------------------------------------------------
+#
+#   init_data - daten aufteilen
+#
+
+sub init_data
+    {
+    my ($self, $req, $parentctrl) = @_ ;
+
+    return if (!$self -> {value2text}) ;
+
+    
+    my $fdat    = $req -> {docdata} || \%fdat ;
+    my $name    = $self->{name} ;
+    my $value   = $fdat->{$name} ;
+
+    my $val ;
+    my $txt ;
+    if (ref $value eq 'ARRAY')
+        {
+        foreach (@$value)
+            {
+            $val = $self -> {value2text} . $_ ;
+            $txt = $self -> form -> convert_text ($self, $val, undef, $req) ;
+            $_ = $txt if ($txt ne $val) ;
+            }
+        }
+    else
+        {
+        $val = $self -> {value2text} . $value ;
+        $txt = $self -> form -> convert_text ($self, $val, undef, $req) ;
+        $fdat->{$name} = $txt if ($txt ne $val) ;
+        }
+    }
+
+# 
------------------------------------------------------------------------------------------
+
+
+sub show_control_readonly  { $_[0] -> show_control ($_[1], $_[2]) }
+
+
 1 ;
 
 __EMBPERL__
@@ -31,11 +75,10 @@ __EMBPERL__
 #   show_control - output the control
 #]
 
-[$ sub show_control ($self, $req)
-
+[$ sub show_control ($self, $req, $value)
 my $name = $self->{name};
 my $id   = $self->{id};
-my $value = exists $self->{value} ? $self->{value} : $fdat{$name};
+$value = exists $self->{value} ? $self->{value} : $fdat{$name} if (!defined 
($value)) ;
 $value = [ split /\t/, $value ] if $self->{split};
 $value = [ split /\n/, $value ] if $self->{splitlines};
 
@@ -108,6 +151,11 @@ on a new line.
 Splits the value into an array at \n if set and displays every array element
 on a new line.
 
+=head3 value2text
+
+Will run the value prefixed with the given paramenter through convert_text,
+so it can be translated.
+
 =head1 Author
 
 G. Richter (richter at embperl dot org), A. Beckert (beck...@ecos.de)

Modified: perl/embperl/trunk/Embperl/Form/Control/grid.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/grid.pm?rev=1559969&r1=1559968&r2=1559969&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/grid.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/grid.pm Tue Jan 21 10:46:39 2014
@@ -85,6 +85,44 @@ sub init
     return $self ;
     }
 
+
+
+# 
------------------------------------------------------------------------------------------
+#
+#   init_data_hash
+#
+
+sub init_data_hash
+    {
+    my ($rowno, $fdat, $name, $fields) = @_ ;
+    
+    my $data ;
+    map
+        {
+        $data = $fdat->{$name}{$_} ;
+        my @data ;
+        if (ref $data eq 'HASH')
+            {
+            $data -> {'_key'} = $_ ;    
+            foreach (@$fields)
+                {
+                push @data, $data -> {$_ -> {name}} ;    
+                }
+            }
+        elsif (ref $data eq 'ARRAY')
+            {
+            push @data, $_, @$data ;    
+            }
+        else
+            {
+            push @data, $_, $data ;    
+            }
+                    
+        [$rowno++, @data ]
+        } keys %{$fdat->{$name}} ;
+    
+    }
+
 # 
------------------------------------------------------------------------------------------
 #
 #   init_data - daten aufteilen
@@ -98,10 +136,10 @@ sub init_data
     my $ldap    = $req->{ldap};
     my $name    = $self->{name} ;
     my $rowno   = 1 ;
+    my $fields  = $self -> {fields} ;
     my @entries = ref $fdat->{$name} eq 'ARRAY'?@{$fdat->{$name}}:
-                  ref $fdat->{$name} eq 'HASH' ?map { [$rowno++, $_ => 
$fdat->{$name}{$_}] } keys %{$fdat->{$name}}:
+                  ref $fdat->{$name} eq 'HASH' ?init_data_hash ($rowno, $fdat, 
$name, $fields):
                                                 split("\t",$fdat->{$name});
-    my $fields  = $self -> {fields} ;
     my $line2   = $self -> {line2} ;
     my $order   = $self -> {order} ;
     my $order_desc   = $self -> {order_desc} ;
@@ -117,12 +155,10 @@ sub init_data
                 $i++ ;
                 }
             }
-
+::dbg($order, \@entries) ;
         if ($order_desc)
             {
-            @entries = sort { 
-                                #print STRERR "$b->[$order] cmp 
$a->[$order]\n" ; 
-                                $b -> [$order] cmp $a -> [$order] } @entries ;
+            @entries = sort { $b -> [$order] cmp $a -> [$order] } @entries ;
             }
         else
             {

Modified: perl/embperl/trunk/Embperl/Form/ControlMultValue.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/ControlMultValue.pm?rev=1559969&r1=1559968&r2=1559969&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/ControlMultValue.pm (original)
+++ perl/embperl/trunk/Embperl/Form/ControlMultValue.pm Tue Jan 21 10:46:39 2014
@@ -51,6 +51,22 @@ sub init
 
 # ---------------------------------------------------------------------------
 #
+#   constrain_attrs - returns attrs that might change the form layout
+#                     if there value changes
+#
+
+sub constrain_attrs
+
+    {
+    my ($self, $req) = @_ ;
+
+    return if (!$self -> {datasrcobj}) ;
+        
+    return $self -> {datasrcobj} -> constrain_attrs ($req) ;
+    }
+
+# ---------------------------------------------------------------------------
+#
 #   get_all_values - returns all values and options, including addtop and 
addbottom
 #
 

Modified: perl/embperl/trunk/Embperl/Form/DataSource.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/DataSource.pm?rev=1559969&r1=1559968&r2=1559969&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/DataSource.pm (original)
+++ perl/embperl/trunk/Embperl/Form/DataSource.pm Tue Jan 21 10:46:39 2014
@@ -60,6 +60,21 @@ sub values_no_cache { 0 }
 
 # ---------------------------------------------------------------------------
 #
+#   constrain_attrs - returns attrs that might change the form layout
+#                     if there value changes
+#
+
+sub constrain_attrs
+
+    {
+    my ($self, $req) = @_ ;
+
+    return () if (!$self -> {constrain}) ;
+    return ($self -> {constrain}) ;
+    }
+
+# ---------------------------------------------------------------------------
+#
 #   sorttype - returns information how to sort this datasource values for 
displaying
 #
 



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