Diff for /loncom/interface/lonnavmaps.pm between versions 1.60 and 1.61

version 1.60, 2002/10/01 19:39:11 version 1.61, 2002/10/03 19:08:14
Line 878  sub new_handle { Line 878  sub new_handle {
     my %condenseStatuses =      my %condenseStatuses =
  ( $res->NETWORK_FAILURE    => 1,   ( $res->NETWORK_FAILURE    => 1,
   $res->NOTHING_SET        => 1,    $res->NOTHING_SET        => 1,
   $res->CORRECT            => 1,    $res->CORRECT            => 1 );
   $res->OPEN               => 1 );  
   
     my %filterHash;      my %filterHash;
     # Figure out what we're not displaying      # Figure out what we're not displaying
Line 897  sub new_handle { Line 896  sub new_handle {
     my $curRes = $mapIterator->next();      my $curRes = $mapIterator->next();
     undef $res; # so we don't accidentally use it later      undef $res; # so we don't accidentally use it later
     my $indentLevel = -1;      my $indentLevel = -1;
     my $indentString = "<img src=\"/adm/lonIcons/whitespace1.gif\" width=\"25\" height=\"1\"/>";      my $indentString = "<img src=\"/adm/lonIcons/whitespace1.gif\" width=\"25\" height=\"1\" alt=\"\" border=\"0\" />";
   
     my $isNewBranch = 0;      my $isNewBranch = 0;
     my $now = time();      my $now = time();
Line 919  sub new_handle { Line 918  sub new_handle {
         if (ref($curRes) && $curRes->src()) {          if (ref($curRes) && $curRes->src()) {
   
     # Step one: Decide which parts to show      # Step one: Decide which parts to show
             my @parts;      my @parts = @{$curRes->parts()};
       my $multipart = scalar(@parts) > 1;
       my $condensed = 0;
   
             if ($curRes->is_problem()) {              if ($curRes->is_problem()) {
  # Is it multipart?   # Is it multipart?
                 @parts = @{$curRes->parts()};  
   
  my $multipart = scalar(@parts) > 1;  
   
  if ($multipart) {   if ($multipart) {
     # If it's multipart, see if part 0 is "open"      # If it's multipart, see if part 0 is "open"
     # if it is, display all parts, if it isn't,      # if it is, display all parts, if it isn't,
Line 935  sub new_handle { Line 934  sub new_handle {
     } else {      } else {
  # Otherwise, only display part 0 if we want to    # Otherwise, only display part 0 if we want to 
  # attach feedback or email information to it   # attach feedback or email information to it
  if (!$curRes->hasDiscussion() && !$curRes->getFeedback()) {   if ($curRes->hasDiscussion() || $curRes->getFeedback()) {
     shift @parts;      shift @parts;
  } else {   } else {
     # If there's discussion or feedback, that counts      # If there's discussion or feedback, that counts
Line 943  sub new_handle { Line 942  sub new_handle {
           
     # Now, we decide whether to condense the      # Now, we decide whether to condense the
     # parts due to similarity      # parts due to similarity
     my $status = $curRes->status($parts[0]);      my $status = $curRes->status($parts[1]);
     my $allSame = 1;      my $due = $curRes->duedate($parts[1]);
     for (my $i = 1; $i < scalar(@parts); $i++) {      my $open = $curRes->opendaute($parts[1]);
       my $statusAllSame = 1;
       my $dueAllSame = 1;
       my $openAllSame = 1;
       for (my $i = 2; $i < scalar(@parts); $i++) {
  if ($curRes->status($parts[$i]) != $status){   if ($curRes->status($parts[$i]) != $status){
     $allSame = 0;      $statusAllSame = 0;
    }
    if ($curRes->duedate($parts[$i]) != $due ) {
       $dueAllSame = 0;
    }
    if ($curRes->opendate($parts[$i]) != $open) {
       $openAllSame = 0;
  }   }
     }      }
           
     # $allSame is true if all the statuses were      # $allSame is true if all the statuses were
     # the same. Now, if they are all the same and      # the same. Now, if they are all the same and
     # match one of the statuses to condense, then      # match one of the statuses to condense, or they
     # only display part 0.      # are all open with the same due date, or they are
     if ($allSame && defined($condenseStatuses{$status})){      # all OPEN_LATER with the same open date, display the
  @parts = ("0");      # status of the first non-zero part (to get the 'correct'
       # status right, since 0 is never 'correct' or 'open').
       if (($statusAllSame && defined($condenseStatuses{$status})) ||
    ($dueAllSame && $status == $curRes->OPEN && $statusAllSame)||
    ($openAllSame && $status == $curRes->OPEN_LATER && $statusAllSame) ){
    @parts = ($parts[1]);
    $condensed = 1;
     }      }
  }   }
     }      }
Line 999  sub new_handle { Line 1014  sub new_handle {
                 my $linkopen = "<a href=\"$link\">";                  my $linkopen = "<a href=\"$link\">";
                 my $linkclose = "</a>";                  my $linkclose = "</a>";
   
                 my $icon = "html.gif";                  my $icon = "<img src=\"/adm/lonIcons/html.gif\" alt=\"\" border=\"0\" />";
                 if ($curRes->is_problem()) {                   if ($curRes->is_problem()) { 
                     $icon = "problem.gif";       if ($part eq "0" || $condensed) {
    $icon = '<img src="/adm/lonIcons/problem.gif" alt="" border=\"0\" />'; 
       } else {
    $icon = $indentString;
       }
                 }                  }
   
                 # Display the correct icon, link to open or shut map                  # Display the correct icon, link to open or shut map
Line 1010  sub new_handle { Line 1029  sub new_handle {
                     my $nowOpen = !defined($filterHash{$mapId});                      my $nowOpen = !defined($filterHash{$mapId});
                     $icon = $nowOpen ?                      $icon = $nowOpen ?
                         "folder_opened.gif" : "folder_closed.gif";                          "folder_opened.gif" : "folder_closed.gif";
       $icon = "<img src=\"/adm/lonIcons/$icon\" alt=\"\" border=\"0\" />";
                     $linkopen = "<a href=\"/adm/navmaps?filter=";                      $linkopen = "<a href=\"/adm/navmaps?filter=";
                     $linkopen .= $nowOpen ?                       $linkopen .= $nowOpen ? 
                         addToFilter(\%filterHash, $mapId) :                          addToFilter(\%filterHash, $mapId) :
Line 1036  sub new_handle { Line 1056  sub new_handle {
                     $r->print($indentString);                      $r->print($indentString);
                 }                  }
   
                 $r->print("  ${newBranchText}${linkopen}<img border=\"0\" src=\"" .                  $r->print("  ${newBranchText}${linkopen}$icon${linkclose}\n");
                           "/adm/lonIcons/$icon\" alt=\"\">${linkclose}\n");  
   
                 if ($curRes->is_problem() && $part != "0") { $partLabel = " (Part $part)"; }                  if ($curRes->is_problem() && $part != "0" && !$condensed) { 
       $partLabel = " (Part $part)"; 
       $title = "";
    }
   
                 $r->print("  <a href=\"$link\">$title$partLabel</a></td>");                  $r->print("  <a href=\"$link\">$title$partLabel</a></td>");
   
Line 1066  sub new_handle { Line 1088  sub new_handle {
   
  $r->print("<td align=\"left\">$discussionHTML$feedbackHTML</td>");   $r->print("<td align=\"left\">$discussionHTML$feedbackHTML</td>");
   
    # Is this the first displayed part of a multi-part problem
    # that has not been condensed, so we should suppress these two
    # columns?
    my $firstDisplayed = !$condensed && $multipart && $part eq "0";
   
  # THIRD ROW: Problem status icon   # THIRD ROW: Problem status icon
  if ($curRes->is_problem()) {   if ($curRes->is_problem() &&
     my $icon = $statusIconMap{$curRes->status()};      !$firstDisplayed) {
       my $icon = $statusIconMap{$curRes->status($part)};
     if ($icon) {      if ($icon) {
  $r->print("<td width=\"50\" align=\"right\">$linkopen<img src=\"/adm/lonIcons/$icon\" border=\"0\" />$linkclose</td>\n");   $r->print("<td width=\"50\" align=\"right\">$linkopen<img src=\"/adm/lonIcons/$icon\" border=\"0\" />$linkclose</td>\n");
     } else {      } else {
Line 1081  sub new_handle { Line 1109  sub new_handle {
   # FOURTH ROW: Text description    # FOURTH ROW: Text description
  $r->print("<td $colorizer align=\"right\">\n");   $r->print("<td $colorizer align=\"right\">\n");
                                   
                 if ($curRes->kind() eq "res" and                   if ($curRes->kind() eq "res" &&
                     $curRes->is_problem() ) {                      $curRes->is_problem() &&
       !$firstDisplayed) {
                     $r->print (getDescription($curRes, $part));                      $r->print (getDescription($curRes, $part));
                 }                  }
   
Line 2509  sub getNext { Line 2538  sub getNext {
         my $next = $choice->goesto();          my $next = $choice->goesto();
         $next = $self->{NAV_MAP}->getById($next);          $next = $self->{NAV_MAP}->getById($next);
   
         # Don't remember it if we've already seen it          # Don't remember it if we've already seen it or if
    # the student doesn't have browse priviledges
    my $browsePriv = &Apache::lonnet::allowed('bre', $self->src);
         if (!defined($alreadySeenHash) ||          if (!defined($alreadySeenHash) ||
             !defined($alreadySeenHash->{$next->{ID}})) {              !defined($alreadySeenHash->{$next->{ID}}) ||
       ($browsePriv ne '2' && $browsePriv ne 'F')) {
                 push @branches, $next;                  push @branches, $next;
             }              }
     }      }

Removed from v.1.60  
changed lines
  Added in v.1.61


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