Date: Saturday February 8, 2003 @ 15:46
Author: matt
Update of /home/cvs/AxKit-XSP-PerForm
In directory ted.sergeant.org:/home/matt/Perl/AxKit-XSP-PerForm
Modified Files:
Changes PerForm.pm
Log Message:
- Change to use can() so we can use XSP inheritance
- Added onload and onvalidate attributes to each tag (allow to specify
Log:
PR:
Index: Changes
===================================================================
RCS file: /home/cvs/AxKit-XSP-PerForm/Changes,v
retrieving revision 1.5
retrieving revision 1.6
diff -b -u -r1.5 -r1.6
--- Changes 2002/12/23 14:05:42 1.5
+++ Changes 2003/02/08 15:46:13 1.6
@@ -1,7 +1,12 @@
Revision history for Perl extension AxKit::XSP::PerForm.
1.7
- - Patch from nachoman to finally properly support single and multiple select
+ - Patch from nachoman to finally properly support single and
+ multiple select
+ - Change to use can() so we can use XSP inheritance
+ - Added onload and onvalidate attributes to each tag (allow to specify
+ external code to validate/load, or use single function for multiple
+ tags)
- Patch from Mark Hershberger fixing:
- If the error message contains the word "at", everything
from that "at" to the end of the error is deleted.
Index: PerForm.pm
===================================================================
RCS file: /home/cvs/AxKit-XSP-PerForm/PerForm.pm,v
retrieving revision 1.13
retrieving revision 1.14
diff -b -u -r1.13 -r1.14
--- PerForm.pm 2002/12/23 14:05:42 1.13
+++ PerForm.pm 2003/02/08 15:46:13 1.14
@@ -1,4 +1,4 @@
-# $Id: PerForm.pm,v 1.13 2002/12/23 14:05:42 matt Exp $
+# $Id: PerForm.pm,v 1.14 2003/02/08 15:46:13 matt Exp $
package AxKit::XSP::PerForm;
@@ -14,16 +14,16 @@
@ISA = qw(Apache::AxKit::Language::XSP);
@EXPORT_TAGLIB = (
- 'textfield($name;$default,$width,$maxlength,$index)',
- 'password($name;$default,$width,$maxlength,$index)',
- 'submit($name;$value,$image,$alt,$border,$align,$goto,$index)',
- 'cancel($name;$value,$image,$alt,$border,$align,$goto,$index)',
- 'checkbox($name;$value,$checked,$label,$index)',
- 'file_upload($name;$value,$accept)',
- 'hidden($name;$value,$index)',
- 'textarea($name;$cols,$rows,$wrap,$default,$index)',
- 'single_select($name;$default,$index,*options):itemtag=option',
- 'multi_select($name;@default,$index,*option):itemtag=option',
+ 'textfield($name;$default,$width,$maxlength,$index,$onvalidate,$onload)',
+ 'password($name;$default,$width,$maxlength,$index,$onvalidate,$onload)',
+
+'submit($name;$value,$image,$alt,$border,$align,$goto,$index,$onvalidate,$onload)',
+
+'cancel($name;$value,$image,$alt,$border,$align,$goto,$index,$onvalidate,$onload)',
+ 'checkbox($name;$value,$checked,$label,$index,$onvalidate,$onload)',
+ 'file_upload($name;$value,$accept,$onvalidate,$onload)',
+ 'hidden($name;$value,$index,$onload)',
+ 'textarea($name;$cols,$rows,$wrap,$default,$index,$onvalidate,$onload)',
+
+'single_select($name;$default,$index,$onvalidate,$onload,*options):itemtag=option',
+ 'multi_select($name;@default,$index,$onvalidate,$onload,*option):itemtag=option',
);
use strict;
@@ -149,8 +149,8 @@
}
}
-sub textfield ($;$$$$) {
- my ($name, $default, $width, $maxlength, $index) = @_;
+sub textfield ($;$$$$$$) {
+ my ($name, $default, $width, $maxlength, $index, $onval, $onload) = @_;
my ($package) = caller;
no strict 'refs';
@@ -163,9 +163,9 @@
# validate
if ($params->{'__submitting'}) {
- if (defined &{"${package}::validate_${name}"}) {
+ if (my $sub = $package->can($onval || "validate_${name}")) {
eval {
- "${package}::validate_${name}"->($ctxt, $params->{$name.$index},
$index);
+ $sub->($ctxt, $params->{$name.$index}, $index);
};
$error = $@;
$ctxt->{_Failed}++ if $error;
@@ -173,8 +173,8 @@
}
}
# load
- elsif (defined &{"${package}::load_${name}"}) {
- $params->{$name.$index} = "${package}::load_${name}"->($ctxt, $default,
$params->{$name.$index}, $index);
+ elsif (my $sub = $package->can($onload || "load_${name}")) {
+ $params->{$name.$index} = $sub->($ctxt, $default, $params->{$name.$index},
+$index);
}
else{
$params->{$name.$index} = $default;
@@ -283,8 +283,8 @@
# TODO: What do we want buttons to do?
}
-sub checkbox ($;$$$$) {
- my ($name, $value, $checked, $label, $index) = @_;
+sub checkbox ($;$$$$$$) {
+ my ($name, $value, $checked, $label, $index, $onval, $onload) = @_;
my ($package) = caller;
$value = 1 unless $value;
@@ -298,9 +298,9 @@
# validate
if ($params->{'__submitting'}) {
- if (defined &{"${package}::validate_${name}"}) {
+ if (my $sub = $package->can($onval || "validate_${name}")) {
eval {
- "${package}::validate_${name}"->($ctxt, $params->{$name.$index},
$index);
+ $sub->($ctxt, $params->{$name.$index}, $index);
};
$error = $@;
$ctxt->{_Failed}++ if $error;
@@ -308,8 +308,8 @@
}
}
# load
- elsif (defined &{"${package}::load_${name}"}) {
- my @vals = "${package}::load_${name}"->($ctxt, $params->{$name.$index},
$index);
+ elsif (my $sub = $package->can($onload || "load_${name}")) {
+ my @vals = $sub->($ctxt, $value, $params->{$name.$index}, $index);
$checked = shift @vals;
$value = shift @vals if @vals;
}
@@ -336,8 +336,8 @@
};
}
-sub file_upload ($;$$) {
- my ($name, $value, $accept) = @_;
+sub file_upload ($;$$$$) {
+ my ($name, $value, $accept, $onval, $onload) = @_;
my ($package) = caller;
no strict 'refs';
@@ -350,7 +350,7 @@
# validate
if ($params->{'__submitting'}) {
- if (defined &{"${package}::validate_${name}"}) {
+ if (my $sub = $package->can($onval || "validate_${name}")) {
my $upload = Apache::Request->instance(Apache->request)->upload($name);
my $filename;
@@ -361,7 +361,7 @@
}
eval {
- "${package}::validate_${name}"->($ctxt,
+ $sub->($ctxt,
($upload ?
( $filename,
$upload->fh,
@@ -379,8 +379,8 @@
}
}
# load
- elsif (defined &{"${package}::load_${name}"}) {
- $params->{$name} = "${package}::load_${name}"->($ctxt, $value,
$params->{$name});
+ elsif (my $sub = $package->can($onload || "load_${name}")) {
+ $params->{$name} = $sub->($ctxt, $value, $params->{$name});
}
else {
$params->{$name} = $value;
@@ -396,8 +396,8 @@
};
}
-sub hidden ($;$$) {
- my ($name, $value, $index) = @_;
+sub hidden ($;$$$) {
+ my ($name, $value, $index, $onload) = @_;
my ($package) = caller;
no strict 'refs';
@@ -405,9 +405,10 @@
my $ctxt = ${"${package}::_form_ctxt"};
my $params = $ctxt->{Form};
- if (!defined($value) && defined &{"${package}::load_${name}"}) {
+ if (!defined($value) && $package->can($onload || "load_${name}")) {
# load value if not defined
- $value = "${package}::load_${name}"->($ctxt, $value, $index);
+ my $sub = $package->can($onload || "load_${name}");
+ $value = $sub->($ctxt, $value, $index);
}
if ($params->{'__submitting'} && ($value ne $params->{$name.$index})) {
die "Someone tried to change your hidden form value!";
@@ -422,8 +423,8 @@
};
}
-sub multi_select ($;$$$) {
- my ($name, $default, $index, $option) = @_;
+sub multi_select ($;$$$$$) {
+ my ($name, $default, $index, $onval, $onload, $option) = @_;
my ($package) = caller;
no strict 'refs';
@@ -437,9 +438,9 @@
# validate
if ($params->{'__submitting'}) {
- if (defined &{"${package}::validate_${name}"}) {
+ if (my $sub = $package->can($onval || "validate_${name}")) {
eval {
- "${package}::validate_${name}"->($ctxt, [$params->get($name.$index)],
$index);
+ $sub->($ctxt, [$params->get($name.$index)], $index);
};
$error = $@;
$ctxt->{_Failed}++ if $error;
@@ -447,8 +448,8 @@
}
}
# load
- elsif (defined &{"${package}::load_${name}"}) {
- ($selected, @options) = "${package}::load_${name}"->($ctxt,
[$params->get($name.$index)], $default, $index);
+ elsif (my $sub = $package->can($onload || "load_${name}")) {
+ ($selected, @options) = $sub->($ctxt, [$params->get($name.$index)], $default,
+$index);
}
elsif (!$params->{'__submitting'}) {
$selected = [@{$default}];
@@ -482,8 +483,8 @@
};
}
-sub password ($;$$$$) {
- my ($name, $default, $width, $maxlength, $index) = @_;
+sub password ($;$$$$$$) {
+ my ($name, $default, $width, $maxlength, $index, $onval, $onload) = @_;
my ($package) = caller;
no strict 'refs';
@@ -496,9 +497,9 @@
# validate
if ($params->{'__submitting'}) {
- if (defined &{"${package}::validate_${name}"}) {
+ if (my $sub = $package->can($onval || "validate_${name}")) {
eval {
- "${package}::validate_${name}"->($ctxt, $params->{$name,$index},
$index);
+ $sub->($ctxt, $params->{$name.$index}, $index);
};
$error = $@;
$ctxt->{_Failed}++ if $error;
@@ -506,8 +507,8 @@
}
}
# load
- elsif (defined &{"${package}::load_${name}"}) {
- $params->{$name.$index} = "${package}::load_${name}"->($ctxt, $default,
$params->{$name,$index}, $index);
+ elsif (my $sub = $package->can($onload || "load_${name}")) {
+ $params->{$name.$index} = $sub->($ctxt, $default, $params->{$name,$index},
+$index);
}
else {
$params->{$name.$index} = $default;
@@ -540,8 +541,8 @@
};
}
-sub single_select ($$$$) {
- my ($name, $default, $index, $option) = @_;
+sub single_select ($;$$$$$) {
+ my ($name, $default, $index, $onval, $onload, $option) = @_;
my ($package) = caller;
no strict 'refs';
@@ -555,9 +556,9 @@
# validate
if ($params->{'__submitting'}) {
- if (defined &{"${package}::validate_${name}"}) {
+ if (my $sub = $package->can($onval || "validate_${name}")) {
eval {
- "${package}::validate_${name}"->($ctxt, $params->{$name.$index},
$index);
+ $sub->($ctxt, $params->{$name.$index}, $index);
};
$error = $@;
$ctxt->{_Failed}++ if $error;
@@ -565,8 +566,8 @@
}
}
# load
- elsif (defined &{"${package}::load_${name}"}) {
- ($selected, @options) = "${package}::load_${name}"->($ctxt,
$params->{$name.$index}, $default, $index);
+ elsif (my $sub = $package->can($onload || "load_${name}")) {
+ ($selected, @options) = $sub->($ctxt, $params->{$name.$index}, $default,
+$index);
}
elsif (!$params->{'__submitting'}) {
$selected = $default;
@@ -598,8 +599,8 @@
};
}
-sub textarea ($;$$$$$) {
- my ($name, $cols, $rows, $wrap, $default, $index) = @_;
+sub textarea ($;$$$$$$$) {
+ my ($name, $cols, $rows, $wrap, $default, $index, $onval, $onload) = @_;
my ($package) = caller;
@@ -613,9 +614,9 @@
# validate
if ($params->{'__submitting'}) {
- if (defined &{"${package}::validate_${name}"}) {
+ if (my $sub = $package->can($onval || "validate_${name}")) {
eval {
- "${package}::validate_${name}"->($ctxt, $params->{$name.$index},
$index);
+ $sub->($ctxt, $params->{$name.$index}, $index);
};
$error = $@;
$ctxt->{_Failed}++ if $error;
@@ -623,8 +624,8 @@
}
}
# load
- elsif (defined &{"${package}::load_${name}"}) {
- $params->{$name.$index} = "${package}::load_${name}"->($ctxt, $default,
$params->{$name.$index}, $index);
+ elsif (my $sub = $package->can($onload || "load_${name}")) {
+ $params->{$name.$index} = $sub->($ctxt, $default, $params->{$name.$index},
+$index);
}
else {
$params->{$name.$index} = $default;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]