cvsuser     02/08/30 10:56:07

  Modified:    P5EEx/Blue/P5EEx/Blue/Widget/HTML DateDropDowns.pm
  Log:
  overrode get_value() in this class to always return a date in canonical form
  
  Revision  Changes    Path
  1.6       +36 -9     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.5
  retrieving revision 1.6
  diff -u -w -r1.5 -r1.6
  --- DateDropDowns.pm  12 Jul 2002 21:10:08 -0000      1.5
  +++ DateDropDowns.pm  30 Aug 2002 17:56:07 -0000      1.6
  @@ -1,10 +1,10 @@
   
   ######################################################################
  -## $Id: DateDropDowns.pm,v 1.5 2002/07/12 21:10:08 spadkins Exp $
  +## $Id: DateDropDowns.pm,v 1.6 2002/08/30 17:56:07 spadkins Exp $
   ######################################################################
   
   package P5EEx::Blue::Widget::HTML::DateDropDowns;
  -$VERSION = do { my @r=(q$Revision: 1.5 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
  +$VERSION = do { my @r=(q$Revision: 1.6 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r};
   
   use P5EEx::Blue::Widget::HTML::StylizableContainer;
   @ISA = ( "P5EEx::Blue::Widget::HTML::StylizableContainer" );
  @@ -24,25 +24,32 @@
   # CONSTANTS
   ######################################################################
   
  -@P5EEx::Blue::Widget::HTML::DateDropDowns::dayvalues = (
  +my @dayvalues = (
       "01", "02", "03", "04", "05", "06", "07", "08", "09", "10",
       "11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
       "21", "22", "23", "24", "25", "26", "27", "28", "29", "30",
       "31",
   );
   
  -@P5EEx::Blue::Widget::HTML::DateDropDowns::monthvalues = (
  +my @monthvalues = (
       "01", "02", "03", "04", "05", "06", "07", "08", "09", "10",
       "11", "12",
   );
   
  -%P5EEx::Blue::Widget::HTML::DateDropDowns::monthlabels = (
  +my %monthlabels = (
       "01" => "Jan", "02" => "Feb", "03" => "Mar",
       "04" => "Apr", "05" => "May", "06" => "Jun",
       "07" => "Jul", "08" => "Aug", "09" => "Sep",
       "10" => "Oct", "11" => "Nov", "12" => "Dec",
   );
   
  +my %monthnumbers = (
  +    "Jan" => "01", "Feb" => "02", "Mar" => "03",
  +    "Apr" => "04", "May" => "05", "Jun" => "06",
  +    "Jul" => "07", "Aug" => "08", "Sep" => "09",
  +    "Oct" => "10", "Nov" => "11", "Dec" => "12",
  +);
  +
   ######################################################################
   # ATTRIBUTES
   ######################################################################
  @@ -69,13 +76,13 @@
       #       otherwise, I should include "container => $name," line
       $context->widget("${name}.day",  # note: container is inferred
           widgetClass => "P5EEx::Blue::Widget::HTML::Select",
  -        values => \@P5EEx::Blue::Widget::HTML::DateDropDowns::dayvalues,
  +        values => \@dayvalues,
       );
   
       $context->widget("${name}.month",
           widgetClass => "P5EEx::Blue::Widget::HTML::Select",
  -        values => \@P5EEx::Blue::Widget::HTML::DateDropDowns::monthvalues,
  -        labels => \%P5EEx::Blue::Widget::HTML::DateDropDowns::monthlabels,
  +        values => \@monthvalues,
  +        labels => \%monthlabels,
       );
   
       my ($begin_year, $end_year);
  @@ -118,7 +125,8 @@
       my $self = shift;
       my ($date, $day, $month, $year);
       $date  = $self->get_value();
  -    if (defined $date && $date =~ /^([0-9]{4})-([0-9]{2})-([0-9]{2})$/) {
  +    return if (!$date);
  +    if ($date =~ /^([0-9]{4})-([0-9]{2})-([0-9]{2})$/) {
           $year  = $1;
           $month = $2;
           $day   = $3;
  @@ -126,6 +134,25 @@
           $self->set("month", $month);
           $self->set("day", $day);
       }
  +}
  +
  +sub get_value {
  +    my $self = shift;
  +    my ($date, $day, $month, $year);
  +    $date  = $self->SUPER::get_value();
  +    return ($date) if (!$date);
  +    return ($date) if ($date =~ /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/);
  +    if ($date =~ /([0-9]{4}-[0-9]{2}-[0-9]{2})/) {
  +        $date = $1;
  +    }
  +    elsif ($date =~ /([0-9]{4})([0-9]{2})([0-9]{2})/) {
  +        $date = "$1-$2-$3";
  +    }
  +    elsif ($date =~ /([0-9]{2})-(...)-([0-9]{4})/) {
  +        $date = "$3-$monthnumbers{$2}-$1";
  +    }
  +    $self->set_value($date);
  +    return ($date);
   }
   
   sub join_date {
  
  
  


Reply via email to