version 1.161.2.1, 2007/10/02 00:33:02
|
version 1.166, 2008/09/17 15:53:34
|
Line 1008 sub start_message {
|
Line 1008 sub start_message {
|
if (defined($token->[2]{'nextstate'})) { |
if (defined($token->[2]{'nextstate'})) { |
$paramHash->{NEXTSTATE} = $token->[2]{'nextstate'}; |
$paramHash->{NEXTSTATE} = $token->[2]{'nextstate'}; |
} |
} |
|
if (defined($token->[2]{'type'})) { |
|
$paramHash->{TYPE} = $token->[2]{'type'}; |
|
} |
return ''; |
return ''; |
} |
} |
|
|
Line 1023 sub end_message {
|
Line 1026 sub end_message {
|
|
|
sub render { |
sub render { |
my $self = shift; |
my $self = shift; |
|
|
|
if ($self->{TYPE} =~ /^\s*warning\s*$/i) { |
|
$self->{MESSAGE_TEXT} = |
|
'<span class="LC_warning">'. $self->{MESSAGE_TEXT}.'</span>'; |
|
} |
|
if ($self->{TYPE} =~ /^\s*error\s*$/i) { |
|
$self->{MESSAGE_TEXT} = |
|
'<span class="LC_error">'. $self->{MESSAGE_TEXT}.'</span>'; |
|
} |
return $self->{MESSAGE_TEXT}; |
return $self->{MESSAGE_TEXT}; |
} |
} |
# If a NEXTSTATE was given, switch to it |
# If a NEXTSTATE was given, switch to it |
Line 1714 no strict;
|
Line 1725 no strict;
|
use strict; |
use strict; |
use Apache::lonlocal; # A localization nightmare |
use Apache::lonlocal; # A localization nightmare |
use Apache::lonnet; |
use Apache::lonnet; |
use Time::localtime; |
use DateTime; |
|
|
BEGIN { |
BEGIN { |
&Apache::lonhelper::register('Apache::lonhelper::date', |
&Apache::lonhelper::register('Apache::lonhelper::date', |
Line 1764 sub render {
|
Line 1775 sub render {
|
my $time=time; |
my $time=time; |
my ($anytime,$onclick); |
my ($anytime,$onclick); |
|
|
|
|
# first check VARS for a valid new value from the user |
# first check VARS for a valid new value from the user |
# then check DEFAULT_VALUE for a valid default time value |
# then check DEFAULT_VALUE for a valid default time value |
# otherwise pick now as reasonably good time |
# otherwise pick now as reasonably good time |
|
|
if (defined($helper->{VARS}{$var}) |
if (defined($helper->{VARS}{$var}) |
&& $helper->{VARS}{$var} > 0) { |
&& $helper->{VARS}{$var} > 0) { |
$date = localtime($helper->{VARS}{$var}); |
$date = &get_date_object($helper->{VARS}{$var}); |
} elsif (defined($self->{DEFAULT_VALUE})) { |
} elsif (defined($self->{DEFAULT_VALUE})) { |
my $valueFunc = eval($self->{DEFAULT_VALUE}); |
my $valueFunc = eval($self->{DEFAULT_VALUE}); |
die('Error in default value code for variable ' . |
die('Error in default value code for variable ' . |
Line 1779 sub render {
|
Line 1789 sub render {
|
$time = &$valueFunc($helper, $self); |
$time = &$valueFunc($helper, $self); |
if (lc($time) eq 'anytime') { |
if (lc($time) eq 'anytime') { |
$anytime=1; |
$anytime=1; |
$date = localtime(time); |
$date = &get_date_object(time); |
$date->min(0); |
$date->min(0); |
} elsif (defined($time) && $time ne 0) { |
} elsif (defined($time) && $time ne 0) { |
$date = localtime($time); |
$date = &get_date_object($time); |
} else { |
} else { |
# leave date undefined so it'll default to now |
# leave date undefined so it'll default to now |
} |
} |
} |
} |
|
|
if (!defined($date)) { |
if (!defined($date)) { |
$date = localtime(time); |
$date = &get_date_object(time); |
$date->min(0); |
$date->min(0); |
} |
} |
|
|
Line 1806 sub render {
|
Line 1816 sub render {
|
my $i; |
my $i; |
$result .= "<select $onclick 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 + 1) == $date->mon) { |
$result .= "<option value='$i' selected='selected'>"; |
$result .= "<option value='$i' selected='selected'>"; |
} else { |
} else { |
$result .= "<option value='$i'>"; |
$result .= "<option value='$i'>"; |
} |
} |
$result .= &mt($months[$i]) . "</option>\n"; |
$result .= &mt($months[$i])."</option>\n"; |
} |
} |
$result .= "</select>\n"; |
$result .= "</select>\n"; |
|
|
Line 1830 sub render {
|
Line 1840 sub render {
|
# Year |
# Year |
$result .= "<select $onclick 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 == $i) { |
$result .= "<option selected='selected'>"; |
$result .= "<option selected='selected'>"; |
} else { |
} else { |
$result .= "<option>"; |
$result .= "<option>"; |
Line 1885 sub render {
|
Line 1895 sub render {
|
} |
} |
$result .= "</select>\n"; |
$result .= "</select>\n"; |
} |
} |
|
$result .= ' '.$date->time_zone_short_name().' '; |
if ($self->{'anytime'}) { |
if ($self->{'anytime'}) { |
$result.=(<<CHECK); |
$result.=(<<CHECK); |
<script type="text/javascript"> |
<script type="text/javascript"> |
Line 1912 sub postprocess {
|
Line 1923 sub postprocess {
|
if ($env{'form.' . $var . 'anytime'}) { |
if ($env{'form.' . $var . 'anytime'}) { |
$helper->{VARS}->{$var} = undef; |
$helper->{VARS}->{$var} = undef; |
} else { |
} else { |
my $month = $env{'form.' . $var . 'month'}; |
my $month = $env{'form.' . $var . 'month'}; |
|
$month ++; |
my $day = $env{'form.' . $var . 'day'}; |
my $day = $env{'form.' . $var . 'day'}; |
my $year = $env{'form.' . $var . 'year'}; |
my $year = $env{'form.' . $var . 'year'}; |
my $min = 0; |
my $min = 0; |
Line 1922 sub postprocess {
|
Line 1934 sub postprocess {
|
$hour = $env{'form.' . $var . 'hour'}; |
$hour = $env{'form.' . $var . 'hour'}; |
} |
} |
|
|
my $chosenDate; |
my ($chosenDate,$checkDate); |
eval {$chosenDate = Time::Local::timelocal(0, $min, $hour, $day, $month, $year);}; |
my $timezone = &Apache::lonlocal::gettimezone(); |
|
my $dt; |
|
eval { |
|
$dt = DateTime->new( year => $year, |
|
month => $month, |
|
day => $day, |
|
hour => $hour, |
|
minute => $min, |
|
second => 0, |
|
time_zone => $timezone, |
|
); |
|
}; |
|
|
my $error = $@; |
my $error = $@; |
|
if (!$error) { |
|
$chosenDate = $dt->epoch; |
|
$checkDate = &get_date_object($chosenDate); |
|
} |
|
|
# Check to make sure that the date was not automatically co-erced into a |
# 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 |
# 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 |
# This happens for "Feb. 31", for instance, which is coerced to March 2 or |
# 3, depending on if it's a leap year |
# 3, depending on if it's a leap year |
my $checkDate = localtime($chosenDate); |
|
|
|
if ($error || $checkDate->mon != $month || $checkDate->mday != $day || |
if ($error || $checkDate->mon != $month || $checkDate->mday != $day || |
$checkDate->year + 1900 != $year) { |
$checkDate->year != $year) { |
unless (Apache::lonlocal::current_language()== ~/^en/) { |
unless (Apache::lonlocal::current_language()== ~/^en/) { |
$self->{ERROR_MSG} = &mt("Invalid date entry"); |
$self->{ERROR_MSG} = &mt("Invalid date entry"); |
return 0; |
return 0; |
} |
} |
# LOCALIZATION FIXME: Needs to be parameterized |
# LOCALIZATION FIXME: Needs to be parameterized |
$self->{ERROR_MSG} = "Can't use " . $months[$month] . " $day, $year as a " |
$self->{ERROR_MSG} = "Can't use ".$months[$env{'form.'.$var.'month'}]. " $day, $year as a ". |
. "date because it doesn't exist. Please enter a valid date."; |
"date because it doesn't exist. Please enter a valid date."; |
|
|
return 0; |
return 0; |
} |
} |
Line 1963 sub postprocess {
|
Line 1990 sub postprocess {
|
|
|
return 1; |
return 1; |
} |
} |
|
|
|
sub get_date_object { |
|
my ($epoch) = @_; |
|
my $dt = DateTime->from_epoch(epoch => $epoch) |
|
->set_time_zone(&Apache::lonlocal::gettimezone()); |
|
my $lang = Apache::lonlocal::current_language(); |
|
if ($lang ne '') { |
|
eval { |
|
$dt->set_locale($lang); |
|
}; |
|
} |
|
return $dt; |
|
} |
|
|
1; |
1; |
|
|
package Apache::lonhelper::resource; |
package Apache::lonhelper::resource; |
Line 1989 folders that have all of their contained
|
Line 2030 folders that have all of their contained
|
be filtered out. The 'addstatus' attribute, if true, will add the icon |
be filtered out. The 'addstatus' attribute, if true, will add the icon |
and long status display columns to the display. The 'addparts' |
and long status display columns to the display. The 'addparts' |
attribute will add in a part selector beside problems that have more |
attribute will add in a part selector beside problems that have more |
than 1 part. |
than 1 part. The 'includecourse' attribute if true, will include |
|
the toplevel default.sequence in the results. |
|
|
=head3 SUB-TAGS |
=head3 SUB-TAGS |
|
|
Line 2062 sub start_resource {
|
Line 2104 sub start_resource {
|
$helper->declareVar($paramHash->{'variable'}.'_part'); |
$helper->declareVar($paramHash->{'variable'}.'_part'); |
} |
} |
$paramHash->{'closeallpages'} = $token->[2]{'closeallpages'}; |
$paramHash->{'closeallpages'} = $token->[2]{'closeallpages'}; |
|
$paramHash->{'include_top_level_map'} = $token->[2]{'includecourse'}; |
return ''; |
return ''; |
} |
} |
|
|
Line 2387 RADIO
|
Line 2430 RADIO
|
'resource_no_folder_link' => 1, |
'resource_no_folder_link' => 1, |
'closeAllPages' => $self->{'closeallpages'}, |
'closeAllPages' => $self->{'closeallpages'}, |
'suppressEmptySequences' => $self->{'suppressEmptySequences'}, |
'suppressEmptySequences' => $self->{'suppressEmptySequences'}, |
|
'include_top_level_map' => $self->{'include_top_level_map'}, |
'iterator_map' => $mapUrl } |
'iterator_map' => $mapUrl } |
); |
); |
|
|
Line 2818 BUTTONS
|
Line 2862 BUTTONS
|
&Apache::loncacc::constructaccess($subdir, |
&Apache::loncacc::constructaccess($subdir, |
$Apache::lonnet::perlvar{'lonDefDomain'}); |
$Apache::lonnet::perlvar{'lonDefDomain'}); |
$metadir='/res/'.$domain.'/'.$user.'/'.$2; |
$metadir='/res/'.$domain.'/'.$user.'/'.$2; |
@fileList = &Apache::lonnet::dirlist($subdir, $domain, $user, ''); |
@fileList = &Apache::lonnet::dirlist($subdir,$domain,$user,undef,undef,'/'); |
} elsif ($subdir =~ m|^~([^/]+)/(.*)$|) { |
} elsif ($subdir =~ m|^~([^/]+)/(.*)$|) { |
$subdir='/home/'.$1.'/public_html/'.$2; |
$subdir='/home/'.$1.'/public_html/'.$2; |
my ($user,$domain)= |
my ($user,$domain)= |
&Apache::loncacc::constructaccess($subdir, |
&Apache::loncacc::constructaccess($subdir, |
$Apache::lonnet::perlvar{'lonDefDomain'}); |
$Apache::lonnet::perlvar{'lonDefDomain'}); |
$metadir='/res/'.$domain.'/'.$user.'/'.$2; |
$metadir='/res/'.$domain.'/'.$user.'/'.$2; |
@fileList = &Apache::lonnet::dirlist($subdir, $domain, $user, ''); |
@fileList = &Apache::lonnet::dirlist($subdir,$domain,$user,undef,undef,'/'); |
} else { |
} else { |
# local library server resource space |
# local library server resource space |
@fileList = &Apache::lonnet::dirlist($subdir, $env{'user.domain'}, $env{'user.name'}, ''); |
@fileList = &Apache::lonnet::dirlist($subdir,$env{'user.domain'},$env{'user.name'},undef,undef,'/'); |
} |
} |
|
|
# Sort the fileList into order |
# Sort the fileList into order |
Line 3730 sub render {
|
Line 3774 sub render {
|
|
|
# Print value |
# Print value |
if ($vars->{ACTION_TYPE} ne 'tries' && $vars->{ACTION_TYPE} ne 'weight') { |
if ($vars->{ACTION_TYPE} ne 'tries' && $vars->{ACTION_TYPE} ne 'weight') { |
$result .= '<li>'.&mt('to [_1] ([_2])',"<b>".ctime($vars->{PARM_DATE})."</b>",Apache::lonnavmaps::timeToHumanString($vars->{PARM_DATE}))."</li>\n"; |
my $showdate = &Apache::lonlocal::locallocaltime($vars->{PARM_DATE}); |
|
$result .= '<li>'.&mt('to [_1] ([_2])',"<b>".$showdate."</b>",Apache::lonnavmaps::timeToHumanString($vars->{PARM_DATE}))."</li>\n"; |
} |
} |
|
|
# print pres_marker |
# print pres_marker |