Embperl

 view release on metacpan or  search on metacpan

Embperl/Form/Control/select.pm  view on Meta::CPAN


###################################################################################
#
#   Embperl - Copyright (c) 1997-2008 Gerald Richter / ecos gmbh  www.ecos.de
#   Embperl - Copyright (c) 2008-2015 Gerald Richter
#   Embperl - Copyright (c) 2015-2023 actevy.io
#
#   You may distribute under the terms of either the GNU General Public
#   License or the Artistic License, as specified in the Perl README file.
#
#   THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
#   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
#   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
#   $Id$
#
###################################################################################

package Embperl::Form::Control::select ;

use strict ;
use vars qw{%fdat $escmode} ;
use base 'Embperl::Form::ControlMultValue' ;

use Embperl::Inline ;
#use HTML::Escape qw/escape_html/ ;

sub escape_html
    {
    my $v = shift ;
    $v =~ s/&/&/g ;
    $v =~ s/"/"/g ;
    $v =~ s/>/>/g ;
    $v =~ s/</&lt;/g ;
    return $v ;
    }

sub show_control
    {
    my ($self, $req, $filter) = @_ ;

push @{$req -> {timing}}, ([Time::HiRes::gettimeofday()], 'start show_control ' . $self->{name} . ' ' . __FILE__ . '#' . __LINE__) if ($req -> {timing});
    
    my $name     = $self -> {name} ;
    my $fdat     = $req -> {docdata} || \%Embperl::fdat ;
    my $value    = $fdat -> {$name} ;
    $Embperl::idat{$name} = $value ;
    $filter      ||= $self -> {filter} ;
    my $nsprefix = $self -> form -> {jsnamespace} ;
    my $val ;
    my $i = 0 ;
    my ($values, $options) = $self -> get_all_values ($req) ;
    my ($ctlattrs, $ctlid, $ctlname) =  $self -> get_std_control_attr($req) ;
    $values ||= [] ;

    my $multiple = $self->{multiple}?'multiple':'' ;
    my @opt ;
    my $out = '<select name="' .escape_html ($ctlname) . '" ' . $ctlattrs ;
    $out .= ' size="' . escape_html ($self->{rows}) . '" ' if ($self->{rows}) ;
    $out .= ' _ef_attach="ef_select" ' if ($self -> {trigger}) ;
    push @{$req -> {timing}}, ([Time::HiRes::gettimeofday()], 'start show_control4 ' . $self->{name} . ' value: ' . scalar(@$values) . ' : ' . __FILE__ . '#' . __LINE__) if ($req -> {timing});
    my $i = 0 ; 
    my $escval ;
    my $escopt ;
    my $selected ;
    foreach $val (@$values)
        {
        $escval = escape_html ($val) ;
        $escopt = escape_html ($options ->[$i])  ;
        $selected = $val eq $value?'selected':'' ;
        push @opt, qq{<option value="$escval" $selected>} . ($escopt) . q{</option>} if (!defined ($filter) || ($val =~ /$filter/i)) ;
        $i++ ;
        }
    $out .= ">\n" . join ("\n", @opt) . "\n" . '</select>' . "\n" ;

    local $escmode = 0 ;
    print OUT $out ;

push @{$req -> {timing}}, ([Time::HiRes::gettimeofday()], 'end show_control ' . $self->{name} . ' ' . __FILE__ . '#' . __LINE__) if ($req -> {timing});

    }
    
1 ;

__EMBPERL__

[# ---------------------------------------------------------------------------
#
#   show_hidden - out hidden field
#]

[$ sub show_hidden ($self, $req) $]
<input type="hidden" name="[+ $self -> {name} +]">
[$endsub$]

[# ---------------------------------------------------------------------------
#
#   show_control - output the control
#]

[$ sub xshow_control ($self, $req, $filter)

    my $name     = $self -> {name} ;
    $filter      ||= $self -> {filter} ;
    my $nsprefix = $self -> form -> {jsnamespace} ;



( run in 1.371 second using v1.01-cache-2.11-cpan-39bf76dae61 )