You are viewing a plain text version of this content. The canonical link for it is here.
Posted to embperl-cvs@perl.apache.org by ri...@apache.org on 2012/04/08 23:01:35 UTC
svn commit: r1311101 - in /perl/embperl/trunk/Embperl: Form.pm
Form/Control.pm
Author: richter
Date: Sun Apr 8 21:01:34 2012
New Revision: 1311101
URL: http://svn.apache.org/viewvc?rev=1311101&view=rev
Log:
Allow to load form when control id is requested
Modified:
perl/embperl/trunk/Embperl/Form.pm
perl/embperl/trunk/Embperl/Form/Control.pm
Modified: perl/embperl/trunk/Embperl/Form.pm
URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form.pm?rev=1311101&r1=1311100&r2=1311101&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form.pm (original)
+++ perl/embperl/trunk/Embperl/Form.pm Sun Apr 8 21:01:34 2012
@@ -69,10 +69,11 @@ sub sub_new
$self -> {jsnamespace} .= '.' if ($self -> {jsnamespace}) ;
$self -> {control_packages} = $options -> {control_packages} ;
$self -> {datasrc_packages} = $options -> {datasrc_packages} ;
+ $self -> {formptr} = $options -> {formptr} . '/' . $id || "$self" ;
bless $self, $class if (!ref $class);
- $Embperl::FormData::forms{"$self"} = $self ;
+ $Embperl::FormData::forms{$self -> {formptr}} = $self ;
if (!$validate_rules)
{
$validate_rules = $self -> {validate_rules} = [] ;
@@ -126,7 +127,7 @@ sub DESTROY
{
my ($self) = @_ ;
- delete $Embperl::FormData::forms{"$self"} ;
+ delete $Embperl::FormData::forms{$self -> {formptr}} ;
}
# ---------------------------------------------------------------------------
@@ -263,13 +264,21 @@ sub new_controls
{
die "control definition must be a hashref or an object, is '$control' " if (!ref $control || ref $control eq 'ARRAY');
+ my $ctlid = $control->{name} ;
+ my $q = 2 ;
+ while (exists $self -> {controlids}{$ctlid})
+ {
+ $ctlid = $control->{name} . '_' . $q ;
+ $q++ ;
+ }
+
my $name = $control -> {name} ;
- $control -> {type} =~ s/sf_select.+/select/ ;
- $control -> {parentid} = $id if ($id) ;
- $control -> {id} ||= "$control->{name}_$n" ;
- $control -> {basename} = $control->{name} ;
- $control -> {formid} = $formid ;
- $control -> {formptr} = "$self" ;
+ $control -> {type} =~ s/sf_select.+/select/ ;
+ $control -> {parentid} = $id if ($id) ;
+ $control -> {id} ||= $ctlid ;
+ $control -> {basename} = $control->{name} ;
+ $control -> {formid} = $formid ;
+ $control -> {formptr} = $self -> {formptr} ;
my $type = $control -> {type} ;
my $default = $defaults -> {$name} || $defaults -> {"*$type"} || $defaults -> {'*'};
@@ -319,15 +328,21 @@ sub new_controls
{
my @obj ;
my @ids ;
- my $i = 1 ;
+ my $i = 0 ;
foreach my $subcontrols (@{$control -> {subforms}})
{
next if (!$subcontrols) ;
- my $id = "$control->{name}_$i" ;
+ my $ctlid = $control -> {values}[$i] || $control->{name} ;
+ my $q = 2 ;
+ while (exists $self -> {controlids}{$ctlid})
+ {
+ $ctlid = $control->{name} . '_' . $q ;
+ $q++ ;
+ }
my $class = ref $self ;
- my $subform = $class -> sub_new ($subcontrols, $options, $id, $validate_rules, "$self") ;
- push @ids, $id ;
+ my $subform = $class -> sub_new ($subcontrols, $options, $ctlid, $validate_rules, $self -> {formptr}) ;
+ push @ids, $ctlid ;
push @obj, $subform ;
$i++ ;
}
Modified: perl/embperl/trunk/Embperl/Form/Control.pm
URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control.pm?rev=1311101&r1=1311100&r2=1311101&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control.pm Sun Apr 8 21:01:34 2012
@@ -153,6 +153,24 @@ sub form
# ---------------------------------------------------------------------------
#
+# load_form - load a form to a given formptr.
+#
+# This class method should be overwritten, to load a form to a given
+# formptr, in case it is not already loaded
+# The formptr maybe passed in the options hash during form creation
+#
+# in $formptr
+#
+
+
+sub load_form
+ {
+ my ($class, $formptr) = @_ ;
+
+ }
+
+# ---------------------------------------------------------------------------
+#
# get_control_from_id
#
@@ -162,7 +180,16 @@ sub get_control_from_id
my ($formptr, $ctlid) = split /#/, $id ;
my $form = $Embperl::FormData::forms{$formptr} ;
+
+ if (!$form)
+ {
+ $class -> load_form ($formptr) ;
+ $form = $Embperl::FormData::forms{$formptr} ;
+ die "Form for '$formptr' is not available" if (!$form) ;
+ }
+
my $ctl = $form -> {controlids}{$ctlid} ;
+ die "Control '$ctlid' in Form '$formptr' is not available" if (!$ctl) ;
return $ctl ;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: embperl-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-cvs-help@perl.apache.org