Diff for /loncom/interface/lonnavmaps.pm between versions 1.124 and 1.129.2.2

version 1.124, 2003/01/10 18:45:30 version 1.129.2.2, 2003/03/20 20:40:42
Line 403  sub real_handler { Line 403  sub real_handler {
                     # just display first                      # just display first
                     if (!$curRes->opendate("0")) {                      if (!$curRes->opendate("0")) {
                         # no parts are open, display as one part                          # no parts are open, display as one part
                         @parts = ("0");                          @parts = ();
                         $condensed = 1;                          $condensed = 1;
                     } else {                      } else {
                         # Otherwise, only display part 0 if we want to                           # Otherwise, only display part 0 if we want to 
Line 441  sub real_handler { Line 441  sub real_handler {
                             if (($statusAllSame && defined($condenseStatuses{$status})) ||                              if (($statusAllSame && defined($condenseStatuses{$status})) ||
                                 ($dueAllSame && $status == $curRes->OPEN && $statusAllSame)||                                  ($dueAllSame && $status == $curRes->OPEN && $statusAllSame)||
                                 ($openAllSame && $status == $curRes->OPEN_LATER && $statusAllSame) ){                                  ($openAllSame && $status == $curRes->OPEN_LATER && $statusAllSame) ){
                                 @parts = ($parts[1]);                                  @parts = ();
                                 $condensed = 1;                                  $condensed = 1;
                             }                              }
                         }                          }
                     }                      }
                 }                  }
   
             } else {  
                 $parts[0] = "0"; # this is to get past foreach loop below  
                  # you can consider a non-problem resource as a resource  
                   # with only one part without loss, and it simplifies the looping  
             }              }
   
             # Is it a multipart problem with a single part, now in               # Is it a multipart problem with a single part, now in 
             # @parts with "0" filtered out? If so, 'forget' it's a multi-part              # @parts with "0" filtered out? If so, 'forget' it's a multi-part
             # problem and treat it like a single-part problem.              # problem and treat it like a single-part problem.
             if ( scalar(@parts) == 1 ) {              if ( scalar(@parts) == 0 ) {
                 $multipart = 0;                  $multipart = 0;
             }              }
   
