version 1.116, 2005/10/01 02:28:55
|
version 1.124, 2005/10/17 19:46:12
|
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,$onclick); |
|
|
|
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; } |
|
} |
|
if ($anytime) { |
|
$onclick = "onclick=\"javascript:updateCheck(this.form,'${var}anytime',false)\""; |
|
} |
# 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 1565 sub render {
|
Line 1579 sub render {
|
|
|
# Month |
# Month |
my $i; |
my $i; |
$result .= "<select name='${var}month'>\n"; |
$result .= "<select $onclick name='${var}month'>\n"; |
for ($i = 0; $i < 12; $i++) { |
for ($i = 0; $i < 12; $i++) { |
if ($i == $date->mon) { |
if ($i == $date->mon) { |
$result .= "<option value='$i' selected='selected'>"; |
$result .= "<option value='$i' selected='selected'>"; |
Line 1577 sub render {
|
Line 1591 sub render {
|
$result .= "</select>\n"; |
$result .= "</select>\n"; |
|
|
# Day |
# Day |
$result .= "<select name='${var}day'>\n"; |
$result .= "<select $onclick name='${var}day'>\n"; |
for ($i = 1; $i < 32; $i++) { |
for ($i = 1; $i < 32; $i++) { |
if ($i == $date->mday) { |
if ($i == $date->mday) { |
$result .= '<option selected="selected">'; |
$result .= '<option selected="selected">'; |
Line 1589 sub render {
|
Line 1603 sub render {
|
$result .= "</select>,\n"; |
$result .= "</select>,\n"; |
|
|
# Year |
# Year |
$result .= "<select name='${var}year'>\n"; |
$result .= "<select $onclick name='${var}year'>\n"; |
for ($i = 2000; $i < 2030; $i++) { # update this after 64-bit dates |
for ($i = 2000; $i < 2030; $i++) { # update this after 64-bit dates |
if ($date->year + 1900 == $i) { |
if ($date->year + 1900 == $i) { |
$result .= "<option selected='selected'>"; |
$result .= "<option selected='selected'>"; |
Line 1606 sub render {
|
Line 1620 sub render {
|
my $am = &mt('a.m.'); |
my $am = &mt('a.m.'); |
my $pm = &mt('p.m.'); |
my $pm = &mt('p.m.'); |
# Build hour |
# Build hour |
$result .= "<select name='${var}hour'>\n"; |
$result .= "<select $onclick name='${var}hour'>\n"; |
$result .= "<option " . ($date->hour == 0 ? 'selected="selected" ':'') . |
$result .= "<option " . ($date->hour == 0 ? 'selected="selected" ':'') . |
" value='0'>" . &mt('midnight') . "</option>\n"; |
" value='0'>" . &mt('midnight') . "</option>\n"; |
for ($i = 1; $i < 12; $i++) { |
for ($i = 1; $i < 12; $i++) { |
Line 1629 sub render {
|
Line 1643 sub render {
|
|
|
$result .= "</select> :\n"; |
$result .= "</select> :\n"; |
|
|
$result .= "<select name='${var}minute'>\n"; |
$result .= "<select $onclick name='${var}minute'>\n"; |
for ($i = 0; $i < 60; $i++) { |
my $selected=0; |
|
for my $i ((0,15,30,45,59,undef,0..59)) { |
my $printedMinute = $i; |
my $printedMinute = $i; |
if ($i < 10) { |
if (defined($i) && $i < 10) { |
$printedMinute = "0" . $printedMinute; |
$printedMinute = "0" . $printedMinute; |
} |
} |
if ($date->min == $i) { |
if (!$selected && $date->min == $i) { |
$result .= "<option selected='selected'>"; |
$result .= "<option selected='selected'>"; |
|
$selected=1; |
} else { |
} else { |
$result .= "<option>"; |
$result .= "<option>"; |
} |
} |
Line 1644 sub render {
|
Line 1660 sub render {
|
} |
} |
$result .= "</select>\n"; |
$result .= "</select>\n"; |
} |
} |
|
if ($self->{'anytime'}) { |
|
$result.=(<<CHECK); |
|
<script type="text/javascript"> |
|
// <!-- |
|
function updateCheck(form,name,value) { |
|
var checkbox=form[name]; |
|
checkbox.checked = value; |
|
} |
|
// --> |
|
</script> |
|
CHECK |
|
$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 1684 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}); |
} |
} |
Line 1982 BUTTONS
|
Line 2017 BUTTONS
|
$mapUrl = $self->{MAP_URL}; |
$mapUrl = $self->{MAP_URL}; |
} |
} |
|
|
|
my @defaultSymbs; |
|
if (defined($self->{DEFAULT_VALUE})) { |
|
my $valueFunc = eval($self->{DEFAULT_VALUE}); |
|
die 'Error in default value code for variable ' . |
|
$self->{'variable'} . ', Perl said: ' . $@ if $@; |
|
@defaultSymbs = &$valueFunc($helper, $self); |
|
if (!$multichoice) { # only allowed 1 |
|
@defaultSymbs = ($defaultSymbs[0]); |
|
} |
|
} |
|
|
|
|
# Create the composite function that renders the column on the nav map |
# Create the composite function that renders the column on the nav map |
# have to admit any language that lets me do this can't be all bad |
# have to admit any language that lets me do this can't be all bad |
Line 2030 BUTTONS
|
Line 2076 BUTTONS
|
} |
} |
|
|
$col .= "<td align='center'><input type='$inputType' name='${var}.forminput' "; |
$col .= "<td align='center'><input type='$inputType' name='${var}.forminput' "; |
if (!$checked && !$multichoice) { |
if (@defaultSymbs) { |
$col .= "checked='checked' "; |
my $symb=$resource->symb(); |
$checked = 1; |
if (grep(/\Q$symb\E/,@defaultSymbs)) { |
} |
$col .= "checked='checked' "; |
if ($multichoice) { # all resources start checked; see bug 1174 |
$checked = 1; |
$col .= "checked='checked' "; |
} |
$checked = 1; |
} else { |
|
if (!$checked && !$multichoice) { |
|
$col .= "checked='checked' "; |
|
$checked = 1; |
|
} |
|
if ($multichoice) { # all resources start checked; see bug 1174 |
|
$col .= "checked='checked' "; |
|
$checked = 1; |
|
} |
} |
} |
$col .= "value='" . $resource_name . "' /></td>"; |
$col .= "value='" . $resource_name . "' /></td>"; |
|
|
Line 2154 selection. Defaults to false.
|
Line 2208 selection. Defaults to false.
|
If true, only active students and course personnel will be |
If true, only active students and course personnel will be |
shown. Defaults to false. |
shown. Defaults to false. |
|
|
|
=item * B<emptyallowed>: |
|
|
|
If true, the selection of no users is allowed. Defaults to false. |
|
|
=back |
=back |
|
|
=cut |
=cut |
Line 2189 sub start_student {
|
Line 2247 sub start_student {
|
if (defined($token->[2]{'nextstate'})) { |
if (defined($token->[2]{'nextstate'})) { |
$paramHash->{NEXTSTATE} = $token->[2]{'nextstate'}; |
$paramHash->{NEXTSTATE} = $token->[2]{'nextstate'}; |
} |
} |
|
$paramHash->{'emptyallowed'} = $token->[2]{'emptyallowed'}; |
|
|
} |
} |
|
|
Line 2450 sub postprocess {
|
Line 2509 sub postprocess {
|
my $self = shift; |
my $self = shift; |
|
|
my $result = $env{'form.' . $self->{'variable'} . '.forminput'}; |
my $result = $env{'form.' . $self->{'variable'} . '.forminput'}; |
if (!$result) { |
if (!$result && !$self->{'emptyallowed'}) { |
$self->{ERROR_MSG} = |
if ($self->{'coursepersonnel'}) { |
&mt('You must choose at least one student to continue.'); |
$self->{ERROR_MSG} = |
|
&mt('You must choose at least one user to continue.'); |
|
} else { |
|
$self->{ERROR_MSG} = |
|
&mt('You must choose at least one student to continue.'); |
|
} |
return 0; |
return 0; |
} |
} |
|
|