Diff for /loncom/interface/lonnavmaps.pm between versions 1.109 and 1.114

version 1.109, 2002/11/15 19:32:09 version 1.114, 2002/11/18 21:12:39
Line 83  sub handler { Line 83  sub handler {
         return HTTP_NOT_ACCEPTABLE;          return HTTP_NOT_ACCEPTABLE;
     }      }
   
       $r->print("<html><head>\n");
       $r->print("<title>Navigate Course Contents</title>");
   
     # Header      # Header
     $r->print(&Apache::loncommon::bodytag('Navigate Course Map','',      $r->print(&Apache::loncommon::bodytag('Navigate Course Contents','',
                                           ''));                                            ''));
     $r->print('<script>window.focus();</script>');      $r->print('<script>window.focus();</script>');
   
Line 113  sub handler { Line 116  sub handler {
         $condition = 1;          $condition = 1;
     }      }
   
       my $currenturl = $ENV{'form.postdata'};
       $currenturl=~s/^http\:\/\///;
       $currenturl=~s/^[^\/]+//;
   
       # 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";
   
     if ($condition) {      if ($condition) {
         $r->print('<a href="navmaps?condition=0&filter=">Close All Folders</a>');          $r->print("<a href=\"navmaps?condition=0&filter=&$queryAdd\">Close All Folders</a>");
     } else {      } else {
         $r->print('<a href="navmaps?condition=1&filter=">Open All Folders</a>');          $r->print("<a href=\"navmaps?condition=1&filter=&$queryAdd\">Open All Folders</a>");
     }      }
   
     $r->print('<br>&nbsp;');      $r->print('<br>&nbsp;');
