Mailing List Archive

svn commit: r1377443 - in /perl/embperl/trunk/Embperl: Form.pm Form/Validate.pm Form/Validate/EMail.pm Form/Validate/PosInteger.pm
Author: richter
Date: Sun Aug 26 14:00:23 2012
New Revision: 1377443

URL: http://svn.apache.org/viewvc?rev=1377443&view=rev
Log:
Docs & Enhancements for Embperl::Form::Validate

Modified:
perl/embperl/trunk/Embperl/Form.pm
perl/embperl/trunk/Embperl/Form/Validate.pm
perl/embperl/trunk/Embperl/Form/Validate/EMail.pm
perl/embperl/trunk/Embperl/Form/Validate/PosInteger.pm

Modified: perl/embperl/trunk/Embperl/Form.pm
URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form.pm?rev=1377443&r1=1377442&r2=1377443&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form.pm (original)
+++ perl/embperl/trunk/Embperl/Form.pm Sun Aug 26 14:00:23 2012
@@ -103,7 +103,7 @@ sub sub_new

if ($toplevel)
{
- my $epf = $self -> {validate} = Embperl::Form::Validate -> new ($validate_rules, $self -> {formname}) if ($self -> {validate_rules}) ;
+ my $epf = $self -> {validate} = Embperl::Form::Validate -> new ($validate_rules, $self -> {formname}, $options -> {language}, $options -> {charset}) if ($self -> {validate_rules}) ;
$self -> add_code_at_bottom ($epf -> get_script_code) ;
}

@@ -607,7 +607,18 @@ sub prepare_fdat
sub validate

{
+ my ($self, $fdat, $pref, $epreq) = @_ ;
+
+ my $validate = $self -> {validate} ;
+ my $result = $validate -> validate ($fdat, $pref, $epreq) ;
+ my @msgs ;
+ foreach my $err (@$result)
+ {
+ my $msg = $validate -> error_message ($err, $pref, $epreq) ;
+ push @msgs, $msg ;
+ }

+ return ($result, \@msgs) ;
}


@@ -1099,6 +1110,14 @@ will deafult all C<textarea> controls to
it will set the default class for the labels of all controls to
myclass and not to wrap the text.

+=item * language
+
+Language setting is used for Embperl::Form::Validate, e.g. 'en' or 'de'
+
+=item * charset
+
+Charset setting is used for Embperl::Form::Validate, e.g. 'utf-8'
+
=item * valign

valign for control cells. Defaults to 'top' .
@@ -1139,6 +1158,8 @@ overwrite the method get_datasrc_package

=head2 layout

+=head2 validate
+
=head2 show

=head2 convert_label

Modified: perl/embperl/trunk/Embperl/Form/Validate.pm
URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Validate.pm?rev=1377443&r1=1377442&r2=1377443&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Validate.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Validate.pm Sun Aug 26 14:00:23 2012
@@ -20,6 +20,8 @@ package Embperl::Form::Validate;
use strict;
use vars qw($VERSION);

+use Encode ;
+
$VERSION = '2.0.0' ;

=head1 NAME
@@ -396,7 +398,17 @@ sub build_message
$txt ||= "Missing Message $id: %0 %1 %2 %3" ;
$id = $param -> [0] ;
$param -> [0] = $name ;
- $txt =~ s/%(\d+)/$param->[$1]/g ;
+ my @param ;
+ if ($charset)
+ {
+ @param = map { Encode::encode($charset, $_) } @$param ;
+ }
+ else
+ {
+ @param = @$param ;
+ }
+
+ $txt =~ s/%(\d+)/$param[$1]/g ;
$param -> [0] = $id ;

