--- loncom/interface/lonnavmaps.pm 2006/03/23 22:32:10 1.374 +++ loncom/interface/lonnavmaps.pm 2006/04/10 21:55:48 1.377 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.374 2006/03/23 22:32:10 albertel Exp $ +# $Id: lonnavmaps.pm,v 1.377 2006/04/10 21:55:48 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -207,7 +207,8 @@ ENDSUBM {'only_body' => 1, 'bgcolor' => '#FFFFFF', 'add_entries' => - 'onLoad="submitthis()"',}). + {'onload' => + "submitthis()"}}). &Apache::loncommon::end_page()); return OK; @@ -245,8 +246,6 @@ MENU &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['register','sort','showOnlyHomework','postsymb']); # ----------------------------------------------------- Force menu registration - my $addentries=''; - my $more_unload; my $body_only=''; my $js; if ($env{'environment.remotenavmap'} eq 'on') { @@ -255,24 +254,13 @@ MENU this.document.location="/adm/navmaps?collapseExternal"; } '; -# FIXME need to be smarter to only catch window close events -# $more_unload="collapse()" $body_only=1; } - if ($env{'form.register'}) { - $addentries=' onLoad="'.&Apache::lonmenu::loadevents(). - '" onUnload="'.&Apache::lonmenu::unloadevents().';'. - $more_unload.'"'; - $r->print(&Apache::lonmenu::registerurl(1)); - } else { - $addentries=' onUnload="'.$more_unload.'"'; - } # Header $r->print(&Apache::loncommon::start_page('Navigate Course Contents',$js, - {'add_entries' => $addentries, - 'only_body' => $body_only, - 'force_resgister' => + {'only_body' => $body_only, + 'force_register' => $env{'form.register'},})); $r->print(''); @@ -330,32 +318,38 @@ MENU "Close navigation window"); } - my $jumpToFirstHomework = 0; + # Check to see if the student is jumping to next open, do-able problem if ($ENV{QUERY_STRING} =~ /^jumpToFirstHomework/) { - $jumpToFirstHomework = 1; # Find the next homework problem that they can do. my $iterator = $navmap->getIterator(undef, undef, undef, 1); my $curRes; my $foundDoableProblem = 0; - my $problemRes; + my $minimumduedate; - while (($curRes = $iterator->next()) && !$foundDoableProblem) { + while ($curRes = $iterator->next()) { if (ref($curRes) && $curRes->is_problem()) { my $status = $curRes->status(); if ($curRes->completable()) { - $problemRes = $curRes; + my $thisduedate=$curRes->duedate(); + unless ($foundDoableProblem) { + $minimumduedate=$thisduedate; + } + $foundDoableProblem = 1; - # Pop open all previous maps - my $stack = $iterator->getStack(); - pop @$stack; # last resource in the stack is the problem - # itself, which we don't need in the map stack - my @mapPcs = map {$_->map_pc()} @$stack; - $env{'form.filter'} = join(',', @mapPcs); - - # Mark as both "here" and "jump" - $env{'form.postsymb'} = $curRes->symb(); + if ($thisduedate<=$minimumduedate) { + # Pop open all previous maps + my $stack = $iterator->getStack(); + pop @$stack; # last resource in the stack is the problem + # itself, which we don't need in the map stack + my @mapPcs = map {$_->map_pc()} @$stack; + $env{'form.filter'} = join(',', @mapPcs); + + # Mark as both "here" and "jump" + $env{'form.postsymb'} = $curRes->symb(); + $minimumduedate=$thisduedate; + } } } } @@ -367,7 +361,7 @@ MENU } else { &add_linkitem(\%toplinkitems,'firsthomework', 'location.href="navmaps?jumpToFirstHomework"', - "Show Me My First Homework Problem"); + "Show my first due problem"); } my $suppressEmptySequences = 0; @@ -384,8 +378,8 @@ MENU }; &add_linkitem(\%toplinkitems,'everything', 'location.href="navmaps?sort='.$env{'form.sort'}.'"', - "Show Everything"); - $r->print("

".&mt("Uncompleted Homework")."

"); + "Show everything"); + $r->print("

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

"); $env{'form.filter'} = ''; $env{'form.condition'} = 1; $resource_no_folder_link = 1; @@ -393,7 +387,7 @@ MENU &add_linkitem(\%toplinkitems,'uncompleted', 'location.href="navmaps?sort='.$env{'form.sort'}. '&showOnlyHomework=1"', - "Show Only Uncompleted Homework"); + "Show only uncompleted problems"); } my %selected=($env{'form.sort'} => 'selected=on'); @@ -1615,11 +1609,11 @@ sub render { if ($condition) { $link='"navmaps?condition=0&filter=&'.$queryString. '&here='.&Apache::lonnet::escape($here).'"'; - $text='Close All Folders'; + $text='Close all folders'; } else { $link='"navmaps?condition=1&filter=&'.$queryString. '&here='.&Apache::lonnet::escape($here).'"'; - $text='Open All Folders'; + $text='Open all folders'; } if ($args->{'caller'} eq 'navmapsdisplay') { &add_linkitem($args->{'linkitems'},'changefolder',