";
+ $choiceLabel. "";
if ($choice->[4]) {
$result .='
\n";
for ($i = 0; $i < 12; $i++) {
- if ($i == $date->mon) {
+ if (($i + 1) == $date->mon) {
$result .= "\n";
+ $result .= &mt($months[$i])."\n";
}
$result .= "\n";
@@ -1841,7 +1840,7 @@ sub render {
# Year
$result .= "\n";
}
+ $result .= ' '.$date->time_zone_short_name().' ';
if ($self->{'anytime'}) {
$result.=(<
@@ -1923,7 +1923,8 @@ sub postprocess {
if ($env{'form.' . $var . 'anytime'}) {
$helper->{VARS}->{$var} = undef;
} else {
- my $month = $env{'form.' . $var . 'month'};
+ my $month = $env{'form.' . $var . 'month'};
+ $month ++;
my $day = $env{'form.' . $var . 'day'};
my $year = $env{'form.' . $var . 'year'};
my $min = 0;
@@ -1933,25 +1934,40 @@ sub postprocess {
$hour = $env{'form.' . $var . 'hour'};
}
- my $chosenDate;
- eval {$chosenDate = Time::Local::timelocal(0, $min, $hour, $day, $month, $year);};
+ my ($chosenDate,$checkDate);
+ 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 = $@;
+ if (!$error) {
+ $chosenDate = $dt->epoch;
+ $checkDate = &get_date_object($chosenDate);
+ }
# 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) {
+ $checkDate->year != $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.";
+ $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.";
return 0;
}
@@ -1974,6 +1990,20 @@ sub postprocess {
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;
package Apache::lonhelper::resource;
@@ -2832,17 +2862,17 @@ BUTTONS
&Apache::loncacc::constructaccess($subdir,
$Apache::lonnet::perlvar{'lonDefDomain'});
$metadir='/res/'.$domain.'/'.$user.'/'.$2;
- @fileList = &Apache::lonnet::dirlist($subdir, $domain, $user, '');
+ @fileList = &Apache::lonnet::dirlist($subdir,$domain,$user,undef,undef,'/');
} elsif ($subdir =~ m|^~([^/]+)/(.*)$|) {
$subdir='/home/'.$1.'/public_html/'.$2;
my ($user,$domain)=
&Apache::loncacc::constructaccess($subdir,
$Apache::lonnet::perlvar{'lonDefDomain'});
$metadir='/res/'.$domain.'/'.$user.'/'.$2;
- @fileList = &Apache::lonnet::dirlist($subdir, $domain, $user, '');
+ @fileList = &Apache::lonnet::dirlist($subdir,$domain,$user,undef,undef,'/');
} else {
# 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
@@ -3618,10 +3648,16 @@ sub render {
$paramlevel = 'general';
} elsif ($vars->{GRANULARITY} eq 'map') {
my $navmap = Apache::lonnavmaps::navmap->new();
- my $res = $navmap->getByMapPc($vars->{RESOURCE_ID});
- my $title = $res->compTitle();
- $symb = $res->symb();
- $resourceString .= '
'.&mt('for the map named [_1]',"$title").'
';
+ if (defined($navmap)) {
+ my $res = $navmap->getByMapPc($vars->{RESOURCE_ID});
+ my $title = $res->compTitle();
+ $symb = $res->symb();
+ $resourceString .= '
'.&mt('for the map named [_1]',"$title").'
';
+ } else {
+ $resourceString .= '
'.&mt('for the map ID [_1] (name unavailable)',''.$vars->{RESOURCE_ID}.'').'
';
+ &Apache::lonnet::logthis('Retrieval of map title failed in lonhelper.pm - could not create navmap object for course.');
+
+ }
if ($vars->{TARGETS} eq 'course') {
$level = 13; # general course, see lonparmset.pm perldoc
} elsif ($vars->{TARGETS} eq 'section') {
@@ -3634,13 +3670,18 @@ sub render {
$affectedResourceId = $vars->{RESOURCE_ID};
$paramlevel = 'map';
} else {
- my $navmap = Apache::lonnavmaps::navmap->new();
- my $res = $navmap->getById($vars->{RESOURCE_ID});
my $part = $vars->{RESOURCE_ID_part};
if ($part ne 'All Parts' && $part) { $parm_name=~s/^0/$part/; } else { $part=&mt('All Parts'); }
- $symb = $res->symb();
- my $title = $res->compTitle();
- $resourceString .= '
'.&mt('for the resource named [_1] part [_2]',"$title","$part").'
';
+ my $navmap = Apache::lonnavmaps::navmap->new();
+ if (defined($navmap)) {
+ my $res = $navmap->getById($vars->{RESOURCE_ID});
+ $symb = $res->symb();
+ my $title = $res->compTitle();
+ $resourceString .= '
'.&mt('for the resource named [_1] part [_2]',"$title","$part").'
';
+ } else {
+ $resourceString .= '
'.&mt('for the resource ID [_1] (name unavailable) part [_2]',''.$vars->{RESOURCE_ID}.'',"$part").'
';
+ &Apache::lonnet::logthis('Retrieval of resource title failed in lonhelper.pm - could not create navmap object for course.');
+ }
if ($vars->{TARGETS} eq 'course') {
$level = 10; # general course, see lonparmset.pm perldoc
} elsif ($vars->{TARGETS} eq 'section') {
@@ -3744,7 +3785,8 @@ sub render {
# Print value
if ($vars->{ACTION_TYPE} ne 'tries' && $vars->{ACTION_TYPE} ne 'weight') {
- $result .= '