[LON-CAPA-cvs] cvs: loncom /interface lonnavmaps.pm

bowersj2 lon-capa-cvs@mail.lon-capa.org
Fri, 11 Oct 2002 21:29:18 -0000


bowersj2		Fri Oct 11 17:29:18 2002 EDT

  Modified files:              
    /loncom/interface	lonnavmaps.pm 
  Log:
  * Nav maps now notices your current location and highlights it. Still using URI instead of symb because
  I need to see how the remote is storing the symb, and possibly re-write the remote to send the symb
  instead of the URI. But this is good for testing.
  
  
  
Index: loncom/interface/lonnavmaps.pm
diff -u loncom/interface/lonnavmaps.pm:1.73 loncom/interface/lonnavmaps.pm:1.74
--- loncom/interface/lonnavmaps.pm:1.73	Fri Oct 11 14:39:55 2002
+++ loncom/interface/lonnavmaps.pm	Fri Oct 11 17:29:18 2002
@@ -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 @@
         $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 = "<img src=\"/adm/lonIcons/whitespace1.gif\" width=\"25\" height=\"1\" alt=\"\" border=\"0\" />";
@@ -942,6 +974,8 @@
 
     # 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 @@
                 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 @@
 
                 $r->print("  ${newBranchText}${linkopen}$icon${linkclose}\n");
 
+                my $curMarkerBegin = "";
+                my $curMarkerEnd = "";
+
+                # Is this the current resource?
+                if ($curRes->src() eq $currenturl) {
+                    $curMarkerBegin = '<a name="curloc" /><font color="red" size="+2">&gt; </font>';
+                    $curMarkerEnd = '<font color="red" size="+2"> &lt;</font>';
+                }
+
                 if ($curRes->is_problem() && $part ne "0" && !$condensed) { 
                     $partLabel = " (Part $part)"; 
                     $title = "";
@@ -1134,7 +1184,7 @@
                     $nonLinkedText .= ' (' . $curRes->countParts() . ' parts)';
                 }
 
-                $r->print("  <a href=\"$link\">$title$partLabel</a> $nonLinkedText");
+                $r->print("  $curMarkerBegin<a href=\"$link\">$title$partLabel</a> $curMarkerEnd $nonLinkedText");
 
                 if ($curRes->{RESOURCE_ERROR}) {
                     $r->print(&Apache::loncommon::help_open_topic ("Navmap_Host_Down",