--- loncom/interface/lonmenu.pm 2016/05/04 05:54:51 1.447
+++ loncom/interface/lonmenu.pm 2016/08/15 15:52:16 1.452
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to control the menu
#
-# $Id: lonmenu.pm,v 1.447 2016/05/04 05:54:51 raeburn Exp $
+# $Id: lonmenu.pm,v 1.452 2016/08/15 15:52:16 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -812,7 +812,11 @@ sub innerregister {
if ($currdir =~ m-/$-) {
$is_const_dir = 1;
if ($thisdisfn eq '') {
- $is_const_dir = 2;
+ unless (($env{'request.course.id'}) &&
+ ($env{'course.'.$env{'request.course.id'}.'.num'} eq $uname) &&
+ ($env{'course.'.$env{'request.course.id'}.'.domain'} eq $udom)) {
+ $is_const_dir = 2;
+ }
}
} else {
$currdir =~ s|[^/]+$||;
@@ -873,12 +877,15 @@ ENDMENUITEMS
$got_prt = 1;
if (($env{'user.adv'}) && ($env{'request.uri'} =~ /^\/res/)
&& (!$env{'request.enc'})) {
- # wishlist is only available for users with access to resource-pool
- # and links can only be set for resources within the resource-pool
- $menuitems .= (< 'WARNING!',
- button => 'Done',
preamble => 'You are trying to end this timed event early.',
map => 'Confirming that you are done will cause the time to expire and prevent you from changing any answers in the current folder.',
resource => 'Confirming that you are done will cause the time to expire for this question, and prevent you from changing your answer(s).',
@@ -1651,10 +1657,8 @@ sub done_button_js {
nokey => 'A proctor key is required',
);
my $navmap = Apache::lonnavmaps::navmap->new();
- my ($missing,$tried);
+ my ($missing,$tried) = (0,0);
if (ref($navmap)) {
- $missing=0;
- $tried=0;
my @resources=();
if ($type eq 'map') {
my ($mapurl,$rid,$resurl)=&Apache::lonnet::decode_symb($env{'request.symb'});
@@ -1668,13 +1672,7 @@ sub done_button_js {
}
}
foreach my $res (@resources) {
- if ($res->singlepart()) {
- if (!$res->tries()) {
- $missing++;
- } else {
- $tried++;
- }
- } else {
+ if (ref($res->parts()) eq 'ARRAY') {
foreach my $part (@{$res->parts()}) {
if (!$res->tries($part)) {
$missing++;
@@ -1698,6 +1696,7 @@ sub done_button_js {
$lt{'miss'} .= ' '.&mt('If you confirm you are done you will be unable to submit an answer for it.').'
';
}
}
+ $donebuttontext = &HTML::Entities::encode($donebuttontext,'<>&"');
if ($proctor) {
if ($height !~ /^\d+$/) {
$height = 400;
@@ -1715,14 +1714,14 @@ sub done_button_js {
$lt{'preamble'} $lt{$type}
$lt{'miss'}
$lt{'proctor'}
-
@@ -1796,7 +1795,7 @@ END
@@ -2501,9 +2500,17 @@ sub countdown_timer {
}
my $duedate = &Apache::lonnet::EXT("resource.0.duedate");
my @interval=&Apache::lonnet::EXT("resource.0.interval");
- my ($timelimit,$usesdone,$proctor,$secret);
+ my ($timelimit,$usesdone,$donebuttontext,$proctor,$secret);
if (@interval > 1) {
- ($timelimit,$usesdone,$proctor,$secret) = split(/_/,$interval[0]);
+ ($timelimit,my $donesuffix) = split(/_/,$interval[0],2);
+ if ($donesuffix =~ /^done\:([^\:]+)\:(.*)$/) {
+ $usesdone = 'done';
+ $donebuttontext = $1;
+ (undef,$proctor,$secret) = split(/_/,$2);
+ } elsif ($donesuffix =~ /^done(|_.+)$/) {
+ $donebuttontext = &mt('Done');
+ ($usesdone,$proctor,$secret) = split(/_/,$donesuffix);
+ }
my $first_access=&Apache::lonnet::get_first_access($interval[1]);
if ($first_access > 0) {
if ($first_access+$timelimit > time) {
@@ -2521,7 +2528,7 @@ sub countdown_timer {
$collapse = '► ';
if ((@interval > 1) && ($hastimeleft)) {
if ($usesdone eq 'done') {
- $donebutton = &done_button_js($interval[1],'','',$proctor);
+ $donebutton = &done_button_js($interval[1],'','',$proctor,$donebuttontext);
}
}
} else {