version 1.117, 2005/10/11 15:44:30
|
version 1.118, 2005/10/11 20:57:54
|
Line 1536 sub start_date {
|
Line 1536 sub start_date {
|
$paramHash->{'variable'} = $token->[2]{'variable'}; |
$paramHash->{'variable'} = $token->[2]{'variable'}; |
$helper->declareVar($paramHash->{'variable'}); |
$helper->declareVar($paramHash->{'variable'}); |
$paramHash->{'hoursminutes'} = $token->[2]{'hoursminutes'}; |
$paramHash->{'hoursminutes'} = $token->[2]{'hoursminutes'}; |
|
$paramHash->{'anytime'} = $token->[2]{'anytime'}; |
} |
} |
|
|
sub end_date { |
sub end_date { |
Line 1554 sub render {
|
Line 1555 sub render {
|
my $var = $self->{'variable'}; |
my $var = $self->{'variable'}; |
|
|
my $date; |
my $date; |
|
|
|
my $time=time; |
|
my $anytime; |
|
|
|
if (defined($self->{DEFAULT_VALUE})) { |
|
my $valueFunc = eval($self->{DEFAULT_VALUE}); |
|
die('Error in default value code for variable ' . |
|
$self->{'variable'} . ', Perl said: ' . $@) if $@; |
|
$time = &$valueFunc($helper, $self); |
|
if (lc($time) eq 'anytime') { $time=time; $anytime=1; } |
|
} |
# Default date: The current hour. |
# Default date: The current hour. |
$date = localtime(); |
$date = localtime($time); |
$date->min(0); |
$date->min(0); |
|
|
if (defined $self->{ERROR_MSG}) { |
if (defined $self->{ERROR_MSG}) { |
Line 1644 sub render {
|
Line 1655 sub render {
|
} |
} |
$result .= "</select>\n"; |
$result .= "</select>\n"; |
} |
} |
|
if ($self->{'anytime'}) { |
|
$result.=" or <label><input type='checkbox' "; |
|
if ($anytime) { |
|
$result.=' checked="checked" ' |
|
} |
|
$result.="name='${var}anytime'/>".&mt('Anytime').'</label>' |
|
} |
return $result; |
return $result; |
|
|
} |
} |
Line 1652 sub render {
|
Line 1669 sub render {
|
sub postprocess { |
sub postprocess { |
my $self = shift; |
my $self = shift; |
my $var = $self->{'variable'}; |
my $var = $self->{'variable'}; |
my $month = $env{'form.' . $var . 'month'}; |
if ($env{'form.' . $var . 'anytime'}) { |
my $day = $env{'form.' . $var . 'day'}; |
$helper->{VARS}->{$var} = undef; |
my $year = $env{'form.' . $var . 'year'}; |
} else { |
my $min = 0; |
my $month = $env{'form.' . $var . 'month'}; |
my $hour = 0; |
my $day = $env{'form.' . $var . 'day'}; |
if ($self->{'hoursminutes'}) { |
my $year = $env{'form.' . $var . 'year'}; |
$min = $env{'form.' . $var . 'minute'}; |
my $min = 0; |
$hour = $env{'form.' . $var . 'hour'}; |
my $hour = 0; |
} |
if ($self->{'hoursminutes'}) { |
|
$min = $env{'form.' . $var . 'minute'}; |
|
$hour = $env{'form.' . $var . 'hour'}; |
|
} |
|
|
|
my $chosenDate; |
|
eval {$chosenDate = Time::Local::timelocal(0, $min, $hour, $day, $month, $year);}; |
|
my $error = $@; |
|
|
|
# Check to make sure that the date was not automatically co-erced into a |
|
# valid date, as we want to flag that as an error |
|
# This happens for "Feb. 31", for instance, which is coerced to March 2 or |
|
# 3, depending on if it's a leap year |
|
my $checkDate = localtime($chosenDate); |
|
|
|
if ($error || $checkDate->mon != $month || $checkDate->mday != $day || |
|
$checkDate->year + 1900 != $year) { |
|
unless (Apache::lonlocal::current_language()== ~/^en/) { |
|
$self->{ERROR_MSG} = &mt("Invalid date entry"); |
|
return 0; |
|
} |
|
# LOCALIZATION FIXME: Needs to be parameterized |
|
$self->{ERROR_MSG} = "Can't use " . $months[$month] . " $day, $year as a " |
|
. "date because it doesn't exist. Please enter a valid date."; |
|
|
my $chosenDate; |
|
eval {$chosenDate = Time::Local::timelocal(0, $min, $hour, $day, $month, $year);}; |
|
my $error = $@; |
|
|
|
# Check to make sure that the date was not automatically co-erced into a |
|
# valid date, as we want to flag that as an error |
|
# This happens for "Feb. 31", for instance, which is coerced to March 2 or |
|
# 3, depending on if it's a leap year |
|
my $checkDate = localtime($chosenDate); |
|
|
|
if ($error || $checkDate->mon != $month || $checkDate->mday != $day || |
|
$checkDate->year + 1900 != $year) { |
|
unless (Apache::lonlocal::current_language()== ~/^en/) { |
|
$self->{ERROR_MSG} = &mt("Invalid date entry"); |
|
return 0; |
return 0; |
} |
} |
# LOCALIZATION FIXME: Needs to be parameterized |
$helper->{VARS}->{$var} = $chosenDate; |
$self->{ERROR_MSG} = "Can't use " . $months[$month] . " $day, $year as a " |
|
. "date because it doesn't exist. Please enter a valid date."; |
|
|
|
return 0; |
|
} |
} |
|
|
$helper->{VARS}->{$var} = $chosenDate; |
|
|
|
if (defined($self->{NEXTSTATE})) { |
if (defined($self->{NEXTSTATE})) { |
$helper->changeState($self->{NEXTSTATE}); |
$helper->changeState($self->{NEXTSTATE}); |
} |
} |