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

bowersj2 lon-capa-cvs@mail.lon-capa.org
Mon, 18 Nov 2002 20:59:21 -0000


bowersj2		Mon Nov 18 15:59:21 2002 EDT

  Modified files:              
    /loncom/interface	lonnavmaps.pm 
  Log:
  Fixes some obscure map indentation bugs.
  
  Currently, some wierd *** is happening when sequences are included multiple
  times, and I'm not certain it's even possible to fix them theoretically,
  as long as sequences aren't discrete entities, even when they come
  from the same source (i.e., different in the bighash).
  
  
Index: loncom/interface/lonnavmaps.pm
diff -u loncom/interface/lonnavmaps.pm:1.112 loncom/interface/lonnavmaps.pm:1.113
--- loncom/interface/lonnavmaps.pm:1.112	Sat Nov 16 17:45:22 2002
+++ loncom/interface/lonnavmaps.pm	Mon Nov 18 15:59:21 2002
@@ -2,7 +2,7 @@
 # The LearningOnline Network with CAPA
 # Navigate Maps Handler
 #
-# $Id: lonnavmaps.pm,v 1.112 2002/11/16 22:45:22 bowersj2 Exp $
+# $Id: lonnavmaps.pm,v 1.113 2002/11/18 20:59:21 bowersj2 Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -207,6 +207,7 @@
     # maps in their own folders, in favor of "inlining" them.
     my $topResource = $navmap->getById("0.0");
     my $inlineTopLevelMaps = $topResource->src() =~ m|^/uploaded/.*default\.sequence$|;
+    my $inlinedelta = $inlineTopLevelMaps? -1 : 0;
 
     # Begin the HTML table
     # four cols: resource + indent, chat+feedback, icon, text string
@@ -288,7 +289,6 @@
                                            $condition);
     $mapIterator->next();
     $curRes = $mapIterator->next();
-    my $deltadepth = 0;
     $depth = 1;
 
     my @backgroundColors = ("#FFFFFF", "#F6F6F6");
@@ -302,15 +302,6 @@
     }
 
     while ($depth > 0) {
-        # If this is an inlined map, cancel the shift to the right,
-        # which has the effect of making the map look inlined
-        if ($inlineTopLevelMaps && scalar(@{$mapIterator->getStack()}) == 1 &&
-            ref($curRes) && $curRes->is_map()) {
-            $deltadepth = -1;
-            $curRes = $mapIterator->next();
-            next;
-        }
-
         if ($curRes == $mapIterator->BEGIN_MAP() ||
             $curRes == $mapIterator->BEGIN_BRANCH()) {
             $indentLevel++;
@@ -327,9 +318,6 @@
 
         if (ref($curRes)) { $counter++; }
 
-        if ($depth == 1) { $deltadepth = 0; } # we're done shifting, because we're
-                                              # out of the inlined map
-
         # Is this resource being ignored because it is in a random-out
         # map and it was not selected?
         if (ref($curRes) && !advancedUser() && $curRes->randomout()) {
@@ -339,6 +327,16 @@
 
         if (ref($curRes) && $curRes->src()) {
 
+            my $deltalevel = $isNewBranch? 1 : 0; # reserves space for branch icon
+
+            if ($indentLevel - $deltalevel + $inlinedelta < 0) {
+                # If this would be at a negative depth (top-level maps in
+                # new-style courses, we want to suppress their title display)
+                # then ignore it.
+                $curRes = $mapIterator->next();
+                next;
+            }
+
             # Step one: Decide which parts to show
             my @parts = @{$curRes->parts()};
             my $multipart = scalar(@parts) > 1;
@@ -424,7 +422,6 @@
             # For each part we intend to display...
             foreach my $part (@parts) {
 
-                my $deltalevel = 0; # for inserting the branch icon
                 my $nonLinkedText = ""; # unlinked stuff after title
                 
                 my $stack = $mapIterator->getStack();
@@ -446,7 +443,6 @@
                 if ($isNewBranch) {
                     $newBranchText = "<img src=\"/adm/lonIcons/branch.gif\" border=\"0\">";
                     $isNewBranch = 0;
-                    $deltalevel = 1; # reserves space for the branch icon
                 }
 
                 # links to open and close the folders
@@ -524,7 +520,7 @@
                 }
 
                 # print indentation
-                for (my $i = 0; $i < $indentLevel - $deltalevel + $deltadepth; $i++) {
+                for (my $i = 0; $i < $indentLevel - $deltalevel + $inlinedelta; $i++) {
                     $r->print($indentString);
                 }
 
@@ -555,6 +551,8 @@
                                               '<font size="-1">Host down</font>'));
                     }
 
+                $r->print("</td>\n");
+
                 # SECOND COL: Is there text, feedback, errors??
                 my $discussionHTML = ""; my $feedbackHTML = "";
 
@@ -613,6 +611,9 @@
                 }
 
                 $r->print("&nbsp;</td></tr>\n");
+
+                if (!($counter % 20)) { $r->rflush(); }
+                if ($counter == 2) { $r->rflush(); }
             }
         }
         $curRes = $mapIterator->next();