Diff for /loncom/interface/lonnavmaps.pm between versions 1.79 and 1.84

version 1.79, 2002/10/14 18:22:45 version 1.84, 2002/10/17 19:25:27
Line 823  sub new_handle { Line 823  sub new_handle {
     # Initialize the nav map      # Initialize the nav map
     my $navmap = Apache::lonnavmaps::navmap->new(      my $navmap = Apache::lonnavmaps::navmap->new(
                         $ENV{"request.course.fn"}.".db",                          $ENV{"request.course.fn"}.".db",
                         $ENV{"request.course.fn"}."_parms.db", 1);                          $ENV{"request.course.fn"}."_parms.db", 1, 1);
   
   
     if (!defined($navmap)) {      if (!defined($navmap)) {
Line 849  sub new_handle { Line 849  sub new_handle {
         $r->print('<img src="/adm/lonMisc/chat.gif"> Discussions'.          $r->print('<img src="/adm/lonMisc/chat.gif"> Discussions'.
                   '<br><img src="/adm/lonMisc/feedback.gif"> New message (click to open)<p>');                     '<br><img src="/adm/lonMisc/feedback.gif"> New message (click to open)<p>'); 
     }      }
     #if (($currenturl=~/^\/res/) &&  
     #    ($currenturl!~/^\/res\/adm/)) {  
     #    $r->print('<a href="#curloc">Current Location</a><p>');  
     #}  
   
     # Check that it's defined      # Check that it's defined
     if (!($navmap->courseMapDefined())) {      if (!($navmap->courseMapDefined())) {
Line 929  sub new_handle { Line 925  sub new_handle {
   
     # 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
     $r->print('<table cellspacing="3" cellpadding="0" bgcolor="#FFFFFF">' ."\n");      $r->print('<table cellspacing="0" cellpadding="3" width="100%" border="0" bgcolor="#FFFFFF">' ."\n");
   
     my $condition = 0;      my $condition = 0;
     if ($ENV{'form.condition'}) {      if ($ENV{'form.condition'}) {
Line 944  sub new_handle { Line 940  sub new_handle {
     if ($currenturl && !$ENV{'form.alreadyHere'}) {      if ($currenturl && !$ENV{'form.alreadyHere'}) {
         # Give me every resource...          # Give me every resource...
         my $mapIterator = $navmap->getIterator(undef, undef, {}, 1);          my $mapIterator = $navmap->getIterator(undef, undef, {}, 1);
         my $found != 0;          my $found = 0;
         my $depth = 1;          my $depth = 1;
         $mapIterator->next(); # discard the first BEGIN_MAP          $mapIterator->next(); # discard the first BEGIN_MAP
         my $curRes = $mapIterator->next();          my $curRes = $mapIterator->next();
Line 1075  sub new_handle { Line 1071  sub new_handle {
                 }                  }
   
             } else {              } else {
                 @parts[0] = "0"; # this is to get past foreach loop below                  $parts[0] = "0"; # this is to get past foreach loop below
                  # you can consider a non-problem resource as a resource                   # you can consider a non-problem resource as a resource
                   # with only one part without loss                    # with only one part without loss
             }              }
   
               # Is it a multipart problem with a single part, now in 
               # @parts with "0" filtered out? If so, forget it's a multi-part
               # problem and treat it like a single-part problem.
               if ( scalar(@parts) == 1 ) {
                   $multipart = 0;
               }
   
             # Display one part, in event of network error.              # Display one part, in event of network error.
             # If this is a single part, we can at least show the correct              # If this is a single part, we can at least show the correct
             # status, but if it's multipart, we're lost.              # status, but if it's multipart, we're lost.
Line 1104  sub new_handle { Line 1107  sub new_handle {
                     'symb='.&Apache::lonnet::escape($curRes->symb()).                      'symb='.&Apache::lonnet::escape($curRes->symb()).
                     '"';                      '"';
                 my $title = $curRes->title();                  my $title = $curRes->title();
                   if (!$title) {
                       $title = $curRes->src();
                       $title = substr ($title, rindex($title, "/") + 1);
                   }
                 my $partLabel = "";                  my $partLabel = "";
                 my $newBranchText = "";                  my $newBranchText = "";
   
Line 1131  sub new_handle { Line 1138  sub new_handle {
                 # Display the correct icon, link to open or shut map                  # Display the correct icon, link to open or shut map
                 if ($curRes->is_map()) {                   if ($curRes->is_map()) { 
                     my $mapId = $curRes->map_pc();                      my $mapId = $curRes->map_pc();
                     my $nowOpen = !defined($filterHash{$mapId});                      my $nowOpen = (!defined($filterHash{$mapId}));
                       if ($condition) {$nowOpen = !$nowOpen;}
                     $icon = $nowOpen ?                      $icon = $nowOpen ?
                         "navmap.folder.closed.gif" : "navmap.folder.open.gif";                          "navmap.folder.closed.gif" : "navmap.folder.open.gif";
                     $icon = "<img src=\"/adm/lonIcons/$icon\" alt=\"\" border=\"0\" />";                      $icon = "<img src=\"/adm/lonIcons/$icon\" alt=\"\" border=\"0\" />";
Line 1174  sub new_handle { Line 1182  sub new_handle {
                 }                  }
   
                 # FIRST COL: The resource indentation, branch icon, and name                  # FIRST COL: The resource indentation, branch icon, and name
                 $r->print("  <tr><td align=\"left\" valign=\"center\">\n");                  $r->print("  <tr><td align=\"left\" valign=\"center\" width=\"60%\">\n");
   
                 # print indentation                  # print indentation
                 for (my $i = 0; $i < $indentLevel - $deltalevel; $i++) {                  for (my $i = 0; $i < $indentLevel - $deltalevel; $i++) {
Line 1205  sub new_handle { Line 1213  sub new_handle {
   
                 if ($curRes->{RESOURCE_ERROR}) {                  if ($curRes->{RESOURCE_ERROR}) {
                     $r->print(&Apache::loncommon::help_open_topic ("Navmap_Host_Down",                      $r->print(&Apache::loncommon::help_open_topic ("Navmap_Host_Down",
                                                   '<font size="-1">Host down</font>'));                                                '<font size="-1">Host down</font>'));
                     }                      }
   
                 my $discussionHTML = ""; my $feedbackHTML = "";                  my $discussionHTML = ""; my $feedbackHTML = "";
Line 1229  sub new_handle { Line 1237  sub new_handle {
                     }                      }
                 }                  }
   
                 $r->print("<td align=\"left\" valign=\"center\">$discussionHTML$feedbackHTML</td>");                  $r->print("<td width=\"75\" align=\"left\" valign=\"center\">$discussionHTML$feedbackHTML&nbsp;</td>");
   
                 # Is this the first displayed part of a multi-part problem                  # Is this the first displayed part of a multi-part problem
                 # that has not been condensed, so we should suppress these two                  # that has not been condensed, so we should suppress these two
Line 1242  sub new_handle { Line 1250  sub new_handle {
                     my $icon = $statusIconMap{$curRes->status($part)};                      my $icon = $statusIconMap{$curRes->status($part)};
                     my $alt = $iconAltTags{$icon};                      my $alt = $iconAltTags{$icon};
                     if ($icon) {                      if ($icon) {
                         $r->print("<td valign=\"center\" width=\"50\" align=\"right\">$linkopen<img src=\"/adm/lonIcons/$icon\" border=\"0\" alt=\"$alt\" />$linkclose</td>\n");                          $r->print("<td width=\"30\" valign=\"center\" width=\"50\" align=\"right\">$linkopen<img width=\"25\" height=\"25\" src=\"/adm/lonIcons/$icon\" border=\"0\" alt=\"$alt\" />$linkclose</td>\n");
                     } else {                      } else {
                         $r->print("<td></td>\n");                          $r->print("<td width=\"30\">&nbsp;</td>\n");
                     }                      }
                 } else { # not problem, no icon                  } else { # not problem, no icon
                     $r->print("<td></td>\n");                      $r->print("<td width=\"30\">&nbsp;</td>\n");
                 }                  }
   
                 # FOURTH COL: Text description                  # FOURTH COL: Text description
Line 1262  sub new_handle { Line 1270  sub new_handle {
                     $r->print('(randomly select ' . $curRes->randompick() .')');                      $r->print('(randomly select ' . $curRes->randompick() .')');
                 }                  }
   
                 $r->print("</td></tr>\n");                  $r->print("&nbsp;</td></tr>\n");
             }              }
         }          }
         $curRes = $mapIterator->next();          $curRes = $mapIterator->next();
Line 1657  sub new { Line 1665  sub new {
         $self->{EMAIL_STATUS} = \%emailstatus;          $self->{EMAIL_STATUS} = \%emailstatus;
                   
     }          }    
   
       $self->{PARM_CACHE} = {};
           
     bless($self);      bless($self);
                   
Line 1778  sub finishResource { Line 1788  sub finishResource {
 sub parmval {  sub parmval {
     my $self = shift;      my $self = shift;
     my ($what,$symb)=@_;      my ($what,$symb)=@_;
       my $hashkey = $what."|||".$symb;
   
       if (defined($self->{PARM_CACHE}->{$hashkey})) {
           return $self->{PARM_CACHE}->{$hashkey};
       }
   
       my $result = $self->parmval_real($what, $symb);
       $self->{PARM_CACHE}->{$hashkey} = $result;
       return $result;
   }
   
   sub parmval_real {
       my $self = shift;
       my ($what,$symb) = @_;
   
     my $cid=$ENV{'request.course.id'};      my $cid=$ENV{'request.course.id'};
     my $csec=$ENV{'request.course.sec'};      my $csec=$ENV{'request.course.sec'};
     my $uname=$ENV{'user.name'};      my $uname=$ENV{'user.name'};
Line 2239  These are methods that help you retrieve Line 2264  These are methods that help you retrieve
   
 =item * B<to>: Returns the "to" value from the compiled nav map. (It is likely you want to use B<getNext> instead.)  =item * B<to>: Returns the "to" value from the compiled nav map. (It is likely you want to use B<getNext> instead.)
   
 =item * B<type>: Returns the type of the resource, "start", "normal", or "finish".   
   
 =back  =back
   
 =cut  =cut
Line 2270  sub symb { Line 2293  sub symb {
 }  }
 sub title { my $self=shift; return $self->navHash("title_", 1); }  sub title { my $self=shift; return $self->navHash("title_", 1); }
 sub to { my $self=shift; return $self->navHash("to_", 1); }  sub to { my $self=shift; return $self->navHash("to_", 1); }
 sub type { my $self=shift; return $self->navHash("type_", 1); }  
   
 =pod  =pod
   
Line 2486  sub getReturnHash { Line 2508  sub getReturnHash {
     my $self = shift;      my $self = shift;
           
     if (!defined($self->{RETURN_HASH})) {      if (!defined($self->{RETURN_HASH})) {
         my %tmpHash = &Apache::lonnet::restore($self->symb());          my %tmpHash  = &Apache::lonnet::restore($self->symb());
         $self->{RETURN_HASH} = \%tmpHash;          $self->{RETURN_HASH} = \%tmpHash;
     }      }
 }         }       
Line 2577  sub extractParts { Line 2599  sub extractParts {
   
     $self->{PARTS} = [];      $self->{PARTS} = [];
   
     # Retrieve part count      # Retrieve part count, if this is a problem
     my $metadata = &Apache::lonnet::metadata($self->src(), 'allpossiblekeys');      if ($self->is_problem()) {
     if (!$metadata) {          my $metadata = &Apache::lonnet::metadata($self->src(), 'allpossiblekeys');
         $self->{RESOURCE_ERROR} = 1;          if (!$metadata) {
         $self->{PARTS} = [];              $self->{RESOURCE_ERROR} = 1;
         return;              $self->{PARTS} = [];
     }              return;
           }
     foreach (split(/\,/,$metadata)) {          
         if ($_ =~ /^parameter\_(.*)\_opendate$/) {          foreach (split(/\,/,$metadata)) {
             push @{$self->{PARTS}}, $1;              if ($_ =~ /^parameter\_(.*)\_opendate$/) {
                   push @{$self->{PARTS}}, $1;
               }
         }          }
           
           
           # Is this possible to do in one line? - Jeremy
           my @sortedParts = sort @{$self->{PARTS}};
           $self->{PARTS} = \@sortedParts;
     }      }
   
       
     # Is this possible to do in one line? - Jeremy  
     my @sortedParts = sort @{$self->{PARTS}};  
     $self->{PARTS} = \@sortedParts;  
   
     return;      return;
 }  }
   

Removed from v.1.79  
changed lines
  Added in v.1.84


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