Embperl
view release on metacpan or search on metacpan
Embperl/Form/ControlMultValue.pm view on Meta::CPAN
}
# ------------------------------------------------------------------------------------------
#
# get_display_text - returns the text that should be displayed
#
sub get_display_text
{
my ($self, $req, $value) = @_ ;
$value = $self -> get_value ($req) if (!defined ($value)) ;
if (!ref $value)
{
my @value = split (/\t/, $value) ;
$value = \@value ;
}
my @result ;
foreach my $val (@$value)
{
push @result, $self -> get_option_from_value ($val, $req) ;
}
return join (', ', @result) ;
}
# ------------------------------------------------------------------------------------------
#
# get_sort_value - returns the value that should be used to sort
#
sub get_sort_value
{
my ($self, $req, $value) = @_ ;
if ($self -> {datasrcobj} && $self -> {datasrcobj} -> can('get_sort_value'))
{
$value = $self -> get_value ($req) if (!defined ($value)) ;
return $self -> {datasrcobj} -> get_sort_value ($req, $value) ;
}
return $self -> SUPER::get_sort_value ($req, $value) ;
}
# ---------------------------------------------------------------------------
#
# init_markup - add any dynamic markup to the form data
#
sub init_markup
{
my ($self, $req, $parentctl, $method) = @_ ;
return if (!$self -> is_readonly($req) && (! $parentctl || ! $parentctl -> is_readonly($req))) ;
my $val = $self -> get_value ($req) ;
if ($val ne '')
{
my $name = $self -> {name} ;
my $fdat = $req -> {docdata} || \%Embperl::fdat ;
my $opt = $self -> get_display_text ($req, $val) ;
my $id = $self -> get_id_from_value ($val, $req) ;
$fdat -> {'_opt_' . $name} = $opt if ($opt ne '') ;
$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 -> {"_id_$name"} ne '')
{
$fdat -> {$name} = $self -> get_value_from_id ($fdat -> {"_id_$name"}, $req) ;
}
}
delete $fdat -> {"_opt_$name"} ;
delete $fdat -> {"_id_$name"} ;
}
1 ;
# damit %fdat etc definiert ist
__EMBPERL__
[# ---------------------------------------------------------------------------
#
# show_control_readonly - output the control as readonly
#]
[$ sub show_control_readonly ($self, $req, $value)
my $text = $self -> get_display_text ($req, $value) ;
my $id = $self -> get_id_from_value ($val, $req) ;
my $name = $self -> {force_name} || $self -> {name} ;
$]
<div [+ do { local $escmode = 0 ; $self -> get_std_control_attr($req, '', 'readonly', 'ef-control-with-id') } +] _ef_divname="_opt_[+ $name +]">[+ $text +]</div>
( run in 1.048 second using v1.01-cache-2.11-cpan-39bf76dae61 )