return $txt ;
@@ -578,7 +590,7 @@ sub gather_script_code
if ($msgparam && !$break)
{
my $txt = $self -> build_message ($msgparam -> [0], $key, $nametxt, $msgtxt, $msgparam, $typeobj, $pref, $epreq) ;
- $setmsg = "msgs[i++]='$txt';"
+ $setmsg = "ids[i] = '$key' ; msgs[i++]='$txt';"
}
if (!ref $key)
{
@@ -652,9 +664,10 @@ sub get_script_code

return qq{

-function epform_validate_$fname()
+function epform_validate_$fname(return_msgs, failed_class)
{
var msgs = new Array ;
+ var ids = new Array ;
var fail = 0 ;
var i = 0 ;
var obj ;
@@ -663,6 +676,29 @@ function epform_validate_$fname()
$script ;
}
while (0) ;
+ var firstelem ;
+ if (failed_class)
+ {
+ var key ;
+ for (key in ids)
+ {
+ var elem = document.$fname\[ids[key]\] ;
+ if (elem)
+ {
+ var eclass = elem.getAttribute('class') ;
+ elem.setAttribute ('class', eclass + ' ' + failed_class) ;
+ elem.setAttribute ('title', msgs[key]) ;
+ if (!firstelem)
+ firstelem = elem ;
+ }
+ }
+ }
+ if (firstelem)
+ firstelem.focus() ;
+
+ if (return_msgs)
+ return msgs ;
+
if (i)
alert (msgs.join('\\n')) ;

@@ -747,6 +783,10 @@ Input must be a floating point number.

Input must be a integer number.

+=item PosInteger
+
+Input must be a integer number and greater or equal zero.
+
=item TimeHHMM

Input must be the time in the format hh::mm
@@ -755,6 +795,10 @@ Input must be the time in the format hh:

Input must be the time in the format hh::mm:ss

+=item TimeValue
+
+Input must be a number followed by s, m, h, d or w.
+
=item EMail

Input must be a valid email address including a top level domain
@@ -777,6 +821,11 @@ Input must be an ip-address and network

Input must be an ip-address or an fqdn (host.domain)

+=item select
+
+This used together with required and causes Embperl::Form::Validate
+to test of a selected index != 0 instead of a non empty input.
+
=back



Modified: perl/embperl/trunk/Embperl/Form/Validate/EMail.pm
URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Validate/EMail.pm?rev=1377443&r1=1377442&r2=1377443&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Validate/EMail.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Validate/EMail.pm Sun Aug 26 14:00:23 2012
@@ -79,7 +79,7 @@ sub getscript_validate
{
my ($self, $arg, $pref) = @_ ;

- return ('((obj.value.search(/^[^ <>()@¡-ÿ]+@[^ <>()@¡-ÿ]+\.[a-zA-Z]{2,4}$/) >= 0) && (obj.value.search(/@(\.|.*(\.\.|@))|mailto:/i) < 0))',
+ return ('((obj.value.search(/^[^ <>()@\x80-\xff]+@[^ <>()@\x80-\xff]+\.[a-zA-Z]{2,4}$/) >= 0) && (obj.value.search(/@(\.|.*(\.\.|@))|mailto:/i) < 0))',
['validate_email', "'+obj.value+'"]) ;
}


Modified: perl/embperl/trunk/Embperl/Form/Validate/PosInteger.pm
URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Validate/PosInteger.pm?rev=1377443&r1=1377442&r2=1377443&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Validate/PosInteger.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Validate/PosInteger.pm Sun Aug 26 14:00:23 2012
@@ -19,6 +19,37 @@ package Embperl::Form::Validate::PosInte

use base qw(Embperl::Form::Validate::Integer);

+my %error_messages =
+(
+ de =>
+ {
+ validate_pos_number => '%0 muß eine Zahl größer oder gleich Null sein',
+ },
+
+ 'de.utf-8' =>
+ {
+ validate_pos_number => '%0 muß eine Zahl größer oder gleich Null sein',
+ },
+
+ en =>
+ {
+ validate_pos_number => '%0 must be a number greater or equal zero',
+ }
+ );
+
+# --------------------------------------------------------------
+
+sub getmsg
+ {
+ my ($self, $id, $language, $default_language) = @_ ;
+
+ return $error_messages{$language}{$id} ||
+ $error_messages{$default_language}{$id} ||
+ $self -> SUPER::getmsg ($id, $language, $default_language) ;
+ }
+
+
+# --------------------------------------------------------------

# --------------------------------------------------------------

@@ -26,7 +57,7 @@ sub validate
{
my ($self, $key, $value, $fdat, $pref) = @_ ;

- return $value =~ /^\s*[0-9+][0-9]*\s*$/ ? undef : ['validate_number', $value] ;
+ return $value =~ /^\s*[0-9+][0-9]*\s*$/ ? undef : ['validate_pos_number', $value] ;
}

# --------------------------------------------------------------
@@ -35,7 +66,7 @@ sub getscript_validate
{
my ($self, $arg, $pref) = @_ ;

- return ('obj.value.search(/^\s*[0-9+][0-9]*\s*$/) >= 0', ['validate_number', "'+obj.value+'"]) ;
+ return ('obj.value.search(/^\s*[0-9+][0-9]*\s*$/) >= 0', ['validate_pos_number', "'+obj.value+'"]) ;
}





---------------------------------------------------------------------
To unsubscribe, e-mail: embperl-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-cvs-help@perl.apache.org