";
+ $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";
@@ -1830,7 +1840,7 @@ sub render {
# Year
$result .= "\n";
}
+ $result .= ' '.$date->time_zone_short_name().' ';
if ($self->{'anytime'}) {
$result.=(<
@@ -1912,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;
@@ -1922,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;
}
@@ -1963,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;
@@ -1989,7 +2030,8 @@ folders that have all of their contained
be filtered out. The 'addstatus' attribute, if true, will add the icon
and long status display columns to the display. The 'addparts'
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
@@ -2062,6 +2104,7 @@ sub start_resource {
$helper->declareVar($paramHash->{'variable'}.'_part');
}
$paramHash->{'closeallpages'} = $token->[2]{'closeallpages'};
+ $paramHash->{'include_top_level_map'} = $token->[2]{'includecourse'};
return '';
}
@@ -2387,6 +2430,7 @@ RADIO
'resource_no_folder_link' => 1,
'closeAllPages' => $self->{'closeallpages'},
'suppressEmptySequences' => $self->{'suppressEmptySequences'},
+ 'include_top_level_map' => $self->{'include_top_level_map'},
'iterator_map' => $mapUrl }
);
@@ -2818,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
@@ -3604,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') {
@@ -3620,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') {
@@ -3730,7 +3785,8 @@ sub render {
# Print value
if ($vars->{ACTION_TYPE} ne 'tries' && $vars->{ACTION_TYPE} ne 'weight') {
- $result .= '