--- loncom/interface/lonmenu.pm 2015/05/28 02:53:29 1.433 +++ loncom/interface/lonmenu.pm 2015/07/17 19:11:06 1.436 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.433 2015/05/28 02:53:29 raeburn Exp $ +# $Id: lonmenu.pm,v 1.436 2015/07/17 19:11:06 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -634,8 +634,18 @@ sub innerregister { && $maptitle ne $coursetitle); push @crumbs, {text => $restitle, no_mt => 1} if $restitle; + my @tools; + if ($env{'request.filename'} =~ /\.page$/) { + my %breadcrumb_tools = &Apache::lonhtmlcommon::current_breadcrumb_tools(); + if (ref($breadcrumb_tools{'tools'}) eq 'ARRAY') { + @tools = @{$breadcrumb_tools{'tools'}}; + } + } &Apache::lonhtmlcommon::clear_breadcrumbs(); &Apache::lonhtmlcommon::add_breadcrumb(@crumbs); + if (@tools) { + &Apache::lonhtmlcommon::add_breadcrumb_tool('tools',@tools); + } } else { $resurl = $env{'request.noversionuri'}; my $courseurl = &Apache::lonnet::courseid_to_courseurl($env{'request.course.id'}); @@ -895,13 +905,20 @@ ENDMENUITEMS my $addremote=0; foreach (@inlineremote) { if ($_ ne '') { $addremote=1; last;} } if ($addremote) { - + my $countdown; + if ($env{'request.filename'} =~ /\.page$/) { + my %breadcrumb_tools = &Apache::lonhtmlcommon::current_breadcrumb_tools(); + if (ref($breadcrumb_tools{'tools'}) eq 'ARRAY') { + $countdown = $breadcrumb_tools{'tools'}[0]; + } + } else { + $countdown = &countdown_timer(); + } &Apache::lonhtmlcommon::clear_breadcrumb_tools(); &Apache::lonhtmlcommon::add_breadcrumb_tool( 'navigation', @inlineremote[21,23]); - my $countdown = &countdown_timer(); if (&hidden_button_check() eq 'yes') { if ($countdown) { &Apache::lonhtmlcommon::add_breadcrumb_tool('tools',$countdown); @@ -927,7 +944,9 @@ ENDMENUITEMS } my ($topic_help,$topic_help_text); if ($is_const_dir == 2) { - if (&Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'},'webdav')) { + if ((($ENV{'SERVER_PORT'} == 443) || + ($Apache::lonnet::protocol{$Apache::lonnet::perlvar{'lonHostID'}} eq 'https')) && + (&Apache::lonnet::usertools_access($env{'user.name'},$env{'user.domain'},'webdav'))) { $topic_help = 'Authoring_WebDAV,Authoring_WebDAV_Mac_10v6,Authoring_WebDAV_Mac_10v10,'. 'Authoring_WebDAV_Windows_v7,Authoring_WebDAV_Linux_Centos'; $topic_help_text = 'About WebDAV access'; @@ -1541,6 +1560,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])); @@ -2215,11 +2297,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 = '◄ '; @@ -2229,8 +2314,9 @@ sub countdown_timer { $title = $alttxt.' '; } my $desc = &mt('Countdown to due date/time'); - return < $collapse