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