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