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 )