Diff for /loncom/interface/lonnavmaps.pm between versions 1.285 and 1.286

version 1.285, 2004/08/31 15:28:03 version 1.286, 2004/09/09 09:49:03
Line 4049  sub extractParts { Line 4049  sub extractParts {
         # So we have to use our knowlege of part names to figure out           # So we have to use our knowlege of part names to figure out 
         # where the part names begin and end, and even then, it is possible          # where the part names begin and end, and even then, it is possible
         # to construct ambiguous situations.          # to construct ambiguous situations.
         #  
         my %response_type_by_id;  
         foreach (split /,/, $metadata) {          foreach (split /,/, $metadata) {
             if ($_ =~ /^([a-zA-Z]+)response_(.*)/) {              if ($_ =~ /^([a-zA-Z]+)response_(.*)/) {
                 my $responseType = $1;                  my $responseType = $1;
Line 4066  sub extractParts { Line 4064  sub extractParts {
                         my $responseId = join('_', @otherChunks);                          my $responseId = join('_', @otherChunks);
                         push @{$responseIdHash{$partIdSoFar}}, $responseId;                          push @{$responseIdHash{$partIdSoFar}}, $responseId;
                         push @{$responseTypeHash{$partIdSoFar}}, $responseType;                          push @{$responseTypeHash{$partIdSoFar}}, $responseType;
                         $response_type_by_id{$responseId} = $responseType;  
                     }                      }
                 }                  }
             }              }
Line 4077  sub extractParts { Line 4074  sub extractParts {
  if ($resorder) {   if ($resorder) {
     my @resorder=split(/,/,$resorder);      my @resorder=split(/,/,$resorder);
     foreach my $part (keys(%responseIdHash)) {      foreach my $part (keys(%responseIdHash)) {
  my %resids = map { ($_,1) } @{ $responseIdHash{$part} };   my $i=0;
    my %resids = map { ($_,$i++) } @{ $responseIdHash{$part} };
  my @neworder;   my @neworder;
  foreach my $possibleid (@resorder) {   foreach my $possibleid (@resorder) {
     if (exists($resids{$possibleid})) {      if (exists($resids{$possibleid})) {
  push(@neworder,$possibleid);   push(@neworder,$resids{$possibleid});
     }      }
  }   }
  $responseIdHash{$part}=\@neworder;   my @ids;
    my @type;
    foreach my $element (@neworder) {
       push (@ids,$responseIdHash{$part}->[$element]);
       push (@type,$responseTypeHash{$part}->[$element]);
    }
    $responseIdHash{$part}=\@ids;
    $responseTypeHash{$part}=\@type;
     }      }
  }   }
         #  
         # Reorder the response types  
         foreach my $partid (keys(%responseIdHash)) {  
             delete($responseTypeHash{$partid});  
             foreach my $respid (@{$responseIdHash{$partid}}) {  
                 push(@{$responseTypeHash{$partid}},  
                      $response_type_by_id{$respid});  
             }  
         }  
         $self->{RESPONSE_IDS} = \%responseIdHash;          $self->{RESPONSE_IDS} = \%responseIdHash;
         $self->{RESPONSE_TYPES} = \%responseTypeHash;          $self->{RESPONSE_TYPES} = \%responseTypeHash;
     }      }

Removed from v.1.285  
changed lines
  Added in v.1.286


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