[prev in list] [next in list] [prev in thread] [next in thread]
List: lon-capa-cvs
Subject: [LON-CAPA-cvs] cvs: rat / lonpage.pm
From: raeburn <raeburn () source ! lon-capa ! org>
Date: 2016-05-30 3:02:38
Message-ID: cvsraeburn1464577358 () cvsserver
[Download RAW message or body]
This is a MIME encoded message
raeburn Mon May 30 03:02:38 2016 EDT
Modified files:
/rat lonpage.pm
Log:
- Bug 6763. "Done" button.
- "Done" button supported in composite page (if all items with time left
in the page have the same amount remaining).
["raeburn-20160530030238.txt" (text/plain)]
Index: rat/lonpage.pm
diff -u rat/lonpage.pm:1.113 rat/lonpage.pm:1.114
--- rat/lonpage.pm:1.113 Tue Sep 29 06:27:49 2015
+++ rat/lonpage.pm Mon May 30 03:02:37 2016
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Page Handler
#
-# $Id: lonpage.pm,v 1.113 2015/09/29 06:27:49 musolffc Exp $
+# $Id: lonpage.pm,v 1.114 2016/05/30 03:02:37 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -192,8 +192,11 @@
# ------------------------------------------------------------- Countdown Timer
my $now = time;
my ($pagefirstaccess,%hastimeleft,%countdowndisp,%donebutton,
- $donetime,$symbtosetdone);
+ %donebtnextra,%buttonbytime,$donetime,$symbtosetdone);
my \
($pagesymb,$courseid,$domain,$name)=&Apache::lonnet::whichuser(); + \
unless ($pagesymb) { + \
$pagesymb=&Apache::lonnet::symbread($requrl); + }
if ($pagesymb && ($courseid ne '') && ($domain ne '') && ($name ne \
'')) { my %times=&Apache::lonnet::get('firstaccesstimes',
[$courseid."\0".$pagesymb],
@@ -233,9 +236,12 @@
if ($src =~ /$LONCAPA::assess_re/) {
my \
@interval=&Apache::lonnet::EXT("resource.0.interval",$symb); if (@interval > 1) {
- if ($interval[1] eq 'map') {
- if ($pagefirstaccess + $interval[0] > \
$now) {
- $symbtosetdone = $symb;
+ if (($interval[1] eq 'map') && \
($pagefirstaccess)) { + my ($timelimit) = \
($interval[0] =~ /^(\d+)/); + if \
($timelimit) { + if ($pagefirstaccess \
+ $timelimit > $now) { + \
$symbtosetdone = $symb; + }
}
}
}
@@ -473,11 +479,12 @@
$type = 'Task';
}
my ($status,$accessmsg,$slot_name,$slot) =
- \
&Apache::lonhomework::check_slot_access('0',$type,$symb); + \
&Apache::lonhomework::check_slot_access('0',$type,$symb,$pagesymb);
undef(%Apache::lonhomework::history);
my $probstatus = \
&Apache::lonnet::EXT("resource.0.problemstatus",$symb);
if (($status eq 'CAN_ANSWER') || (($status \
eq 'CANNOT_ANSWER') &&
- (($probstatus eq 'no') || ($probstatus \
eq 'no_feedback_ever')))) { + \
(($probstatus eq 'no') || ($probstatus eq 'no_feedback_ever'))) || + \
(($status eq 'NOT_YET_VIEWED') && ($posthash{'markaccess'} eq \
'yes'))) {
my ($slothastime,$timerhastime);
if ($slot_name ne '') {
if (ref($slot) eq 'HASH') {
@@ -490,9 +497,31 @@
my $duedate = \
&Apache::lonnet::EXT("resource.0.duedate",$symb);
my \
@interval=&Apache::lonnet::EXT("resource.0.interval",$symb); if (@interval > 1) {
- my \
$first_access=&Apache::lonnet::get_first_access($interval[1],$symb); + \
my $first_access;
if ($first_access > 0) {
- my $timeremains = \
$first_access+$interval[0] - $now; + \
if ($interval[1] eq 'map') { + \
my $ignorecache; + if \
($env{'form.'.$prefix.'markaccess'} eq 'yes') { + \
$ignorecache = 1; + }
+ \
$first_access=&Apache::lonnet::get_first_access($interval[1],undef,$pagesymb,$ignorecache);
+ if (($first_access) && \
(!$pagefirstaccess)) { + \
$pagefirstaccess = $first_access; + \
} + } else {
+ \
$first_access=&Apache::lonnet::get_first_access($interval[1],$symb); + \
} + if ($first_access > 0) {
+ my ($timelimit) = \
($interval[0] =~ /^(\d+)/); + \
if ($timelimit) { + my \
$timeremains = $timelimit + $first_access - $now; + \
if ($timeremains > 0) { + \
$timerhastime = $timeremains; + \
} + }
+ }
+ my ($timelimit) = \
($interval[0] =~ /^(\d+)/); + my \
$timeremains = $first_access+$timelimit - $now;
if ($timeremains > 0) {
$timerhastime = \
$timeremains; }
@@ -507,7 +536,26 @@
if ((@interval > 1) && \
($timerhastime)) {
$hastimeleft{$symb} = \
$timerhastime;
if ($pagefirstaccess) {
- $donebutton{$symb} = \
$interval[1]; + my \
($timelimit,$usesdone,$donebuttontext,$proctor,$secret); + \
($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); + \
} + if ($usesdone eq \
'done') { + \
$donebutton{$symb} = $timelimit; + \
push(@{$buttonbytime{$timelimit}},$symb); + \
$donebtnextra{$symb} = { + \
text => $donebuttontext, + \
proctor => $proctor, + \
secret => $secret, + \
type => $interval[1], + \
}; + }
}
} else {
$hastimeleft{$symb} = \
$slothastime; @@ -517,7 +565,7 @@
$countdowndisp{$symb} = \
'none'; }
unless ($donebutton{$symb}) {
- $donebutton{$symb} = 0;
+ $donebutton{$symb} = 0;
}
}
}
@@ -598,8 +646,9 @@
$uniquetimes{$item} = 1;
}
}
- if (keys(%uniquetimes) == 1) {
- my \
(%uniquedisplays,%uniquedones,$currdisp,$donebuttontime); + \
if (scalar(keys(%uniquetimes)) == 1) { + my \
(%uniquedisplays,%uniquedones,$currdisp,$donebuttontime, + \
$donebuttonextras); if (keys(%countdowndisp)) {
foreach my $item (values(%countdowndisp)) {
if (exists($uniquedisplays{$item})) {
@@ -625,10 +674,13 @@
if (scalar(@donebuttons) == 1) {
if ($donebuttons[0]) {
$donebuttontime = $donebuttons[0];
+ if \
(ref($buttonbytime{$donebuttontime}) eq 'ARRAY') { + \
$donebuttonextras = $donebtnextra{$buttonbytime{$donebuttontime}->[0]}; + \
} }
}
}
- &add_countdown_timer($currdisp,$donebuttontime);
+ \
&add_countdown_timer($currdisp,$donebuttontime,$donebuttonextras); }
}
# ------------------------------------------------------------------ Start body
@@ -902,7 +954,7 @@
}
sub add_countdown_timer {
- my ($currdisp,$donebuttontime) = @_;
+ my ($currdisp,$donebuttontime,$donebuttonextras) = @_;
my ($collapse,$expand,$alttxt,$title,$donebutton);
if ($currdisp eq 'inline') {
$collapse = '► ';
@@ -910,7 +962,16 @@
$expand = '◄ ';
}
if ($donebuttontime) {
- $donebutton = &Apache::lonmenu::done_button_js($donebuttontime);
+ my ($type,$proctor,$donebuttontext);
+ if (ref($donebuttonextras) eq 'HASH') {
+ $proctor = $donebuttonextras->{'proctor'};
+ $donebuttontext = $donebuttonextras->{'text'};
+ $type = $donebuttonextras->{'type'};
+ } else {
+ $donebuttontext = &mt('Done');
+ }
+ $donebutton =
+ &Apache::lonmenu::done_button_js($type,'','',$proctor,$donebuttontext);
}
unless ($env{'environment.icons'} eq 'iconsonly') {
$alttxt = &mt('Timer');
_______________________________________________
LON-CAPA-cvs mailing list
LON-CAPA-cvs@mail.lon-capa.org
http://mail.lon-capa.org/mailman/listinfo/lon-capa-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic