--- loncom/interface/lonmenu.pm 2015/04/16 10:13:25 1.432 +++ 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.432 2015/04/16 10:13:25 droeschl 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'}); @@ -771,6 +781,9 @@ sub innerregister { my $currdir = '/priv/'.$udom.'/'.$uname.'/'.$thisdisfn; if ($currdir =~ m-/$-) { $is_const_dir = 1; + if ($thisdisfn eq '') { + $is_const_dir = 2; + } } else { $currdir =~ s|[^/]+$||; my $cleandisfn = &Apache::loncommon::escape_single($thisdisfn); @@ -892,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); @@ -922,9 +942,18 @@ ENDMENUITEMS &advtools_crumbs(@inlineremote); } } - + my ($topic_help,$topic_help_text); + if ($is_const_dir == 2) { + 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'; + } + } return &Apache::lonhtmlcommon::scripttag('', 'start') - . &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0) + . &Apache::lonhtmlcommon::breadcrumbs(undef,undef,0,'','','','',$topic_help,$topic_help_text) . &Apache::lonhtmlcommon::scripttag('', 'end'); } @@ -1531,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])); @@ -2205,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 = '◄ '; @@ -2219,8 +2314,9 @@ sub countdown_timer { $title = $alttxt.' '; } my $desc = &mt('Countdown to due date/time'); - return < $collapse