Author: richter
Date: Mon Jun 29 12:19:27 2015
New Revision: 1688196

URL: http://svn.apache.org/r1688196
Log:
Support for posting options or ids, insetad of values for ControlMultValue

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

Modified: perl/embperl/trunk/Embperl/Form/Control/mult.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/mult.pm?rev=1688196&r1=1688195&r2=1688196&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/mult.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/mult.pm Mon Jun 29 12:19:27 2015
@@ -105,11 +105,35 @@ sub prepare_fdat
     my $max     = $fdat->{"__${name}_max"} || 1 ;
 
     my $field = $self -> {fields}[0] ;    
+    my $fieldprep = (ref ($field) =~ /::/) && $field -> can ('prepare_fdat') ;
     my @rows;
     my $val ;
+    if ($fieldprep && $fdat -> {$name} eq '')
+        {
+        if (exists ($fdat -> {"_opt_$name"}))
+            {
+            my @vals = split (/\s*,\s*/, $fdat -> {"_opt_$name"}) ;
+            $max = @vals ;
+            for (my $i = 0; $i < $max; $i++)
+                {
+                $val = $fdat->{"_opt___${name}__$i"} = shift @vals ;
+                }
+            }
+        elsif (exists ($fdat -> {"_id_$name"}))
+            {
+            my @vals = split (/\s*,\s*/, $fdat -> {"_id_$name"}) ;
+            $max = @vals ;
+            for (my $i = 0; $i < $max; $i++)
+                {
+                $val = $fdat->{"_id___${name}__$i"} = shift @vals ;
+                }
+            }
+        }
+
+
     for (my $i = 0; $i < $max; $i++)
         {
-        if ((ref ($field) =~ /::/) && $field -> can ('prepare_fdat'))
+        if ($fieldprep)
             {
             local $field->{name} = "__${name}__$i" ;
             local $field -> {fullid} = "$self->{fullid}__$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=1688196&r1=1688195&r2=1688196&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/selectdyn.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/selectdyn.pm Mon Jun 29 12:19:27 
2015
@@ -65,7 +65,7 @@ sub init_data
 #   prepare_fdat - daten zusammenfuehren
 #
 
-sub prepare_fdat
+sub xprepare_fdat
     {
     my ($self, $req) = @_ ;
 

Modified: perl/embperl/trunk/Embperl/Form/ControlMultValue.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/ControlMultValue.pm?rev=1688196&r1=1688195&r2=1688196&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/ControlMultValue.pm (original)
+++ perl/embperl/trunk/Embperl/Form/ControlMultValue.pm Mon Jun 29 12:19:27 2015
@@ -284,6 +284,91 @@ sub get_option_from_value
 
 # ---------------------------------------------------------------------------
 #
+#   get_value_from_option - returns the value for a given option
+#
+#   in  $option option
+#   ret         value
+#
+
+sub get_value_from_option
+
+    {
+    my ($self, $option, $req) = @_ ;
+    
+    my $addtop = $self -> {addtop} ;
+    if ($addtop)
+        {
+        foreach (@$addtop)
+            {
+            if ($_ -> [1] eq $option)
+                {
+                return $_ -> [0] ;
+                }
+            }
+        }    
+
+    if ($self->{datasrc})
+        {
+        my $value = $self -> {datasrcobj} -> get_value_from_option ($option, 
$req, $self) ;
+    
+        return $value if (defined ($value)) ;
+        }
+    elsif (ref $self -> {options})
+        {
+        my $i = 0 ;
+        my $options = $self -> {options} ; 
+        $options = $self -> form -> convert_options ($self, $self -> 
{options}, $options, $req)
+                    if (!$self -> {showoptions}) ;
+        foreach (@$options)
+            {
+            if ($_ eq $option)
+                {
+                return $self -> {values}[$i] ;
+                }
+            $i++ ;
+            }
+        }
+
+    my $addbottom = $self -> {addbottom} ;
+    if ($addbottom)
+        {
+        foreach (@$addbottom)
+            {
+            if ($_ -> [1] eq $option)
+                {
+                return $_ -> [0] ;
+                }
+            }
+        }    
+
+    return ;
+    }
+
+# ---------------------------------------------------------------------------
+#
+#   get_value_from_id - returns the value for a given id
+#
+#   in  $id     id
+#   ret         value
+#
+
+sub get_value_from_id
+
+    {
+    my ($self, $id, $req) = @_ ;
+    
+    if ($self->{datasrc})
+        {
+        my $value = $self -> {datasrcobj} -> get_value_from_id ($id, $req, 
$self) ;
+    
+        return $value if (defined ($value)) ;
+        }
+
+    return ;
+    }
+
+# ---------------------------------------------------------------------------
+#
 #   get_active_id - get the id of the value which is currently active
 #
 
@@ -393,6 +478,41 @@ sub init_markup
         $fdat -> {'_id_' .  $name} = $id  if ($id ne '') ;
         }
     }
+
+# 
------------------------------------------------------------------------------------------
+#
+#   prepare_fdat - daten zusammenfuehren
+#
+
+sub prepare_fdat
+    {
+    my ($self, $req) = @_ ;
+
+    return if ($self -> is_readonly ($req)) ;
+
+    my $fdat  = $req -> {form} || \%fdat ;
+    my $name    = $self->{name} ;
+    if (exists ($fdat -> {"_opt_$name"}))
+        {
+        if ($fdat -> {"_opt_$name"} eq '')
+            {
+            $fdat -> {$name} = '' ;
+            }
+        elsif ($fdat -> {$name} eq '')
+            {
+            $fdat -> {$name} = $self ->  get_value_from_option ($fdat -> 
{"_opt_$name"}, $req) ;   
+            }
+        }    
+    elsif (exists ($fdat -> {"_id_$name"}))
+        {
+        if ($fdat -> {$name} eq '')
+            {
+            $fdat -> {$name} = $self ->  get_value_from_id ($fdat -> 
{"_id_$name"}, $req) ;   
+            }
+        }
+    delete $fdat -> {"_opt_$name"} ;
+    delete $fdat -> {"_id_$name"} ;
+    }
     
 1 ;
 

Modified: perl/embperl/trunk/Embperl/Form/DataSource.pm
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/DataSource.pm?rev=1688196&r1=1688195&r2=1688196&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/DataSource.pm (original)
+++ perl/embperl/trunk/Embperl/Form/DataSource.pm Mon Jun 29 12:19:27 2015
@@ -161,6 +161,51 @@ sub get_option_from_value
     return ;
     }
 
+# ---------------------------------------------------------------------------
+#
+#   get_value_from_option - returns the value for a given option
+#
+#   in  $option option
+#   ret         value
+#
+
+sub get_value_from_option
+
+    {
+    my ($self, $option, $req, $ctrl) = @_ ;
+    
+    
+    my ($values, $options) = $self -> get_values ($req, $ctrl) ;
+
+    my $i = 0 ;
+    foreach (@$options)
+        {
+        if ($_ eq $option)
+            {
+            return $values -> [$i] ;
+            }
+        $i++ ;
+        }
+
+    return ;
+    }
+
+# ---------------------------------------------------------------------------
+#
+#   get_value_from_id - returns the value for a given id
+#
+#   in  $id     id
+#   ret         value
+#
+
+sub get_value_from_id
+
+    {
+    my ($self, $option, $req, $ctrl) = @_ ;
+    
+    return ;
+    }
+
 
 # ---------------------------------------------------------------------------
 #



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