Line 143  sub handler { Line 158  sub handler {
     my %colormap =       my %colormap = 
     ( $res->NETWORK_FAILURE        => '',      ( $res->NETWORK_FAILURE        => '',
       $res->CORRECT                => '',        $res->CORRECT                => '',
       $res->EXCUSED                => '#BBBBFF',        $res->EXCUSED                => '#3333FF',
       $res->PAST_DUE_ANSWER_LATER  => '',        $res->PAST_DUE_ANSWER_LATER  => '',
       $res->PAST_DUE_NO_ANSWER     => '',        $res->PAST_DUE_NO_ANSWER     => '',
       $res->ANSWER_OPEN            => '#CCFFCC',        $res->ANSWER_OPEN            => '#006600',
       $res->OPEN_LATER             => '',        $res->OPEN_LATER             => '',
       $res->TRIES_LEFT             => '',        $res->TRIES_LEFT             => '',
       $res->INCORRECT              => '',        $res->INCORRECT              => '',
Line 192  sub handler { Line 207  sub handler {
     # maps in their own folders, in favor of "inlining" them.      # maps in their own folders, in favor of "inlining" them.
     my $topResource = $navmap->getById("0.0");      my $topResource = $navmap->getById("0.0");
     my $inlineTopLevelMaps = $topResource->src() =~ m|^/uploaded/.*default\.sequence$|;      my $inlineTopLevelMaps = $topResource->src() =~ m|^/uploaded/.*default\.sequence$|;
       my $inlinedelta = $inlineTopLevelMaps? -1 : 0;
     my $currenturl = $ENV{'form.postdata'};  
     $currenturl=~s/^http\:\/\///;  
     $currenturl=~s/^[^\/]+//;  
   
     # 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";  
   
     # Begin the HTML table      # Begin the HTML table
     # four cols: resource + indent, chat+feedback, icon, text string      # four cols: resource + indent, chat+feedback, icon, text string
Line 285  sub handler { Line 289  sub handler {
                                            $condition);                                             $condition);
     $mapIterator->next();      $mapIterator->next();
     $curRes = $mapIterator->next();      $curRes = $mapIterator->next();
     my $deltadepth = 0;  
     $depth = 1;      $depth = 1;
   
     my @backgroundColors = ("#FFFFFF", "#F6F6F6");      my @backgroundColors = ("#FFFFFF", "#F6F6F6");
Line 299  sub handler { Line 302  sub handler {
     }      }
   
     while ($depth > 0) {      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() ||          if ($curRes == $mapIterator->BEGIN_MAP() ||
             $curRes == $mapIterator->BEGIN_BRANCH()) {              $curRes == $mapIterator->BEGIN_BRANCH()) {
             $indentLevel++;              $indentLevel++;
Line 324  sub handler { Line 318  sub handler {
   
         if (ref($curRes)) { $counter++; }          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          # Is this resource being ignored because it is in a random-out
         # map and it was not selected?          # map and it was not selected?
         if (ref($curRes) && !advancedUser() && $curRes->randomout()) {          if (ref($curRes) && !advancedUser() && $curRes->randomout()) {
Line 336  sub handler { Line 327  sub handler {
   
         if (ref($curRes) && $curRes->src()) {          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              # Step one: Decide which parts to show
             my @parts = @{$curRes->parts()};              my @parts = @{$curRes->parts()};
             my $multipart = scalar(@parts) > 1;              my $multipart = scalar(@parts) > 1;
Line 421  sub handler { Line 422  sub handler {
             # For each part we intend to display...              # For each part we intend to display...
             foreach my $part (@parts) {              foreach my $part (@parts) {
   
                 my $deltalevel = 0; # for inserting the branch icon  
                 my $nonLinkedText = ""; # unlinked stuff after title                  my $nonLinkedText = ""; # unlinked stuff after title
                                   
                 my $stack = $mapIterator->getStack();                  my $stack = $mapIterator->getStack();
Line 443  sub handler { Line 443  sub handler {
                 if ($isNewBranch) {                  if ($isNewBranch) {
                     $newBranchText = "<img src=\"/adm/lonIcons/branch.gif\" border=\"0\">";                      $newBranchText = "<img src=\"/adm/lonIcons/branch.gif\" border=\"0\">";
                     $isNewBranch = 0;                      $isNewBranch = 0;
                     $deltalevel = 1; # reserves space for the branch icon  
                 }                  }
   
                 # links to open and close the folders                  # links to open and close the folders
Line 521  sub handler { Line 520  sub handler {
                 }                  }
   
                 # print indentation                  # print indentation
                 for (my $i = 0; $i < $indentLevel - $deltalevel + $deltadepth; $i++) {                  for (my $i = 0; $i < $indentLevel - $deltalevel + $inlinedelta; $i++) {
                     $r->print($indentString);                      $r->print($indentString);
                 }                  }
   
Line 552  sub handler { Line 551  sub handler {
                                               '<font size="-1">Host down</font>'));                                                '<font size="-1">Host down</font>'));
                     }                      }
   
                   $r->print("</td>\n");
   
                 # SECOND COL: Is there text, feedback, errors??                  # SECOND COL: Is there text, feedback, errors??
                 my $discussionHTML = ""; my $feedbackHTML = "";                  my $discussionHTML = ""; my $feedbackHTML = "";
   
Line 610  sub handler { Line 611  sub handler {
                 }                  }
   
                 $r->print("&nbsp;</td></tr>\n");                  $r->print("&nbsp;</td></tr>\n");
   
                   if (!($counter % 20)) { $r->rflush(); }
                   if ($counter == 2) { $r->rflush(); }
             }              }
         }          }
         $curRes = $mapIterator->next();          $curRes = $mapIterator->next();
Line 1509  sub next { Line 1513  sub next {
     # BC branch and gets to C, it will see F as the only next resource, but it's      # BC branch and gets to C, it will see F as the only next resource, but it's
     # one level lower. Thus, this is the end of the branch, since there are no      # one level lower. Thus, this is the end of the branch, since there are no
     # more resources added to this level or above.      # more resources added to this level or above.
       # We don't do this if the examined resource is the finish resource,
       # because the condition given above is true, but the "END_MAP" will
       # take care of things and we should already be at depth 0.
     my $isEndOfBranch = $maxDepthAdded < $self->{CURRENT_DEPTH};      my $isEndOfBranch = $maxDepthAdded < $self->{CURRENT_DEPTH};
     if ($isEndOfBranch) { # **9**      if ($isEndOfBranch && $here != $self->{FINISH_RESOURCE}) { # **9**
         push @{$self->{STACK}->[$self->{CURRENT_DEPTH}]}, END_BRANCH();          push @{$self->{STACK}->[$self->{CURRENT_DEPTH}]}, END_BRANCH();
     }      }
   
Line 2453  sub getNext { Line 2460  sub getNext {
   
         # Don't remember it if the student doesn't have browse priviledges          # Don't remember it if the student doesn't have browse priviledges
         # future note: this may properly belong in the client of the resource          # future note: this may properly belong in the client of the resource
         my $browsePriv = &Apache::lonnet::allowed('bre', $self->src);          my $browsePriv = $self->{BROWSE_PRIV};
           if (!defined($browsePriv)) {
               $browsePriv = &Apache::lonnet::allowed('bre', $self->src);
               $self->{BROWSE_PRIV} = $browsePriv;
           }
         if (!($browsePriv ne '2' && $browsePriv ne 'F')) {          if (!($browsePriv ne '2' && $browsePriv ne 'F')) {
             push @branches, $next;              push @branches, $next;
         }          }
Line 2472  sub getPrevious { Line 2483  sub getPrevious {
   
         # Don't remember it if the student doesn't have browse priviledges          # Don't remember it if the student doesn't have browse priviledges
         # future note: this may properly belong in the client of the resource          # future note: this may properly belong in the client of the resource
         my $browsePriv = &Apache::lonnet::allowed('bre', $self->src);          my $browsePriv = $self->{BROWSE_PRIV};
           if (!defined($browsePriv)) {
               $browsePriv = &Apache::lonnet::allowed('bre', $self->src);
               $self->{BROWSE_PRIV} = $browsePriv;
           }
         if (!($browsePriv ne '2' && $browsePriv ne 'F')) {          if (!($browsePriv ne '2' && $browsePriv ne 'F')) {
             push @branches, $prev;              push @branches, $prev;
         }          }

Removed from v.1.109  
changed lines
  Added in v.1.114


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>