--- loncom/interface/lonnavmaps.pm 2002/10/11 18:39:55 1.73 +++ loncom/interface/lonnavmaps.pm 2002/10/11 21:29:18 1.74 @@ -2,7 +2,7 @@ # The LearningOnline Network with CAPA # Navigate Maps Handler # -# $Id: lonnavmaps.pm,v 1.73 2002/10/11 18:39:55 bowersj2 Exp $ +# $Id: lonnavmaps.pm,v 1.74 2002/10/11 21:29:18 bowersj2 Exp $ # # Copyright Michigan State University Board of Trustees # @@ -930,7 +930,39 @@ sub new_handle { $condition = 1; } - my $mapIterator = $navmap->getIterator(undef, undef, \%filterHash, $condition); + # This needs to be updated to use symbs from the remote, + # instead of uris. The changes to this and the main rendering + # loop should be obvious. + # Here's a simple example of the iterator. + # If there is a current resource + if ($currenturl) { + # Give me every resource... + my $mapIterator = $navmap->getIterator(undef, undef, {}, 1); + my $found != 0; + my $depth = 1; + $mapIterator->next(); # discard the first BEGIN_MAP + my $curRes = $mapIterator->next(); + + while ($depth > 0 && !$found) { + if (ref($curRes) && $curRes->src() eq $currenturl) { + # If this is the correct resource, be sure to + # show it by making sure the containing maps + # are open. + + my $mapStack = $mapIterator->getStack(); + for my $map (@{$mapStack}) { + if ($condition) { + undef $filterHash{$map->map_pc()}; + } else { + $filterHash{$map->map_pc()} = 1; + } + } + $found = 1; + } + $curRes = $mapIterator->next(); + } + } + undef $res; # so we don't accidentally use it later my $indentLevel = 0; my $indentString = "\"\""; @@ -942,6 +974,8 @@ sub new_handle { # We know the first thing is a BEGIN_MAP (see "$self->{STARTED}" # code in iterator->next), so ignore the first one + my $mapIterator = $navmap->getIterator(undef, undef, \%filterHash, + $condition); $mapIterator->next(); my $curRes = $mapIterator->next(); @@ -1107,6 +1141,13 @@ sub new_handle { if ($curRes->is_problem()) { my $status = $curRes->status($part); my $color = $colormap{$status}; + + # Special case in the navmaps: If in less then + # 24 hours, give it a bit of urgency + if ($status == $curRes->OPEN() && + $curRes->duedate() < time()+(24*60*60)) { + $color = $hurryUpColor; + } if ($color ne "") { $colorizer = "bgcolor=\"$color\""; } @@ -1126,6 +1167,15 @@ sub new_handle { $r->print(" ${newBranchText}${linkopen}$icon${linkclose}\n"); + my $curMarkerBegin = ""; + my $curMarkerEnd = ""; + + # Is this the current resource? + if ($curRes->src() eq $currenturl) { + $curMarkerBegin = '> '; + $curMarkerEnd = ' <'; + } + if ($curRes->is_problem() && $part ne "0" && !$condensed) { $partLabel = " (Part $part)"; $title = ""; @@ -1134,7 +1184,7 @@ sub new_handle { $nonLinkedText .= ' (' . $curRes->countParts() . ' parts)'; } - $r->print(" $title$partLabel $nonLinkedText"); + $r->print(" $curMarkerBegin$title$partLabel $curMarkerEnd $nonLinkedText"); if ($curRes->{RESOURCE_ERROR}) { $r->print(&Apache::loncommon::help_open_topic ("Navmap_Host_Down",