--- loncom/interface/lonnavdisplay.pm 2006/10/10 20:16:26 1.1 +++ loncom/interface/lonnavdisplay.pm 2010/12/05 21:59:28 1.13.6.4 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavdisplay.pm,v 1.1 2006/10/10 20:16:26 albertel Exp $ +# $Id: lonnavdisplay.pm,v 1.13.6.4 2010/12/05 21:59:28 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -37,6 +37,7 @@ use Apache::lonnavmaps(); use Apache::lonhtmlcommon(); use Apache::lonnet; use Apache::lonlocal; +use Time::HiRes qw( gettimeofday tv_interval ); sub handler { my $r = shift; @@ -70,7 +71,7 @@ sub real_handler { "Select Action"); if ($ENV{QUERY_STRING} eq 'collapseExternal') { &Apache::lonnet::put('environment',{'remotenavmap' => 'off'}); - &Apache::lonnet::appenv('environment.remotenavmap' => 'off'); + &Apache::lonnet::appenv({'environment.remotenavmap' => 'off'}); my $menu=&Apache::lonmenu::reopenmenu(); my $navstatus=&Apache::lonmenu::get_nav_status(); if ($menu) { @@ -109,7 +110,7 @@ ENDSUBM } if ($ENV{QUERY_STRING} =~ /^launchExternal/) { &Apache::lonnet::put('environment',{'remotenavmap' => 'on'}); - &Apache::lonnet::appenv('environment.remotenavmap' => 'on'); + &Apache::lonnet::appenv({'environment.remotenavmap' => 'on'}); my $menu=&Apache::lonmenu::reopenmenu(); my $navstatus=&Apache::lonmenu::get_nav_status(); if ($menu) { @@ -132,12 +133,13 @@ MENU if (!defined($navmap)) { my $requrl = $r->uri; $env{'user.error.msg'} = "$requrl:bre:0:0:Course not initialized"; + $env{'user.reinit'} = 1; return HTTP_NOT_ACCEPTABLE; } $r->send_http_header; # ------------------------------------------------------------ Get query string - &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['register','sort','showOnlyHomework','postsymb']); + &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['sort','showOnlyHomework','postsymb','register']); # ----------------------------------------------------- Force menu registration my $body_only=''; @@ -153,13 +155,35 @@ MENU # Header my $course_type = &Apache::loncommon::course_type(); - $r->print(&Apache::loncommon::start_page('Navigate '.$course_type. - ' Contents', - $js, - {'only_body' => $body_only, - 'force_register' => - $env{'form.register'},})); - $r->print(''); + my ($title,$breadcrumb_text,$start_page,$args); + $title = 'Contents'; + $breadcrumb_text = &mt('Contents'); + if ($env{'form.register'}) { + $args = {'force_register' => $env{'form.register'}}; + my $brcrum = [{href => '/adm/navmaps', + text => $breadcrumb_text, + no_mt => 1,}, + ]; + $args = {'bread_crumbs' => $brcrum, + 'only_body' => $body_only}; + $start_page = &Apache::loncommon::start_page($title,$js,$args); + } else { + my $nomenu = 0; + if ((&Apache::loncommon::needs_gci_custom()) || + ($env{'user.domain'} =~ /^\w+citest$/ && $env{'request.course.id'})) { + $nomenu = 1; + } + my $brcrum = [{href => '/adm/navmaps', + text => $breadcrumb_text, + no_mt => 1, + _nomenu => $nomenu,}, + ]; + $args = {'bread_crumbs' => $brcrum, + 'only_body' => $body_only}; + $start_page = &Apache::loncommon::start_page($title,$js,$args); + } + $r->print($start_page. + ''); $r->rflush(); @@ -224,19 +248,19 @@ MENU my $curRes; my $foundDoableProblem = 0; my $minimumduedate; - + my $now = time(); + while ($curRes = $iterator->next()) { if (ref($curRes) && $curRes->is_problem()) { my $status = $curRes->status(); - if ($curRes->completable()) { - my $thisduedate=$curRes->duedate(); - unless ($foundDoableProblem) { - $minimumduedate=$thisduedate; - } + my $thisduedate=$curRes->duedate(); + if ($thisduedate > $now + && $curRes->completable()) { $foundDoableProblem = 1; - if ($thisduedate<=$minimumduedate) { + if (!defined($minimumduedate) + || $thisduedate<$minimumduedate) { # Pop open all previous maps my $stack = $iterator->getStack(); pop @$stack; # last resource in the stack is the problem @@ -254,11 +278,17 @@ MENU # If we found no problems, print a note to that effect. if (!$foundDoableProblem) { - $r->print("All homework assignments have been completed.

"); + $r->print("" + .&mt("All homework assignments have been completed.") + .""); } } else { + my $link = 'navmaps?jumpToFirstHomework'; + if ($env{'form.register'}) { + $link .= '&register='.$env{'form.register'}; + } &Apache::lonnavmaps::add_linkitem(\%toplinkitems,'firsthomework', - 'location.href="navmaps?jumpToFirstHomework"', + 'location.href="'.$link.'"', "Show my first due problem"); } @@ -274,33 +304,41 @@ MENU $filterFunc = sub { my $res = shift; return $res->completable() || $res->is_map(); }; + my $link = 'navmaps?sort='.$env{'form.sort'}; + if ($env{'form.register'}) { + $link .= '&register='.$env{'form.register'}; + } &Apache::lonnavmaps::add_linkitem(\%toplinkitems,'everything', - 'location.href="navmaps?sort='.$env{'form.sort'}.'"', + 'location.href="'.$link.'"', "Show everything"); - $r->print("

".&mt("Uncompleted Problems")."

"); + $r->print("".&mt("Uncompleted Problems").""); $env{'form.filter'} = ''; $env{'form.condition'} = 1; $resource_no_folder_link = 1; } else { + my $link = 'navmaps?sort='.$env{'form.sort'}.'&showOnlyHomework=1'; + if ($env{'form.register'}) { + $link .= '&register='.$env{'form.register'}; + } &Apache::lonnavmaps::add_linkitem(\%toplinkitems,'uncompleted', - 'location.href="navmaps?sort='.$env{'form.sort'}. - '&showOnlyHomework=1"', + 'location.href="'.$link.'"', "Show only uncompleted problems"); } - my %selected=($env{'form.sort'} => 'selected=on'); - my $sort_html=("
- - - - + '.&mt('Sort by:').' + - -
"); + + + '); # renderer call my $renderArgs = { 'cols' => [0,1,2,3], 'sort' => $env{'form.sort'}, @@ -320,9 +358,9 @@ MENU # user knows there was no error. if ($renderArgs->{'counter'} == 0) { if ($showOnlyHomework) { - $r->print("

".&mt("All homework is currently completed").".

"); + $r->print("

".&mt("All homework is currently completed.")."

"); } else { # both jumpToFirstHomework and normal use the same: course must be empty - $r->print("

This course is empty.

"); + $r->print("

".&mt("This course is empty.")."

"); } } #my $td=&tv_interval($t0);