--- loncom/interface/lonmenu.pm 2015/05/28 03:14:25 1.434 +++ loncom/interface/lonmenu.pm 2015/06/17 03:57:15 1.435 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.434 2015/05/28 03:14:25 raeburn Exp $ +# $Id: lonmenu.pm,v 1.435 2015/06/17 03:57:15 musolffc Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1543,6 +1543,69 @@ function toggleCountdown() { END } +# This creates a "done button" for timed events. The confirmation box is a jQuery +# dialog widget. Clicking OK will set (LC_interval_done = 'true') which is checked in +# lonhomework.pm. +sub done_button_js { + my ($type,$height) = @_; + if ($height !~ /^\d+$/) { + $height = 320; + } + my %lt = &Apache::lonlocal::texthash( + title => '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).', + ok => 'Click "OK" if you are completely finished.', + cancel => 'Click "Cancel" to continue working.', + ); + my $confirm; + if (($type eq 'map') || ($type eq 'resource')) { + $confirm = $lt{'preamble'}.' '.$lt{$type}.' '.$lt{'ok'}.' '.$lt{'cancel'}; + } + if ($confirm) { + return < + + + + +
+

$confirm

+
+ + + +END + } else { + return; + } +} + sub utilityfunctions { my ($httphost) = @_; my $currenturl=&Apache::lonnet::clutter(&Apache::lonnet::fixversion((split(/\?/,$env{'request.noversionuri'}))[0])); @@ -2217,11 +2280,14 @@ sub countdown_timer { if (($duedate && $duedate > time) || (!$duedate && $hastimeleft) || ($slot_name ne '' && $slothastime)) { - my ($collapse,$expand,$alttxt,$title,$currdisp); + my ($collapse,$expand,$alttxt,$title,$currdisp,$donebutton); if ((@interval > 1 && $hastimeleft) || ($type eq 'Task' && $slothastime)) { $currdisp = 'inline'; $collapse = '► '; + if ((@interval > 1) && ($hastimeleft)) { + $donebutton = &done_button_js($interval[1]); + } } else { $currdisp = 'none'; $expand = '◄ '; @@ -2231,8 +2297,9 @@ sub countdown_timer { $title = $alttxt.' '; } my $desc = &mt('Countdown to due date/time'); - return < $collapse