--- loncom/interface/lonnavmaps.pm 2002/10/11 21:29:18 1.74 +++ loncom/interface/lonnavmaps.pm 2002/10/14 16:43:58 1.77 @@ -2,7 +2,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.74 2002/10/11 21:29:18 bowersj2 Exp $ +# $Id: lonnavmaps.pm,v 1.77 2002/10/14 16:43:58 bowersj2 Exp $ # # Copyright Michigan State University Board of Trustees # @@ -917,7 +917,13 @@ sub new_handle { my $currenturl = $ENV{'form.postdata'}; $currenturl=~s/^http\:\/\///; $currenturl=~s/^[^\/]+//; - my $queryAdd = "postdata=" . &Apache::lonnet::escape($currenturl); + # alreadyHere allows us to only open the maps necessary to view + # the current location once, while at the same time remembering + # the current location. Without that check, the user would never + # be able to close those maps; the user would close it, and the + # currenturl scan would re-open it. + my $queryAdd = "postdata=" . &Apache::lonnet::escape($currenturl) . + "&alreadyHere=1"; $r->print('Show All Resources

'); @@ -935,7 +941,7 @@ sub new_handle { # loop should be obvious. # Here's a simple example of the iterator. # If there is a current resource - if ($currenturl) { + if ($currenturl && !$ENV{'form.alreadyHere'}) { # Give me every resource... my $mapIterator = $navmap->getIterator(undef, undef, {}, 1); my $found != 0; @@ -1070,7 +1076,7 @@ sub new_handle { } else { @parts[0] = "0"; # this is to get past foreach loop below # you can consider a non-problem resource as a resource - # with only one part without loss + # with only one part without loss } # Display one part, in event of network error. @@ -1126,7 +1132,7 @@ sub new_handle { my $mapId = $curRes->map_pc(); my $nowOpen = !defined($filterHash{$mapId}); $icon = $nowOpen ? - "folder_closed.gif" : "folder_opened.gif"; + "navmap.folder.closed.gif" : "navmap.folder.open.gif"; $icon = "\"\""; $linkopen = "OPEN() && - $curRes->duedate() < time()+(24*60*60)) { + if ($status == $curRes->OPEN() && $curRes->duedate() && + $curRes->duedate() < time()+(24*60*60) && + $curRes->duedate() > time()) { $color = $hurryUpColor; } if ($color ne "") { @@ -1158,7 +1165,7 @@ sub new_handle { } # FIRST COL: The resource indentation, branch icon, and name - $r->print(" \n"); + $r->print(" \n"); # print indentation for (my $i = 0; $i < $indentLevel - $deltalevel; $i++) { @@ -1212,7 +1219,7 @@ sub new_handle { } } - $r->print("$discussionHTML$feedbackHTML"); + $r->print("$discussionHTML$feedbackHTML"); # Is this the first displayed part of a multi-part problem # that has not been condensed, so we should suppress these two @@ -1225,7 +1232,7 @@ sub new_handle { my $icon = $statusIconMap{$curRes->status($part)}; my $alt = $iconAltTags{$icon}; if ($icon) { - $r->print("$linkopen\"$alt\"$linkclose\n"); + $r->print("$linkopen\"$alt\"$linkclose\n"); } else { $r->print("\n"); } @@ -1234,7 +1241,7 @@ sub new_handle { } # FOURTH COL: Text description - $r->print("\n"); + $r->print("\n"); if ($curRes->kind() eq "res" && $curRes->is_problem() &&