Date: Monday June 16, 2003 @ 8:59 Author: matt Update of /home/cvs/AxKit-XSP-PerForm In directory localhost:/home/matt/Perl/AxKit-XSP-PerForm
Modified Files: PerForm.pm Log Message: Support multiple forms on one page better Log: PR: Index: PerForm.pm =================================================================== RCS file: /home/cvs/AxKit-XSP-PerForm/PerForm.pm,v retrieving revision 1.17 retrieving revision 1.18 diff -b -u -r1.17 -r1.18 --- PerForm.pm 2003/05/23 14:04:11 1.17 +++ PerForm.pm 2003/06/16 07:59:13 1.18 @@ -1,4 +1,4 @@ -# $Id: PerForm.pm,v 1.17 2003/05/23 14:04:11 matt Exp $ +# $Id: PerForm.pm,v 1.18 2003/06/16 07:59:13 matt Exp $ package AxKit::XSP::PerForm; @@ -59,7 +59,7 @@ Name => "hidden", NamespaceURI => "", Attributes => [ - { Name => "name", Value => "__submitting" }, + { Name => "name", Value => "__submitting_$attribs{name}" }, { Name => "value", Value => "1" }, ], }; @@ -69,14 +69,14 @@ return <<EOT { use vars qw(\$_form_ctxt [EMAIL PROTECTED] \%_submit_goto \%_submit_index [EMAIL PROTECTED] \%_cancel_goto \%_cancel_index ); -local \$_form_ctxt = { Form => \$cgi->parms, Apache => \$r }; +local \$_form_ctxt = { Form => \$cgi->parms, Apache => \$r, Name => '$attribs{name}' }; local [EMAIL PROTECTED]; local [EMAIL PROTECTED]; local \%_submit_goto; local \%_cancel_goto; local \%_submit_index; local \%_cancel_index; -start_form_$attribs{name}(\$_form_ctxt, \$cgi->param('__submitting')) +start_form_$attribs{name}(\$_form_ctxt, \$cgi->param('__submitting_$attribs{name}')) if defined \&start_form_$attribs{name}; EOT } @@ -119,12 +119,12 @@ return <<EOT; my \$package = __PACKAGE__; if (my \$sub = \$package->can('$onformend' || 'end_form_$name')) { - \$sub->(\$_form_ctxt, \$cgi->param('__submitting')); + \$sub->(\$_form_ctxt, \$cgi->param('__submitting_$name')); } -# warn("submitting? ".(\$cgi->param('__submitting')?"yes":"no").", failed? ".(\$_form_ctxt->{_Failed}?"yes":"no")); +# warn("submitting? ".(\$cgi->param('__submitting_$name')?"yes":"no").", failed? ".(\$_form_ctxt->{_Failed}?"yes":"no")); -if (\$cgi->param('__submitting')) { +if (\$cgi->param('__submitting_$name')) { foreach my \$cancel ([EMAIL PROTECTED]) { if (\$cgi->param(\$cancel)) { no strict 'refs'; @@ -140,7 +140,7 @@ } } -if (\$cgi->param('__submitting') && !\$_form_ctxt->{_Failed}) { +if (\$cgi->param('__submitting_$name') && !\$_form_ctxt->{_Failed}) { foreach my \$submit ([EMAIL PROTECTED]) { if (\$cgi->param(\$submit)) { no strict 'refs'; @@ -174,11 +174,12 @@ my $ctxt = ${"${package}::_form_ctxt"}; my $params = $ctxt->{Form}; + my $fname = $ctxt->{Name}; my $error; # validate - if ($params->{'__submitting'}) { + if ($params->{"__submitting_$fname"}) { # warn("Checking if $package can " . ($onval || "validate_${name}") . "\n"); if (my $sub = $package->can($onval || "validate_${name}")) { eval { @@ -313,11 +314,12 @@ my $ctxt = ${"${package}::_form_ctxt"}; my $params = $ctxt->{Form}; + my $fname = $ctxt->{Name}; my $error; # validate - if ($params->{'__submitting'}) { + if ($params->{"__submitting_$fname"}) { if (my $sub = $package->can($onval || "validate_${name}")) { eval { $sub->($ctxt, ($params->get($name.$index))[-1], $index); @@ -366,11 +368,12 @@ my $ctxt = ${"${package}::_form_ctxt"}; my $params = $ctxt->{Form}; + my $fname = $ctxt->{Name}; my $error; # validate - if ($params->{'__submitting'}) { + if ($params->{"__submitting_$fname"}) { if (my $sub = $package->can($onval || "validate_${name}")) { my $upload = Apache::Request->instance(Apache->request)->upload($name); @@ -425,13 +428,14 @@ my $ctxt = ${"${package}::_form_ctxt"}; my $params = $ctxt->{Form}; + my $fname = $ctxt->{Name}; if (!defined($value) && $package->can($onload || "load_${name}")) { # load value if not defined my $sub = $package->can($onload || "load_${name}"); $value = $sub->($ctxt, $value, $index); } - if ($params->{'__submitting'} && ($value ne ($params->get($name.$index))[-1])) { + if ($params->{"__submitting_$fname"} && ($value ne ($params->get($name.$index))[-1])) { die "Someone tried to change your hidden form value!"; } @@ -453,12 +457,13 @@ my $ctxt = ${"${package}::_form_ctxt"}; my $params = $ctxt->{Form}; + my $fname = $ctxt->{Name}; my $error; my ($selected, @options); # validate - if ($params->{'__submitting'}) { + if ($params->{"__submitting_$fname"}) { if (my $sub = $package->can($onval || "validate_${name}")) { eval { $sub->($ctxt, [$params->get($name.$index)], $index); @@ -472,7 +477,7 @@ elsif (my $sub = $package->can($onload || "load_${name}")) { ($selected, @options) = $sub->($ctxt, [$params->get($name.$index)], $default, $index); } - elsif (!$params->{'__submitting'}) { + elsif (!$params->{"__submitting_$fname"}) { $selected = [EMAIL PROTECTED]; @options = map { $$_{name}, $$_{value} } @{$option}; } @@ -513,11 +518,12 @@ my $ctxt = ${"${package}::_form_ctxt"}; my $params = $ctxt->{Form}; + my $fname = $ctxt->{Name}; my $error; # validate - if ($params->{'__submitting'}) { + if ($params->{"__submitting_$fname"}) { if (my $sub = $package->can($onval || "validate_${name}")) { eval { $sub->($ctxt, ($params->get($name.$index))[-1], $index); @@ -572,12 +578,13 @@ my $ctxt = ${"${package}::_form_ctxt"}; my $params = $ctxt->{Form}; + my $fname = $ctxt->{Name}; my $error; my ($selected, @options); # validate - if ($params->{'__submitting'}) { + if ($params->{"__submitting_$fname"}) { if (my $sub = $package->can($onval || "validate_${name}")) { eval { $sub->($ctxt, ($params->get($name.$index))[-1], $index); @@ -592,7 +599,7 @@ elsif (my $sub = $package->can($onload || "load_${name}")) { ($selected, @options) = $sub->($ctxt, ($params->get($name.$index))[-1], $default, $index); } - elsif (!$params->{'__submitting'}) { + elsif (!$params->{"__submitting_$fname"}) { $selected = $default; @options = map { $$_{name}, $$_{value} } @{$option}; } @@ -632,11 +639,12 @@ my $ctxt = ${"${package}::_form_ctxt"}; my $params = $ctxt->{Form}; + my $fname = $ctxt->{Name}; my $error; # validate - if ($params->{'__submitting'}) { + if ($params->{"__submitting_$fname"}) { if (my $sub = $package->can($onval || "validate_${name}")) { eval { $sub->($ctxt, ($params->get($name.$index))[-1], $index);