Line 466  sub real_handler { Line 462  sub real_handler {
             # status, but if it's multipart, we're lost, since we can't              # status, but if it's multipart, we're lost, since we can't
             # retreive the metadata to count the parts              # retreive the metadata to count the parts
             if ($curRes->{RESOURCE_ERROR}) {              if ($curRes->{RESOURCE_ERROR}) {
                 @parts = ("0");                  @parts = ();
             }              }
   
             # Step Two: Print the actual data.              # Step Two: Print the actual data.
   
             # For each part we intend to display...              # For each part we intend to display...
             foreach my $part (@parts) {              foreach my $part ('', @parts) {
                   if ($part eq '0') {
                       next;
                   }
   
                 my $nonLinkedText = ""; # unlinked stuff after title                  my $nonLinkedText = ""; # unlinked stuff after title
                                   
Line 507  sub real_handler { Line 506  sub real_handler {
   
                 my $icon = "<img src=\"/adm/lonIcons/html.gif\" alt=\"\" border=\"0\" />";                  my $icon = "<img src=\"/adm/lonIcons/html.gif\" alt=\"\" border=\"0\" />";
                 if ($curRes->is_problem()) {                   if ($curRes->is_problem()) { 
                     if ($part eq "0" || $condensed) {                      if ($part eq "" || $condensed) {
                         $icon = '<img src="/adm/lonIcons/problem.gif" alt="" border=\"0\" />';                           $icon = '<img src="/adm/lonIcons/problem.gif" alt="" border=\"0\" />'; 
                     } else {                      } else {
                         $icon = $indentString;                          $icon = $indentString;
Line 584  sub real_handler { Line 583  sub real_handler {
                     $displayedHereMarker = 1;                      $displayedHereMarker = 1;
                 }                  }
   
                 if ($curRes->is_problem() && $part ne "0" && !$condensed) {                   if ($curRes->is_problem() && $part ne "" && !$condensed) { 
                     $partLabel = " (Part $part)";                       $partLabel = " (Part $part)"; 
                     $title = "";                      $title = "";
                 }                  }
                 if ($multipart && $condensed) {                  if ($condensed && $curRes->countParts() > 1) {
                     $nonLinkedText .= ' (' . $curRes->countParts() . ' parts)';                      $nonLinkedText .= ' (' . $curRes->countParts() . ' parts)';
                 }                  }
   
Line 686  sub real_handler { Line 685  sub real_handler {
         $r->print('<script>location += "#curloc";</script>');          $r->print('<script>location += "#curloc";</script>');
     }      }
   
     $r->print("</body></html>");  
   
     $navmap->untieHashes();      $navmap->untieHashes();
   
       $r->print("</body></html>");
   
     return OK;      return OK;
 }  }
   
Line 999  sub new { Line 998  sub new {
         return undef;          return undef;
     }      }
   
       $self->{HASH_TIED} = 1;
     $self->{NAV_HASH} = \%navmaphash;      $self->{NAV_HASH} = \%navmaphash;
     $self->{PARM_HASH} = \%parmhash;      $self->{PARM_HASH} = \%parmhash;
   
     bless($self);      bless($self);
     $self->untieHashes();  
                   
     return $self;      return $self;
 }  }
Line 1155  sub DESTROY { Line 1154  sub DESTROY {
     $self->untieHashes();      $self->untieHashes();
 }  }
   
 # Does the given resource (as a symb string) have  # Private method: Does the given resource (as a symb string) have
 # current discussion? Returns 0 if chat/mail data not extracted.  # current discussion? Returns 0 if chat/mail data not extracted.
 sub hasDiscussion {  sub hasDiscussion {
     my $self = shift;      my $self = shift;
Line 1167  sub hasDiscussion { Line 1166  sub hasDiscussion {
            $self->{LAST_CHECK};             $self->{LAST_CHECK};
 }  }
   
 # Does the given resource (as a symb string) have  # Private method: Does the given resource (as a symb string) have
 # current feedback? Returns the string in the feedback hash, which  # current feedback? Returns the string in the feedback hash, which
 # will be false if it does not exist.  # will be false if it does not exist.
 sub getFeedback {   sub getFeedback { 
Line 1179  sub getFeedback { Line 1178  sub getFeedback {
     return $self->{FEEDBACK}->{$symb};      return $self->{FEEDBACK}->{$symb};
 }  }
   
   # Private method: Get the errors for that resource (by source).
 sub getErrors {   sub getErrors { 
     my $self = shift;      my $self = shift;
     my $src = shift;      my $src = shift;
Line 1678  sub next { Line 1678  sub next {
     # If this is a blank resource, don't actually return it.      # If this is a blank resource, don't actually return it.
     # Should you ever find you need it, make sure to add an option to the code      # Should you ever find you need it, make sure to add an option to the code
     #  that you can use; other things depend on this behavior.      #  that you can use; other things depend on this behavior.
     if (!$self->{HERE}->src()) {      if (!$self->{HERE}->src() || !$self->{HERE}->browsePriv()) {
         return $self->next();          return $self->next();
     }      }
   
Line 2253  sub hasDiscussion { Line 2253  sub hasDiscussion {
 sub getFeedback {  sub getFeedback {
     my $self = shift;      my $self = shift;
     my $source = $self->src();      my $source = $self->src();
     if ($source !~ /^\/res\//) { $source = substr $source, 5; }      if ($source =~ /^\/res\//) { $source = substr $source, 5; }
     return $self->{NAV_MAP}->getFeedback($source);      return $self->{NAV_MAP}->getFeedback($source);
 }  }
   
Line 2287  sub countParts { Line 2287  sub countParts {
     my $self = shift;      my $self = shift;
           
     my $parts = $self->parts();      my $parts = $self->parts();
       my $delta = 0;
       for my $part (@$parts) {
           if ($part eq '0') { $delta--; }
       }
   
     if ($self->{RESOURCE_ERROR}) {      if ($self->{RESOURCE_ERROR}) {
         return 0;          return 0;
     }      }
   
     if (scalar(@{$parts}) < 2) { return 1;}      return scalar(@{$parts}) + $delta;
   
     return scalar(@{$parts}) - 1;  
 }  }
   
 # Private function: Extracts the parts information and saves it  # Private function: Extracts the parts information and saves it
Line 2308  sub extractParts { Line 2310  sub extractParts {
   
     # Retrieve part count, if this is a problem      # Retrieve part count, if this is a problem
     if ($self->is_problem()) {      if ($self->is_problem()) {
         my $metadata = &Apache::lonnet::metadata($self->src(), 'allpossiblekeys');          my $metadata = &Apache::lonnet::metadata($self->src(), 'packages');
         if (!$metadata) {          if (!$metadata) {
             $self->{RESOURCE_ERROR} = 1;              $self->{RESOURCE_ERROR} = 1;
             $self->{PARTS} = [];              $self->{PARTS} = [];
Line 2316  sub extractParts { Line 2318  sub extractParts {
         }          }
                   
         foreach (split(/\,/,$metadata)) {          foreach (split(/\,/,$metadata)) {
             if ($_ =~ /^parameter\_(.*)\_opendate$/) {              if ($_ =~ /^part_(.*)$/) {
                 push @{$self->{PARTS}}, $1;                  push @{$self->{PARTS}}, $1;
             }              }
         }          }
Line 2617  sub getNext { Line 2619  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 the student doesn't have browse priviledges          push @branches, $next;
         # future note: this may properly belong in the client of the resource  
         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')) {  
             push @branches, $next;  
         }  
     }      }
     return \@branches;      return \@branches;
 }  }
Line 2640  sub getPrevious { Line 2633  sub getPrevious {
         my $prev = $choice->comesfrom();          my $prev = $choice->comesfrom();
         $prev = $self->{NAV_MAP}->getById($prev);          $prev = $self->{NAV_MAP}->getById($prev);
   
         # Don't remember it if the student doesn't have browse priviledges          push @branches, $prev;
         # future note: this may properly belong in the client of the resource  
         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')) {  
             push @branches, $prev;  
         }  
     }      }
     return \@branches;      return \@branches;
 }  }
   
   sub browsePriv {
       my $self = shift;
       if (defined($self->{BROWSE_PRIV})) {
           return $self->{BROWSE_PRIV};
       }
   
       $self->{BROWSE_PRIV} = &Apache::lonnet::allowed('bre', $self->src());
   }
   
 =pod  =pod
   
 =back  =back

Removed from v.1.124  
changed lines
  Added in v.1.129.2.2


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