cvsuser 03/02/03 09:09:45
Modified: P5EEx/Blue/P5EEx/Blue/Widget/HTML DateDropDowns.pm
Log:
add silent validation on the date to ensure no illegal dates can be entered
Revision Changes Path
1.7 +18 -2 p5ee/P5EEx/Blue/P5EEx/Blue/Widget/HTML/DateDropDowns.pm
Index: DateDropDowns.pm
===================================================================
RCS file: /cvs/public/p5ee/P5EEx/Blue/P5EEx/Blue/Widget/HTML/DateDropDowns.pm,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -w -r1.6 -r1.7
--- DateDropDowns.pm 30 Aug 2002 17:56:07 -0000 1.6
+++ DateDropDowns.pm 3 Feb 2003 17:09:45 -0000 1.7
@@ -1,10 +1,10 @@
######################################################################
-## $Id: DateDropDowns.pm,v 1.6 2002/08/30 17:56:07 spadkins Exp $
+## $Id: DateDropDowns.pm,v 1.7 2003/02/03 17:09:45 spadkins Exp $
######################################################################
package P5EEx::Blue::Widget::HTML::DateDropDowns;
-$VERSION = do { my @r=(q$Revision: 1.6 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
+$VERSION = do { my @r=(q$Revision: 1.7 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
use P5EEx::Blue::Widget::HTML::StylizableContainer;
@ISA = ( "P5EEx::Blue::Widget::HTML::StylizableContainer" );
@@ -50,6 +50,8 @@
"Oct" => "10", "Nov" => "11", "Dec" => "12",
);
+my @days = ( "00", "31", "28", "31", "30", "31", "30", "31", "31", "30", "31",
"30", "31" );
+
######################################################################
# ATTRIBUTES
######################################################################
@@ -161,6 +163,20 @@
$year = $self->get("year");
$month = $self->get("month");
$day = $self->get("day");
+
+ if ($day le $days[$month]) {
+ # success. day is valid. do nothing.
+ }
+ elsif ($month eq "02") {
+ my $isleap = ( (($year % 4) == 0) && ( (($year % 100) != 0) || (($year %
400) == 0) ) );
+ $day = $isleap ? "29" : "28";
+ $self->set("day",$day);
+ }
+ else {
+ $day = $days[$month];
+ $self->set("day",$day);
+ }
+
$date = "${year}-${month}-$day";
$self->set_value($date);
}