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);
   }
  
  
  


Reply via email to