Embperl
view release on metacpan or search on metacpan
Embperl/Form/Control/checkbox.pm view on Meta::CPAN
#
# 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::checkbox ;
use strict ;
use vars qw{%fdat} ;
use base 'Embperl::Form::Control' ;
use Embperl::Inline ;
# ---------------------------------------------------------------------------
#
# get_active_id - get the id of the value which is currently active
#
sub get_active_id
{
my ($self) = @_ ;
my $name = $self -> {name} ;
my $val = $self -> {value} || 1 ;
return $val eq $fdat{$name}?"$name-0":"$name-1" ;
}
# ---------------------------------------------------------------------------
#
# has_auto_label_size - returns true if label should be auto sized for this control
#
sub has_auto_label_size
{
return 0 ;
}
# ------------------------------------------------------------------------------------------
#
# init_data - daten aufteilen
#
sub init_data
{
my ($self, $req, $grid) = @_ ;
return if (!$self -> is_readonly() && (!$grid || !$grid -> is_readonly())) ;
my $val = $self -> get_value ($req) ;
my $value = $self -> {value} ;
$value = 1 if ($value eq '') ;
my $fdat = $req -> {docdata} || \%Embperl::fdat ;
$fdat -> {"_opt_$self->{name}"} = $value eq $val?'X':'-' ;
}
# ---------------------------------------------------------------------------
#
# show_control_readonly - output readonly control
#
sub xshow_control_readonly
{
my ($self, $req) = @_ ;
my $name = $self -> {name} ;
my $val = $self -> {value} ;
$val = 1 if ($val eq '') ;
local $self -> {force_name} = '_opt_' . $self -> {name} ;
$self -> SUPER::show_control_readonly ($req, $fdat{$name} eq $val?'X':'-') ;
}
# ------------------------------------------------------------------------------------------
#
# get_display_text - returns the text that should be displayed
#
sub get_display_text
{
my ($self, $req, $value) = @_ ;
my $fdat = $req -> {docdata} || \%fdat ;
my $name = $self -> {name} ;
my $val = $self -> {value} ;
$val = 1 if ($val eq '') ;
return $value eq $val?'X':'-' if (defined ($value)) ;
return $fdat->{$name} eq $val?'X':'-' ;
}
# ---------------------------------------------------------------------------
#
# 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) ;
$fdat -> {'_opt_' . $name} = $opt if ($opt ne '') ;
}
}
# ---------------------------------------------------------------------------
#
# label_text - return text of label
#
sub label_text
{
my ($self, $req) = @_ ;
if ($self -> {button} && !$self -> is_readonly)
{
$self->{controlclass} ||= 'ef-control-checkbox-button' ;
return '' ;
}
return $self -> SUPER::label_text ($req) ;
}
1 ;
__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 $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>
[$ if $self->{hidden} $]
<input type="hidden" name="[+ $name +]" value="[+ $value +]">
[$endif$]
[$endsub$]
[# ---------------------------------------------------------------------------
#
# show_control - output the control
#]
[$ sub show_control ($self, $req)
my $name = $self -> {name} ;
my $val = $self -> {value} || 1 ;
my $nsprefix = $self -> form -> {jsnamespace} ;
$val =~ s/%%%name%%%/$fdat{$name}/g ;
$val =~ s/%%(.+?)%%/$fdat{$1}/g ;
my ($ctlattrs, $ctlid, $ctlname) = $self -> get_std_control_attr($req) ;
push @{$self -> form -> {fields2empty}}, $name ;
my $buttontext ;
( run in 1.057 second using v1.01-cache-2.11-cpan-39bf76dae61 )