Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: ModPerl: Embperl-cvs

svn commit: r474139 - in /perl/embperl/trunk/Embperl: Form.pm Form/Control.pm Form/Control/checkbox.pm

 

 

ModPerl embperl-cvs RSS feed   Index | Next | Previous | View Threaded


richter at apache

Nov 12, 2006, 8:39 PM

Post #1 of 1 (1584 views)
Permalink
svn commit: r474139 - in /perl/embperl/trunk/Embperl: Form.pm Form/Control.pm Form/Control/checkbox.pm

Author: richter
Date: Sun Nov 12 20:39:49 2006
New Revision: 474139

URL: http://svn.apache.org/viewvc?view=rev&rev=474139
Log:
EMbperl::Form: readd lost changes from last commit

Modified:
perl/embperl/trunk/Embperl/Form.pm
perl/embperl/trunk/Embperl/Form/Control.pm
perl/embperl/trunk/Embperl/Form/Control/checkbox.pm

Modified: perl/embperl/trunk/Embperl/Form.pm
URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form.pm?view=diff&rev=474139&r1=474138&r2=474139
==============================================================================
--- perl/embperl/trunk/Embperl/Form.pm (original)
+++ perl/embperl/trunk/Embperl/Form.pm Sun Nov 12 20:39:49 2006
@@ -1,807 +1,866 @@
-
-###################################################################################
-#
-# Embperl - Copyright (c) 1997-2005 Gerald Richter / ecos gmbh www.ecos.de
-#
-# 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 ;
-
-use strict ;
-
-use lib qw{..} ;
-
-use Embperl ;
-use Embperl::Form::Control ;
-use Embperl::Form::Validate ;
-use Embperl::Form::Control::blank ;
-
-use Embperl::Inline ;
-
-use Data::Dumper ;
-
-our %forms ;
-our $formno = 1;
-our %CLEANUP = ('forms' => 0, 'formno' => 0) ;
-
-# ---------------------------------------------------------------------------
-#
-# new - create a new form
-#
-
-
-sub new
-
- {
- my ($class, $controls, $options, $id, $validate_rules, $parentid) = @_ ;
-
- my $toplevel = $validate_rules?0:1 ;
- $id ||= 'topdiv' ;
- $options ||= {} ;
-
- my $self = ref $class?$class:{} ;
-
- $self -> {controls} = $controls ;
- $self -> {id} = $id ;
- $self -> {formno} = $formno++ ;
- $self -> {parentid} = $parentid ;
- $self -> {formname} = $options -> {formname} || 'topform' ;
- $self -> {bottom_code} = [] ;
- $self -> {validate_rules} = [] ;
- $self -> {toplevel} = $toplevel ;
-
- bless $self, $class if (!ref $class);
-
- $forms{$self->{formno}} = $self ;
- if (!$validate_rules)
- {
- $validate_rules = $self -> {validate_rules} = [] ;
- }
-
- $self -> new_controls ($controls, $options, undef, $id, $validate_rules, $options -> {masks}, $options -> {defaults}) ;
-
- $self -> {noframe} = 1 if ($controls && @$controls > 0 &&
- $controls -> [0] -> noframe) ;
-
-
- if ($toplevel)
- {
- my $epf = $self -> {validate} = Embperl::Form::Validate -> new ($validate_rules, $self -> {formname}) if ($self -> {validate_rules}) ;
- $self -> add_code_at_bottom ($epf -> get_script_code) ;
- $self -> {fields2empty} = [] ;
- }
- else
- {
- $self -> {fields2empty} = $self -> parent_form -> {fields2empty} ;
- }
-
- return $self ;
- }
-
-# ---------------------------------------------------------------------------
-#
-# DESTROY
-#
-
-sub DESTROY
- {
- my ($self) = @_ ;
- delete $forms{$self->{formno}} ;
- }
-
-# ---------------------------------------------------------------------------
-#
-# get_control_packages
-#
-# returns an array ref with packges where to search for controls
-#
-
-sub get_control_packages
- {
- my ($self) = @_ ;
-
- return $self -> {control_packages} || ['Embperl::Form::Control'] ;
- }
-
-# ---------------------------------------------------------------------------
-#
-# new_controls - transform elements to control objects
-#
-
-
-sub new_controls
-
- {
- my ($self, $controls, $options, $id, $formid, $validate_rules, $masks, $defaults) = @_ ;
-
- my $n = 0 ;
- my $packages = $self -> get_control_packages ;
-
- foreach my $control (@$controls)
- {
- my $name = $control -> {name} ;
- $control -> {type} =~ s/sf_select.+/select/ ;
- $control -> {parentid} = $id if ($id) ;
- $control -> {id} ||= "$control->{name}-$n" ;
- $control -> {formid} = $formid ;
- $control -> {formno} = $self -> {formno} ;
-
- my $type = $control -> {type} ;
- my $default = $defaults -> {$name} || $defaults -> {"*$type"} || $defaults -> {'*'};
- my $mask = $masks -> {$name} || $masks -> {"*$type"} || $masks -> {'*'};
- if ($mask)
- {
- foreach (keys %$mask)
- {
- $control -> {$_} = $mask -> {$_} ;
- }
- }
- if ($default)
- {
- foreach (keys %$default)
- {
- $control -> {$_} = $default -> {$_} if (!exists $control -> {$_}) ;
- }
- }
-
-
- if (ref $control eq 'HASH')
- {
- my $ctlmod ;
- my $type = $control -> {type} || ($control -> {name}?'input':'blank') ;
- if ($type =~ /::/)
- {
- if (!defined (&{"$type\:\:new"}))
- {
- eval "require $type" ;
- warn $@ if ($@) ;
- }
- $type -> new ($control) ;
- $ctlmod = $type ;
- }
- else
- {
- foreach my $package (@$packages)
- {
- my $mod = "$package\:\:$type" ;
- if ($mod -> can('new'))
- {
- $mod -> new ($control) ;
- $ctlmod = $mod ;
- last ;
- }
- }
- if (!$ctlmod)
- {
- foreach my $package (@$packages)
- {
- my $mod = "$package\:\:$type" ;
- eval "require $mod" ;
- warn $@ if ($@) ;
- if ($mod -> can('new'))
- {
- $mod -> new ($control) ;
- $ctlmod = $mod ;
- last ;
- }
- }
- }
- }
- die "No Module found for type = $type, searched: @$packages" if (!$ctlmod) ;
- }
-
- next if ($control -> is_disabled) ;
- push @{$validate_rules}, $control -> get_validate_rules ;
- if ($control -> {sublines})
- {
- my $i = 0 ;
- my $name = $control -> {name} ;
- foreach my $subcontrols (@{$control -> {sublines}})
- {
- next if (!$subcontrols) ;
- $self -> new_controls ($subcontrols, $options, "$name-$i", $formid, $validate_rules, $masks, $defaults) ;
- $i++ ;
- }
- }
- if ($control -> {subforms})
- {
- my @obj ;
- my @ids ;
- my $i = 1 ;
-
- foreach my $subcontrols (@{$control -> {subforms}})
- {
- next if (!$subcontrols) ;
- my $id = "$control->{name}-$i" ;
- my $class = ref $self ;
- my $subform = $class -> new ($subcontrols, $options, $id, $validate_rules, $self -> {id}) ;
- push @ids, $id ;
- push @obj, $subform ;
- $i++ ;
- }
- $control -> {subobjects} = \@obj ;
- $control -> {subids} = \@ids ;
- }
- $n++ ;
- }
- }
-
-# ---------------------------------------------------------------------------
-#
-# parent_form - return parent form object if any
-#
-
-sub parent_form
- {
- my ($self) = @_ ;
-
- return $Embperl::Form::forms{$self -> {parentid}} ;
- }
-
-
-# ---------------------------------------------------------------------------
-#
-# add_code_at_bottom - add js code at the bottom of the page
-#
-
-sub add_code_at_bottom
-
- {
- my ($self, $code) = @_ ;
-
- push @{$self->{bottom_code}}, $code ;
- }
-
-
-# ---------------------------------------------------------------------------
-#
-# layout - build the layout of the form
-#
-
-sub layout
-
- {
- my ($self, $controls) = @_ ;
-
- $controls ||= $self -> {controls} ;
-
- my $x = 0 ;
- my $max_x = 100 ;
- my $line = [] ;
- my @lines ;
- my $max_num = 0 ;
- my $num = 0 ;
- foreach my $control (@$controls)
- {
- next if ($control -> is_disabled) ;
- my $width = $control -> {width_percent} || int($max_x / ($control -> {width} || 2)) ;
- if ($x + $width > $max_x || $control -> {newline} > 0 || (($control -> {sublines} || $control -> {subobjects}) && @$line))
- { # new line
- if ($x < $max_x)
- {
- push @$line, Embperl::Form::Control::blank -> new (
- {width_percent => $max_x - $x }) ;
- }
- push @lines, $line ;
- $line = [] ;
- $x = 0 ;
- $num = 0 ;
- }
- push @$line, $control ;
- $control -> {width_percent} = $width ;
- $control -> {x_percent} = $x ;
- $x += $width ;
- $num++ ;
- $max_num = $num if ($num > $max_num) ;
-
- if ($control -> {subobjects} || $control -> {sublines} || $control -> {newline} < 0)
- { # new line
- if ($x < $max_x)
- {
- push @$line, Embperl::Form::Control::blank -> new (
- {width_percent => $max_x - $x }) ;
- }
- push @lines, $line ;
- $line = [] ;
- $x = 0 ;
- $num = 0 ;
- }
-
- if ($control -> {sublines})
- {
- foreach my $subcontrols (@{$control -> {sublines}})
- {
- next if (!$subcontrols) ;
- my $sublines = $self -> layout ($subcontrols) ;
- push @lines, @$sublines ;
- }
- }
- if ($control -> {subobjects})
- {
- my @obj ;
- foreach my $subobj (@{$control -> {subobjects}})
- {
- next if (!$subobj) ;
- $subobj -> layout ;
- }
- }
- }
-
- push @lines, $line if (@$line);
- $self -> {max_num} = $max_num ;
- return $self -> {layout} = \@lines ;
- }
-
-
-# ---------------------------------------------------------------------------
-#
-# show_controls - output the form control area
-#
-
-sub show_controls
-
- {
- my ($self, $data, $activeid) = @_ ;
-
- my $lines = $self -> {layout} ;
- my %n ;
- my $activesubid ;
-
- $self -> show_controls_begin ($activeid) ;
- my $lineno = 0 ;
- foreach my $line (@$lines)
- {
- my $lineid = @$line && $line->[0]{parentid}?"$line->[0]{parentid}":'id' ;
- $n{$lineid} ||= 10 ;
-
- $self -> show_line_begin ($lineno, "$lineid-$n{$lineid}", $activesubid);
- foreach my $control (@$line)
- {
- my $newactivesubid = $control -> get_active_id ;
- $control -> show ($data);
- $activesubid = $newactivesubid if ($newactivesubid) ;
- if ($control -> {subobjects})
- {
- my @obj ;
- $control -> show_sub_begin ;
- foreach my $subobj (@{$control -> {subobjects}})
- {
- next if (!$subobj || !$subobj -> {controls} || !@{$subobj -> {controls}}) ;
- $subobj -> show ($data, $activesubid) ;
- }
- $control -> show_sub_end ;
- }
- }
- $self -> show_line_end ($lineno);
- $lineno++ ;
- $n{$lineid}++ ;
- }
- $self -> show_controls_end ;
-
- return ;
- }
-
-
-# ---------------------------------------------------------------------------
-#
-# show - output the form
-#
-
-sub show
-
- {
- my ($self, $data, $activeid) = @_ ;
-
- $self -> show_form_begin if ($self -> {toplevel});
- $self -> show_controls ($data, $activeid) ;
- $self -> show_form_end if ($self -> {toplevel});
- }
-
-
-# ---------------------------------------------------------------------------
-#
-# validate - validate the form input
-#
-
-sub validate
-
- {
-
- }
-
-
-#------------------------------------------------------------------------------------------
-#
-# add_tabs
-#
-# fügt ein tab elsement mit subforms zu einem Formular hinzu
-#
-# in $subform array mit hashs
-# text => <anzeige text>
-# fn => Dateiname
-# fields => Felddefinitionen (alternativ zu fn)
-#
-
-sub add_tabs
-
- {
- my ($self, $subforms, $args) = @_ ;
- my @forms ;
- my @values ;
- my @options ;
- my @grids;
- $args ||= {} ;
-
- foreach my $file (@$subforms)
- {
- my $fn = $file -> {fn} ;
- my $subfields = $file -> {fields} ;
-
- push @options, $file -> {text};
- if ($fn)
- {
- my $obj = Execute ({object => "./$fn"} ) ;
- #$subfields = eval {$obj -> fields ($r, {%$file, %$args}) || undef};
- }
- push @forms, $subfields;
- push @grids, $file -> {grid};
- push @values, $file -> {value} ||= scalar(@forms);
- }
-
- return {
- section => 'cSectionText',
- name => '__auswahl',
- type => 'tabs',
- values => \@values,
- grids => \@grids,
- options => \@options,
- subforms=> \@forms,
- width => 1,
- },
- }
-
-#------------------------------------------------------------------------------------------
-#
-# add_line
-#
-# adds the given controls into one line
-#
-#
-
-sub add_line
-
- {
- my ($self, $controls, $cnt) = @_ ;
-
- $cnt ||= @$controls ;
- foreach my $control (@$controls)
- {
- $control -> {width} = $cnt ;
- }
-
- return @$controls ;
- }
-
-#------------------------------------------------------------------------------------------
-#
-# add_sublines
-#
-# fügt ein tab elsement mit subforms zu einem Formular hinzu
-#
-# in $subform array mit hashs
-# text => <anzeige text>
-# fn => Dateiname
-# fields => Felddefinitionen (alternativ zu fn)
-#
-
-
-sub add_sublines
- {
- my ($self, $object_data, $subforms, $type) = @_;
-
- my $name = $object_data->{name};
- my $text = $object_data->{text};
- my $width = $object_data->{width};
- my $section = $object_data->{section};
-
- $text ||= $name;
-
- my @forms ;
- my @values ;
- my @options ;
-
- foreach my $file (@$subforms)
- {
- my $fn = $file -> {fn} ;
- my $subfields = $file -> {fields} ;
- if ($fn)
- {
- my $obj = Execute ({object => "./$fn"} ) ;
- #$subfields = eval {$obj -> fields ($r,$file) || undef};
- }
- push @forms, $subfields || [];
- push @values, $file->{value} || $file->{name};
- push @options, $file -> {text} || $file->{value} || $file->{name};
- }
-
- return { section => $section , width => $width, name => $name , text => $text, type => $type || 'select',
- values => \@values, options => \@options, sublines => \@forms,
- class => $object_data->{class}, controlclass => $object_data->{controlclass}};
-
- }
-
-#------------------------------------------------------------------------------------------
-#
-# fields_add_checkbox_subform
-#
-# fügt ein checkbox Element mit Subforms hinzu
-#
-# in $subform array mit hashs
-# text => <anzeige text>
-# name => <name des Attributes>
-# value => <Wert der checkbox>
-# fn => Dateiname
-# fields => Felddefinitionen (alternativ zu fn)
-#
-
-sub add_checkbox_subform
- {
- my ($self, $subform, $args) = @_ ;
- $args ||= {} ;
-
- my $name = $subform->{name};
- my $text = $subform->{text};
- my $value = $subform->{value} || 1 ;
-
- my $width = $subform->{width};
- my $section;
-
- if(! $subform->{nosection})
- {
- $section = $subform->{section};
- $section ||= 1;
- }
-
- $name ||= "__$value";
- $width ||= 1;
-
- my $subfield;
- my $fn;
- if($subfield = $subform->{fields})
- {
- # .... ok
- }
- elsif($fn = $subform->{fn})
- {
- my $obj = Execute ({object => "./$fn"} ) ;
- #$subfield = [.eval {$obj -> fields ($r, { %$file, %$args} ) || undef}];
- }
-
-
- return {type => 'checkbox' , section => $section, width => $width, name => $name, text => $text, value => $value, sublines => $subfield}
-
- }
-
-
-1;
-
-
-__EMBPERL__
-
-[$syntax EmbperlBlocks $]
-
-[.# ---------------------------------------------------------------------------
-#
-# show_form_begin - output begin of form
-#]
-
-[$ sub show_form_begin ($self) $]
-<script language="javascript">var doValidate = 1 ;</script>
-<script src="/js/EmbperlForm.js"></script>
-<script src="/js/TableCtrl.js"></script>
-
-<form id="[+ $self->{formname} +]" name="[+ $self->{formname} +]" method="post" action="[+ $self->{actionurl}+]"
-[$ if ($self -> {on_submit_function}) $]
-onSubmit="s=[+ $self->{on_submit_function} +];if (s) { v=doValidate; doValidate=1; return ((!v) || epform_validate_[+ $self->{formname} +]()); } else { return false; }"
-[$else$]
-onSubmit="v=doValidate; doValidate=1; return ( (!v) || epform_validate_[+ $self->{formname}+]());"
-[$endif$]
->
-[$endsub$]
-
-[.# ---------------------------------------------------------------------------
-#
-# show_form_end - output end of form
-#]
-
-[$ sub show_form_end $]
-</form>
-[$endsub$]
-
-[. ---------------------------------------------------------------------------
-#
-# show_controls_begin - output begin of form controls area
-#]
-
-[.$ sub show_controls_begin ($self, $activeid)
-
-my $parent = $self -> parent_form ;
-my $class = $parent -> {noframe}?'cTableDivU':'cTableDiv' ;
-$]
-<div id="[+ $self->{id} +]"
-[$if ($activeid && $self->{id} ne $activeid) $] style="display: none" [$endif$]
->
-[$if (!$self -> {noframe}) $]<table class="[+ $class +]"><tr><td class="cTabTD"> [$endif$]
-<table class="cBase cTable">
-[$endsub$]
-
-[.# ---------------------------------------------------------------------------
-#
-# show_controls_end - output end of form controls area
-#]
-
-[$sub show_controls_end ($self) $]
-</table>
-[$ if (!$self -> {noframe}) $]</td></tr></table> [$endif$]
-</div>
-
-[$ if (@{$self->{bottom_code}}) $]
-<script language="javascript">
-[.+ do { local $escmode = 0; join ("\n", @{$self->{bottom_code}}) } +]
-</script>
-[$endif$]
-[$ if ($self -> {toplevel} && @{$self -> {fields2empty}}) $]
-<input type="hidden" name="-fields2empty" value="[+ join (' ', @{$self -> {fields2empty}}) +]">
-[$endif$]
-[$endsub$]
-
-[.# ---------------------------------------------------------------------------
-#
-# show_line_begin - output begin of line
-#]
-
-[.$ sub show_line_begin ($self, $lineno, $id, $activeid)
-
- $id =~ /^(.+)-(\d+?)-(\d+?)$/ ;
- my $baseid = $1 ;
- my $baseidn = $2 ;
- $activeid =~ /^(.+)-(\d+?)$/ ;
- my $baseaid = $1 ;
- my $baseaidn = $2 ;
-
- my $class = $lineno == 0?'cTableRow1':'cTableRow' ;
-$]
- <tr class="[+ $class +]"
- [$if $id $] id="[+ $id +]"[$endif$]
- [$if ($baseid eq $baseaid && $baseidn != $baseaidn) $] style="display: none"[$endif$]
- >
-[$endsub$]
-
-[.# ---------------------------------------------------------------------------
-#
-# show_line_end - output end of line
-#]
-
-[$ sub show_line_end $]
- </tr>
-[$endsub$]
-
-
-__END__
-
-=pod
-
-=head1 NAME
-
-Embperl::Form - Embperl Form class
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-=head1 METHODS
-
-=head2 new ($controls, $options)
-
-=over 4
-
-=item * $controls
-
-Array ref with controls which should be displayed
-inside the form. Each control needs either to be a
-hashref with all parameters for the control or
-a control object.
-
-If hash refs are given it's necessary to specify
-the C<type> parameter, to let Embperl::Form
-know which control to create.
-
-See Embperl::Form::Control and Embperl::Form::Control::*
-for a list of available parameters.
-
-=item * $options
-
-Hash ref which can take the following parameters:
-
-=over 4
-
-=item * formname
-
-Will be used as name and id attribute of the form. If you have more
-then one form on a page it's necessary to have different form names
-to make form validation work correctly.
-
-=item * masks
-
-Contains a hash ref which can specify a set of masks
-for the controls. A mask is a set of parameter which
-overwrite the setting of a control. You can specify
-a mask for a control name (key is name), for a control
-type (key is *type) or for all controls (key is *).
-
-Example:
-
- {
- 'info' => { readonly => 1},
- '*textarea' => { cols => 80 },
- '*' => { labelclass => 'myclass', labelnowrap => 1}
- }
-
-This will force the control with the name C<info> to be readonly, it
-will force all C<textarea> controls to have 80 columns and
-it will force the label of all controls to have a class of myclass
-and not to wrap the text.
-
-=item * defaults
-
-Contains a hash ref which can specify a set of defaults
-for the controls. You can specify
-a default for a control name (key is name), for a control
-type (key is *type) or for all controls (key is *).
-
-Example:
-
- {
- 'info' => { readonly => 1},
- '*textarea' => { cols => 80 },
- '*' => { labelclass => 'myclass', labelnowrap => 1}
- }
-
-This will make the control with the name C<info> to default to be readonly, it
-will deafult all C<textarea> controls to have 80 columns and
-it will set the default class for the labels of all controls to
-myclass and not to wrap the text.
-
-=back
-
-=back
-
-=head2 layout
-
-=head2 show
-
-
-=head1 AUTHOR
-
-G. Richter (richter [at] dev)
-
-=head1 SEE ALSO
-
-perl(1), Embperl, Embperl::Form::Control
-
-
-
-
-
-
-
+
+###################################################################################
+#
+# Embperl - Copyright (c) 1997-2005 Gerald Richter / ecos gmbh www.ecos.de
+#
+# 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 ;
+
+use strict ;
+
+use lib qw{..} ;
+
+use Embperl ;
+use Embperl::Form::Control ;
+use Embperl::Form::Validate ;
+use Embperl::Form::Control::blank ;
+
+use Embperl::Inline ;
+
+use Data::Dumper ;
+
+our %forms ;
+our %CLEANUP = ('forms' => 0) ;
+
+# ---------------------------------------------------------------------------
+#
+# new - create a new form
+#
+
+
+sub new
+
+ {
+ my ($class, $controls, $options, $id, $validate_rules, $parentptr) = @_ ;
+
+ my $toplevel = $validate_rules?0:1 ;
+ $id ||= 'topdiv' ;
+ $options ||= {} ;
+
+ my $self = ref $class?$class:{} ;
+
+ $self -> {controls} = $controls ;
+ $self -> {id} = $id ;
+ $self -> {parentptr} = $parentptr ;
+ $self -> {formname} = $options -> {formname} || 'topform' ;
+ $self -> {bottom_code} = [] ;
+ $self -> {validate_rules} = [] ;
+ $self -> {toplevel} = $toplevel ;
+ $self -> {valign} = $options -> {valign} || 'top' ;
+
+ bless $self, $class if (!ref $class);
+
+ $Embperl::FormData::forms{"$self"} = $self ;
+ if (!$validate_rules)
+ {
+ $validate_rules = $self -> {validate_rules} = [] ;
+ }
+
+ $self -> new_controls ($controls, $options, undef, $id, $validate_rules, $options -> {masks}, $options -> {defaults}) ;
+
+ $self -> {noframe} = 1 if ($controls && @$controls > 0 &&
+ $controls -> [0] -> noframe) ;
+
+
+ if ($toplevel)
+ {
+ my $epf = $self -> {validate} = Embperl::Form::Validate -> new ($validate_rules, $self -> {formname}) if ($self -> {validate_rules}) ;
+ $self -> add_code_at_bottom ($epf -> get_script_code) ;
+ $self -> {fields2empty} = [] ;
+ }
+ else
+ {
+ $self -> {fields2empty} = $self -> parent_form -> {fields2empty} ;
+ }
+
+ return $self ;
+ }
+
+# ---------------------------------------------------------------------------
+#
+# DESTROY
+#
+
+sub DESTROY
+ {
+ my ($self) = @_ ;
+
+ delete $Embperl::FormData::forms{"$self"} ;
+ }
+
+# ---------------------------------------------------------------------------
+#
+# get_control_packages
+#
+# returns an array ref with packges where to search for control classes
+#
+
+sub get_control_packages
+ {
+ my ($self) = @_ ;
+
+ return $self -> {control_packages} || ['Embperl::Form::Control'] ;
+ }
+
+# ---------------------------------------------------------------------------
+#
+# get_datasrc_packages
+#
+# returns an array ref with packges where to search for data source classes
+#
+
+sub get_datasrc_packages
+ {
+ my ($self) = @_ ;
+
+ return $self -> {datasrc_packages} || ['Embperl::Form::DataSource'] ;
+ }
+
+# ---------------------------------------------------------------------------
+#
+# new_object - load a control or datasrc class and create a new object of
+# this class
+#
+# in $packages arrayref of packages to search the class
+# $name name of the class. Either a full package name or
+# only the last part of the package. In the later
+# @$packages are searched for this class
+# ret reference to the object
+#
+
+sub new_object
+
+ {
+ my ($self, $packages, $name, $args) = @_ ;
+
+ my $ctlmod ;
+ my $obj ;
+
+ $args ||= {} ;
+
+ if ($name =~ /::/)
+ {
+ if (!defined (&{"$name\:\:new"}))
+ {
+ eval "require $name" ;
+ warn $@ if ($@) ;
+ }
+ $obj = $name -> new ($args) ;
+ $ctlmod = $name ;
+ }
+ else
+ {
+ foreach my $package (@$packages)
+ {
+ my $mod = "$package\:\:$name" ;
+ if ($mod -> can('new'))
+ {
+ $obj = $mod -> new ($args) ;
+ $ctlmod = $mod ;
+ last ;
+ }
+ }
+ if (!$ctlmod)
+ {
+ foreach my $package (@$packages)
+ {
+ my $mod = "$package\:\:$name" ;
+ eval "require $mod" ;
+ warn $@ if ($@) ;
+ if ($mod -> can('new'))
+ {
+ $obj = $mod -> new ($args) ;
+ $ctlmod = $mod ;
+ last ;
+ }
+ }
+ }
+ }
+ die "No Module found for type = $name, searched: @$packages" if (!$ctlmod || !$obj) ;
+
+ return $obj ;
+ }
+
+
+# ---------------------------------------------------------------------------
+#
+# new_controls - transform elements to control objects
+#
+
+
+sub new_controls
+
+ {
+ my ($self, $controls, $options, $id, $formid, $validate_rules, $masks, $defaults) = @_ ;
+
+ my $n = 0 ;
+ my $packages = $self -> get_control_packages ;
+
+ foreach my $control (@$controls)
+ {
+ die "control definition must be a hashref or an object, is '$control' " if (!ref $control || ref $control eq 'ARRAY');
+
+ my $name = $control -> {name} ;
+ $control -> {type} =~ s/sf_select.+/select/ ;
+ $control -> {parentid} = $id if ($id) ;
+ $control -> {id} ||= "$control->{name}-$n" ;
+ $control -> {formid} = $formid ;
+ $control -> {formptr} = "$self" ;
+
+ my $type = $control -> {type} ;
+ my $default = $defaults -> {$name} || $defaults -> {"*$type"} || $defaults -> {'*'};
+ my $mask = $masks -> {$name} || $masks -> {"*$type"} || $masks -> {'*'};
+ if ($mask)
+ {
+ foreach (keys %$mask)
+ {
+ $control -> {$_} = $mask -> {$_} ;
+ }
+ }
+ if ($default)
+ {
+ foreach (keys %$default)
+ {
+ $control -> {$_} = $default -> {$_} if (!exists $control -> {$_}) ;
+ }
+ }
+
+
+ if (ref $control eq 'HASH')
+ {
+ my $type = $control -> {type} || ($control -> {name}?'input':'blank') ;
+ $control = $self -> new_object ($packages, $type, $control) ;
+ }
+
+ next if ($control -> is_disabled) ;
+ push @{$validate_rules}, $control -> get_validate_rules ;
+ if ($control -> {sublines})
+ {
+ my $i = 0 ;
+ my $name = $control -> {name} ;
+ foreach my $subcontrols (@{$control -> {sublines}})
+ {
+ next if (!$subcontrols) ;
+ $self -> new_controls ($subcontrols, $options, "$name-$i", $formid, $validate_rules, $masks, $defaults) ;
+ $i++ ;
+ }
+ }
+ if ($control -> {subforms})
+ {
+ my @obj ;
+ my @ids ;
+ my $i = 1 ;
+
+ foreach my $subcontrols (@{$control -> {subforms}})
+ {
+ next if (!$subcontrols) ;
+ my $id = "$control->{name}-$i" ;
+ my $class = ref $self ;
+ my $subform = $class -> new ($subcontrols, $options, $id, $validate_rules, "$self") ;
+ push @ids, $id ;
+ push @obj, $subform ;
+ $i++ ;
+ }
+ $control -> {subobjects} = \@obj ;
+ $control -> {subids} = \@ids ;
+ }
+ $n++ ;
+ }
+ }
+
+# ---------------------------------------------------------------------------
+#
+# parent_form - return parent form object if any
+#
+
+sub parent_form
+ {
+ my ($self) = @_ ;
+
+ return $Embperl::FormData::forms{$self -> {parentptr}} ;
+ }
+
+
+# ---------------------------------------------------------------------------
+#
+# add_code_at_bottom - add js code at the bottom of the page
+#
+
+sub add_code_at_bottom
+
+ {
+ my ($self, $code) = @_ ;
+
+ push @{$self->{bottom_code}}, $code ;
+ }
+
+
+# ---------------------------------------------------------------------------
+#
+# layout - build the layout of the form
+#
+
+sub layout
+
+ {
+ my ($self, $controls) = @_ ;
+
+ $controls ||= $self -> {controls} ;
+
+ my $x = 0 ;
+ my $max_x = 100 ;
+ my $line = [] ;
+ my @lines ;
+ my $max_num = 0 ;
+ my $num = 0 ;
+ foreach my $control (@$controls)
+ {
+ next if ($control -> is_disabled) ;
+ my $width = $control -> {width_percent} || int($max_x / ($control -> {width} || 2)) ;
+ if ($x + $width > $max_x || $control -> {newline} > 0 || (($control -> {sublines} || $control -> {subobjects}) && @$line))
+ { # new line
+ if ($x < $max_x)
+ {
+ push @$line, Embperl::Form::Control::blank -> new (
+ {width_percent => $max_x - $x }) ;
+ }
+ push @lines, $line ;
+ $line = [] ;
+ $x = 0 ;
+ $num = 0 ;
+ }
+ push @$line, $control ;
+ $control -> {width_percent} = $width ;
+ $control -> {x_percent} = $x ;
+ $x += $width ;
+ $num++ ;
+ $max_num = $num if ($num > $max_num) ;
+
+ if ($control -> {subobjects} || $control -> {sublines} || $control -> {newline} < 0)
+ { # new line
+ if ($x < $max_x)
+ {
+ push @$line, Embperl::Form::Control::blank -> new (
+ {width_percent => $max_x - $x }) ;
+ }
+ push @lines, $line ;
+ $line = [] ;
+ $x = 0 ;
+ $num = 0 ;
+ }
+
+ if ($control -> {sublines})
+ {
+ foreach my $subcontrols (@{$control -> {sublines}})
+ {
+ next if (!$subcontrols) ;
+ my $sublines = $self -> layout ($subcontrols) ;
+ push @lines, @$sublines ;
+ }
+ }
+ if ($control -> {subobjects})
+ {
+ my @obj ;
+ foreach my $subobj (@{$control -> {subobjects}})
+ {
+ next if (!$subobj) ;
+ $subobj -> layout ;
+ }
+ }
+ }
+
+ push @lines, $line if (@$line);
+ $self -> {max_num} = $max_num ;
+ return $self -> {layout} = \@lines ;
+ }
+
+
+# ---------------------------------------------------------------------------
+#
+# show_controls - output the form control area
+#
+
+sub show_controls
+
+ {
+ my ($self, $req, $activeid) = @_ ;
+
+ my $lines = $self -> {layout} ;
+ my %n ;
+ my $activesubid ;
+
+ $self -> show_controls_begin ($req, $activeid) ;
+ my $lineno = 0 ;
+ foreach my $line (@$lines)
+ {
+ my $lineid = @$line && $line->[0]{parentid}?"$line->[0]{parentid}":'id' ;
+ $n{$lineid} ||= 10 ;
+
+ $self -> show_line_begin ($req, $lineno, "$lineid-$n{$lineid}", $activesubid);
+ foreach my $control (@$line)
+ {
+ my $newactivesubid = $control -> get_active_id ($req) ;
+ $control -> show ($req);
+ $activesubid = $newactivesubid if ($newactivesubid) ;
+ if ($control -> {subobjects})
+ {
+ my @obj ;
+ $control -> show_sub_begin ($req) ;
+ foreach my $subobj (@{$control -> {subobjects}})
+ {
+ next if (!$subobj || !$subobj -> {controls} || !@{$subobj -> {controls}}) ;
+ $subobj -> show ($req, $activesubid) ;
+ }
+ $control -> show_sub_end ($req) ;
+ }
+ }
+ $self -> show_line_end ($req, $lineno);
+ $lineno++ ;
+ $n{$lineid}++ ;
+ }
+ $self -> show_controls_end ($req) ;
+
+ return ;
+ }
+
+
+# ---------------------------------------------------------------------------
+#
+# show - output the form
+#
+
+sub show
+
+ {
+ my ($self, $req, $activeid) = @_ ;
+
+ $self -> init_data ($req) if ($self -> {toplevel});
+ #$self -> validate ($req) if ($self -> {toplevel});
+ $self -> show_form_begin ($req) if ($self -> {toplevel});
+ $self -> show_controls ($req, $activeid) ;
+ $self -> show_form_end ($req) if ($self -> {toplevel});
+ }
+
+
+# ---------------------------------------------------------------------------
+#
+# init_data -
+#
+
+sub init_data
+
+ {
+
+ }
+
+# ---------------------------------------------------------------------------
+#
+# validate - validate the form input
+#
+
+sub validate
+
+ {
+
+ }
+
+
+#------------------------------------------------------------------------------------------
+#
+# add_tabs
+#
+# fügt ein tab elsement mit subforms zu einem Formular hinzu
+#
+# in $subform array mit hashs
+# text => <anzeige text>
+# fn => Dateiname
+# fields => Felddefinitionen (alternativ zu fn)
+#
+
+sub add_tabs
+
+ {
+ my ($self, $subforms, $args) = @_ ;
+ my @forms ;
+ my @values ;
+ my @options ;
+ my @grids;
+ $args ||= {} ;
+
+ foreach my $file (@$subforms)
+ {
+ my $fn = $file -> {fn} ;
+ my $subfields = $file -> {fields} ;
+
+ push @options, $file -> {text};
+ if ($fn)
+ {
+ my $obj = Execute ({object => "./$fn"} ) ;
+ #$subfields = eval {$obj -> fields ($r, {%$file, %$args}) || undef};
+ }
+ push @forms, $subfields;
+ push @grids, $file -> {grid};
+ push @values, $file -> {value} ||= scalar(@forms);
+ }
+
+ return {
+ section => 'cSectionText',
+ name => '__auswahl',
+ type => 'tabs',
+ values => \@values,
+ grids => \@grids,
+ options => \@options,
+ subforms=> \@forms,
+ width => 1,
+ },
+ }
+
+#------------------------------------------------------------------------------------------
+#
+# add_line
+#
+# adds the given controls into one line
+#
+#
+
+sub add_line
+
+ {
+ my ($self, $controls, $cnt) = @_ ;
+
+ $cnt ||= @$controls ;
+ foreach my $control (@$controls)
+ {
+ $control -> {width} = $cnt ;
+ }
+
+ return @$controls ;
+ }
+
+#------------------------------------------------------------------------------------------
+#
+# add_sublines
+#
+# fügt ein tab elsement mit subforms zu einem Formular hinzu
+#
+# in $subform array mit hashs
+# text => <anzeige text>
+# fn => Dateiname
+# fields => Felddefinitionen (alternativ zu fn)
+#
+
+
+sub add_sublines
+ {
+ my ($self, $object_data, $subforms, $type) = @_;
+
+ my $name = $object_data->{name};
+ my $text = $object_data->{text};
+ my $width = $object_data->{width};
+ my $section = $object_data->{section};
+
+ $text ||= $name;
+
+ my @forms ;
+ my @values ;
+ my @options ;
+
+ foreach my $file (@$subforms)
+ {
+ my $fn = $file -> {fn} ;
+ my $subfields = $file -> {fields} ;
+ if ($fn)
+ {
+ my $obj = Execute ({object => "./$fn"} ) ;
+ #$subfields = eval {$obj -> fields ($r,$file) || undef};
+ }
+ push @forms, $subfields || [];
+ push @values, $file->{value} || $file->{name};
+ push @options, $file -> {text} || $file->{value} || $file->{name};
+ }
+
+ return { section => $section , width => $width, name => $name , text => $text, type => $type || 'select',
+ values => \@values, options => \@options, sublines => \@forms,
+ class => $object_data->{class}, controlclass => $object_data->{controlclass}};
+
+ }
+
+#------------------------------------------------------------------------------------------
+#
+# fields_add_checkbox_subform
+#
+# fügt ein checkbox Element mit Subforms hinzu
+#
+# in $subform array mit hashs
+# text => <anzeige text>
+# name => <name des Attributes>
+# value => <Wert der checkbox>
+# fn => Dateiname
+# fields => Felddefinitionen (alternativ zu fn)
+#
+
+sub add_checkbox_subform
+ {
+ my ($self, $subform, $args) = @_ ;
+ $args ||= {} ;
+
+ my $name = $subform->{name};
+ my $text = $subform->{text};
+ my $value = $subform->{value} || 1 ;
+
+ my $width = $subform->{width};
+ my $section;
+
+ if(! $subform->{nosection})
+ {
+ $section = $subform->{section};
+ $section ||= 1;
+ }
+
+ $name ||= "__$value";
+ $width ||= 1;
+
+ my $subfield;
+ my $fn;
+ if($subfield = $subform->{fields})
+ {
+ # .... ok
+ }
+ elsif($fn = $subform->{fn})
+ {
+ my $obj = Execute ({object => "./$fn"} ) ;
+ #$subfield = [.eval {$obj -> fields ($r, { %$file, %$args} ) || undef}];
+ }
+
+
+ return {type => 'checkbox' , section => $section, width => $width, name => $name, text => $text, value => $value, sublines => $subfield}
+
+ }
+
+
+1;
+
+
+__EMBPERL__
+
+[$syntax EmbperlBlocks $]
+
+[.# ---------------------------------------------------------------------------
+#
+# show_form_begin - output begin of form
+#]
+
+[$ sub show_form_begin ($self, $req) $]
+<script language="javascript">var doValidate = 1 ;</script>
+<script src="/js/EmbperlForm.js"></script>
+<script src="/js/TableCtrl.js"></script>
+
+<form id="[+ $self->{formname} +]" name="[+ $self->{formname} +]" method="post" action="[+ $self->{actionurl}+]"
+[$ if ($self -> {on_submit_function}) $]
+onSubmit="s=[+ $self->{on_submit_function} +];if (s) { v=doValidate; doValidate=1; return ((!v) || epform_validate_[+ $self->{formname} +]()); } else { return false; }"
+[$else$]
+onSubmit="v=doValidate; doValidate=1; return ( (!v) || epform_validate_[+ $self->{formname}+]());"
+[$endif$]
+>
+[$endsub$]
+
+[.# ---------------------------------------------------------------------------
+#
+# show_form_end - output end of form
+#]
+
+[$ sub show_form_end ($req) $]
+</form>
+[$endsub$]
+
+[. ---------------------------------------------------------------------------
+#
+# show_controls_begin - output begin of form controls area
+#]
+
+[.$ sub show_controls_begin ($self, $req, $activeid)
+
+my $parent = $self -> parent_form ;
+my $class = $parent -> {noframe}?'cTableDivU':'cTableDiv' ;
+$]
+<div id="[+ $self->{id} +]"
+[$if ($activeid && $self->{id} ne $activeid) $] style="display: none" [$endif$]
+>
+[$if (!$self -> {noframe}) $]<table class="[+ $class +]"><tr><td class="cTabTD"> [$endif$]
+<table class="cBase cTable">
+[$endsub$]
+
+[.# ---------------------------------------------------------------------------
+#
+# show_controls_end - output end of form controls area
+#]
+
+[$sub show_controls_end ($self, $req) $]
+</table>
+[$ if (!$self -> {noframe}) $]</td></tr></table> [$endif$]
+</div>
+
+[$ if (@{$self->{bottom_code}}) $]
+<script language="javascript">
+[.+ do { local $escmode = 0; join ("\n", @{$self->{bottom_code}}) } +]
+</script>
+[$endif$]
+[$ if ($self -> {toplevel} && @{$self -> {fields2empty}}) $]
+<input type="hidden" name="-fields2empty" value="[+ join (' ', @{$self -> {fields2empty}}) +]">
+[$endif$]
+[$endsub$]
+
+
+[.# ---------------------------------------------------------------------------
+#
+# show_line_begin - output begin of line
+#]
+
+[.$ sub show_line_begin ($self, $req, $lineno, $id, $activeid)
+
+ $id =~ /^(.+)-(\d+?)-(\d+?)$/ ;
+ my $baseid = $1 ;
+ my $baseidn = $2 ;
+ $activeid =~ /^(.+)-(\d+?)$/ ;
+ my $baseaid = $1 ;
+ my $baseaidn = $2 ;
+
+ my $class = $lineno == 0?'cTableRow1':'cTableRow' ;
+$]
+ <tr class="[+ $class +]" valign="[+ $self->{valign} +]"
+ [$if $id $] id="[+ $id +]"[$endif$]
+ [$if ($baseid eq $baseaid && $baseidn != $baseaidn) $] style="display: none"[$endif$]
+ >
+[$endsub$]
+
+[.# ---------------------------------------------------------------------------
+#
+# show_line_end - output end of line
+#]
+
+[$ sub show_line_end ($req) $]
+ </tr>
+[$endsub$]
+
+
+__END__
+
+=pod
+
+=head1 NAME
+
+Embperl::Form - Embperl Form class
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+=head1 METHODS
+
+=head2 new ($controls, $options)
+
+=over 4
+
+=item * $controls
+
+Array ref with controls which should be displayed
+inside the form. Each control needs either to be a
+hashref with all parameters for the control or
+a control object.
+
+If hash refs are given it's necessary to specify
+the C<type> parameter, to let Embperl::Form
+know which control to create.
+
+See Embperl::Form::Control and Embperl::Form::Control::*
+for a list of available parameters.
+
+=item * $options
+
+Hash ref which can take the following parameters:
+
+=over 4
+
+=item * formname
+
+Will be used as name and id attribute of the form. If you have more
+then one form on a page it's necessary to have different form names
+to make form validation work correctly.
+
+=item * masks
+
+Contains a hash ref which can specify a set of masks
+for the controls. A mask is a set of parameter which
+overwrite the setting of a control. You can specify
+a mask for a control name (key is name), for a control
+type (key is *type) or for all controls (key is *).
+
+Example:
+
+ {
+ 'info' => { readonly => 1},
+ '*textarea' => { cols => 80 },
+ '*' => { labelclass => 'myclass', labelnowrap => 1}
+ }
+
+This will force the control with the name C<info> to be readonly, it
+will force all C<textarea> controls to have 80 columns and
+it will force the label of all controls to have a class of myclass
+and not to wrap the text.
+
+=item * defaults
+
+Contains a hash ref which can specify a set of defaults
+for the controls. You can specify
+a default for a control name (key is name), for a control
+type (key is *type) or for all controls (key is *).
+
+Example:
+
+ {
+ 'info' => { readonly => 1},
+ '*textarea' => { cols => 80 },
+ '*' => { labelclass => 'myclass', labelnowrap => 1}
+ }
+
+This will make the control with the name C<info> to default to be readonly, it
+will deafult all C<textarea> controls to have 80 columns and
+it will set the default class for the labels of all controls to
+myclass and not to wrap the text.
+
+=item * valign
+
+valign for control cells. Defaults to 'top' .
+
+=back
+
+=back
+
+=head2 layout
+
+=head2 show
+
+
+=head1 AUTHOR
+
+G. Richter (richter [at] dev)
+
+=head1 SEE ALSO
+
+perl(1), Embperl, Embperl::Form::Control
+
+
+
+
+

Modified: perl/embperl/trunk/Embperl/Form/Control.pm
URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control.pm?view=diff&rev=474139&r1=474138&r2=474139
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control.pm Sun Nov 12 20:39:49 2006
@@ -32,16 +32,32 @@
{
my ($class, $args) = @_ ;

- bless $args, $class ;
+ my $self = { %$args } ;
+ bless $self, $class ;

- return $args ;
+ $self -> init ;
+
+ return $self ;
}

# ---------------------------------------------------------------------------
#
-# noframe - do not draw frame border if this is the only control
+# init - init the new control
#

+sub init
+
+ {
+ my ($self) = @_ ;
+
+ return $self ;
+ }
+
+
+# ---------------------------------------------------------------------------
+#
+# noframe - do not draw frame border if this is the only control
+#

sub noframe

@@ -54,11 +70,10 @@
# is_disabled - do not display this control at all
#

-
sub is_disabled

{
- my ($self) = @_ ;
+ my ($self, $req) = @_ ;

return $self -> {disable} ;
}
@@ -68,31 +83,28 @@
# is_readonly - could value of this control be changed ?
#

-
sub is_readonly

{
- my ($self) = @_ ;
+ my ($self, $req) = @_ ;

return $self -> {readonly} ;
}

-
-
# ---------------------------------------------------------------------------
#
-# show - output the control
+# show - output the whole control including the label
#

sub show

{
- my ($self, $data) = @_ ;
+ my ($self, $req) = @_ ;

$fdat{$self -> {name}} = $self -> {default} if ($fdat{$self -> {name}} eq '' && exists ($self -> {default})) ;
my $span = 0 ;
- $span += $self -> show_label_cell ($span);
- return $self -> show_control_cell ($span, $data) ;
+ $span += $self -> show_label_cell ($req, $span);
+ return $self -> show_control_cell ($req, $span) ;
}

# ---------------------------------------------------------------------------
@@ -118,7 +130,6 @@
return ;
}

-
# ---------------------------------------------------------------------------
#
# form - return form object
@@ -128,10 +139,9 @@
{
my ($self) = @_ ;

- return $Embperl::Form::forms{$self -> {formno}} ;
+ return $Embperl::FormData::forms{$self -> {formptr}} ;
}

-
# ---------------------------------------------------------------------------
#
# get_validate_rules - get rules for validation
@@ -139,7 +149,7 @@

sub get_validate_rules
{
- my ($self) = @_ ;
+ my ($self, $req) = @_ ;

my @local_rules ;
if ($self -> {validate})
@@ -166,7 +176,7 @@
# show_sub_begin - output begin of sub form
#]

-[.$sub show_sub_begin ($self)
+[$sub show_sub_begin ($self, $req)

my $span = $self->{width_percent} ;
$]
@@ -178,23 +188,23 @@
# show_sub_end - output end of sub form
#]

-[$sub show_sub_end ($self) $]
+[$sub show_sub_end ($self, $req) $]
</td>
[$endsub$]

[# ---------------------------------------------------------------------------
#
-# show - output the control
+# show - output the label
#]

-[$ sub show_label ($self) $][+ $self->{text} || $self->{name} +][$endsub$]
+[$ sub show_label ($self, $req) $][+ $self->{text} || $self->{name} +][$endsub$]

[# ---------------------------------------------------------------------------
#
# show_label_icon - output the icon before the label
#]

-[$sub show_label_icon ($self) $]
+[$sub show_label_icon ($self, $req) $]
[$if $self -> {sublines} $]&nbsp;<img src="plus.png" style="vertical-align: middle;">[$endif$]
[$if $self -> {parentid} $]&nbsp;<img src="vline.png" style="vertical-align: middle;">[$endif$]
[$endsub$]
@@ -204,7 +214,7 @@
# show - output the control
#]

-[.$ sub show_label_cell ($self)
+[.$ sub show_label_cell ($self, $req)

my $style = "";
$style = "white-space:nowrap;" if ($self->{labelnowrap}) ;
@@ -213,8 +223,8 @@
<td class="cLabelBox[$ if $self->{labelclass} $][+ " $self->{labelclass}" +][$ endif $]"
colspan="1" [$ if $style $]style="[+ $style +]"[$ endif $]>
[.-
- $self -> show_label ;
- $self -> show_label_icon ;
+ $self -> show_label ($req);
+ $self -> show_label_icon ($req) ;
-]
</td>
[- return 1; -]
@@ -222,17 +232,17 @@

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

-[$ sub show_control ($self) $][+ $self->{value} +][$endsub$]
+[$ sub show_control ($self, $req) $][+ $self->{value} +][$endsub$]

[# ---------------------------------------------------------------------------
#
# show_control_readonly - output the control as readonly
#]

-[$ sub show_control_readonly ($self) $][+ $self -> {value} || $fdat{$self -> {name}} +][$endsub$]
+[$ sub show_control_readonly ($self, $req) $][+ $self -> {value} || $fdat{$self -> {name}} +][$endsub$]


[# ---------------------------------------------------------------------------
@@ -240,12 +250,12 @@
# show_controll_cell - output the table cell for the control
#]

-[.$ sub show_control_cell ($self, $x)
+[.$ sub show_control_cell ($self, $req, $x)

my $span = $self->{width_percent} - $x ;
$]
<td class="cControlBox" colspan="[+ $span +]">
- [.* my @ret = $self -> is_readonly?$self -> show_control_readonly:$self -> show_control ; *]
+ [.* my @ret = $self -> is_readonly?$self -> show_control_readonly($req):$self -> show_control ($req); *]
</td>
[* return @ret ; *]
[$endsub$]
@@ -275,6 +285,10 @@

Create a new control

+=head2 init
+
+Init the new control
+
=head2 noframe

Do not draw frame border if this is the only control
@@ -289,45 +303,49 @@

=head2 show

-output the control
+Output the control

=head2 get_on_show_code

-returns JavaScript code that should be executed when the form becomes visible
+Returns JavaScript code that should be executed when the form becomes visible
+
+=head2 get_active_id
+
+Get the id of the value which is currently active

=head2 form

-return the form object of this control
+Return the form object of this control

=head2 show_sub_begin

-output begin of sub form
+Output begin of sub form

=head2 show_sub_end

-output end of sub form
+Output end of sub form

=head2 show_label

-output the label of the control
+Output the label of the control

=head2 show_label_icon

-output the icon after the label
+Output the icon after the label

=head2 show_label_cell

-output the table cell in which the label will be displayed
+Output the table cell in which the label will be displayed

Must return the columns it spans (default: 1)

=head2 show_control

-output the control itself
+Output the control itself

=head2 show_control_cell

-output the table cell in which the control will be displayed
+Output the table cell in which the control will be displayed

Gets the x position as argument

@@ -353,7 +371,7 @@

=head2 readonly

-If set, displays a readonly version of t control.
+If set, displays a readonly version of the control.

=head2 disable

@@ -376,6 +394,10 @@
With this parameter you can also specify the width of
the control in percent. This parameter take precendence over
C<width>
+
+=head2 default
+
+Default value of the control

=head1 AUTHOR


Modified: perl/embperl/trunk/Embperl/Form/Control/checkbox.pm
URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/checkbox.pm?view=diff&rev=474139&r1=474138&r2=474139
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/checkbox.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/checkbox.pm Sun Nov 12 20:39:49 2006
@@ -44,19 +44,19 @@
1 ;

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

-[.$ sub show_control ($self)
+[.$ sub show_control ($self)

my $name = $self -> {name} ;
my $val = $self -> {value} || 1 ;

push @{$self -> form -> {fields2empty}}, $name ;
-$]
+$]
<input type="checkbox" class="cBase cControlCheckbox" name="[+ $name +]" value="[+ $val +]"
[$if ($self -> {sublines} || $self -> {subobjects}) $] OnClick="show_checked(this)" [$endif$]
>
@@ -73,9 +73,9 @@

=head1 SYNOPSIS

- {
+ {
type => 'checkbox',
- text => 'blabla',
+ text => 'blabla',
name => 'foo',
value => 'bar'
}
@@ -95,7 +95,7 @@

Specifies the name of the checkbox control

-=head3 text
+=head3 text

Will be used as label for the checkbox control




---------------------------------------------------------------------
To unsubscribe, e-mail: embperl-cvs-unsubscribe [at] perl
For additional commands, e-mail: embperl-cvs-help [at] perl

ModPerl embperl-cvs RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.