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 {