Diff for /loncom/homework/imageresponse.pm between versions 1.96 and 1.103

version 1.96, 2008/11/18 19:14:28 version 1.103, 2011/11/14 03:08:01
Line 179  sub end_imageresponse { Line 179  sub end_imageresponse {
           
     if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' ||       if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || 
  $target eq 'tex' || $target eq 'analyze') {   $target eq 'tex' || $target eq 'analyze') {
  &Apache::lonxml::increment_counter(&Apache::response::repetition(),           my $repetition = &Apache::response::repetition();
    &Apache::lonxml::increment_counter($repetition, 
    "$part_id.$response_id");     "$part_id.$response_id");
  if ($target eq 'analyze') {   if ($target eq 'analyze') {
     &Apache::lonhomework::set_bubble_lines();      &Apache::lonhomework::set_bubble_lines();
Line 187  sub end_imageresponse { Line 188  sub end_imageresponse {
   
     }      }
     &Apache::response::end_response();      &Apache::response::end_response();
   
     return $result;      return $result;
 }  }
   
 %Apache::response::foilgroup=();  %Apache::response::foilgroup=();
 sub start_foilgroup {  sub start_foilgroup {
       my ($target) = @_;
     %Apache::response::foilgroup=();      %Apache::response::foilgroup=();
     $Apache::imageresponse::conceptgroup=0;      $Apache::imageresponse::conceptgroup=0;
     &Apache::response::pushrandomnumber();      &Apache::response::pushrandomnumber(undef,$target);
     return '';      return '';
 }  }
   
Line 320  sub displayfoils { Line 321  sub displayfoils {
  my $image=$Apache::response::foilgroup{"$name.image"};   my $image=$Apache::response::foilgroup{"$name.image"};
  &Apache::lonxml::debug("image is $image");   &Apache::lonxml::debug("image is $image");
  if ( ($target eq 'web' || $target eq 'answer')    if ( ($target eq 'web' || $target eq 'answer') 
      && $image !~ /^http:/ ) {       && $image !~ /^https?\:/ ) {
     $image=&clean_up_image($image);      $image=&clean_up_image($image);
  }   }
  push(@images,$image);   push(@images,$image);
Line 353  sub displayfoils { Line 354  sub displayfoils {
  $temp++;   $temp++;
     }      }
     if ($target eq 'web') {      if ($target eq 'web') {
  &Apache::response::setup_prior_tries_hash(\&format_prior_response,          &get_prior_options(\@images,\@whichopt);
   [\@images,\@whichopt]);  
     }      }
     return $result;      return $result;
 }  }
   
   sub get_prior_options {
       my ($currimages,$curropt) = @_;
       return unless((ref($curropt) eq 'ARRAY') && 
                     (ref($currimages) eq 'ARRAY'));
       my $part = $Apache::inputtags::part;
       my $respid   = $Apache::inputtags::response[-1];
       foreach my $i (1..$Apache::lonhomework::history{'version'}) {
           my $partprefix = "$i:resource.$part";
           my $sub_key = "$partprefix.$respid.submission";
           next if (!exists($Apache::lonhomework::history{$sub_key}));
           my $type_key = "$partprefix.type";
           my @whichopt = ();
           my @images = ();
           if ($Apache::lonhomework::history{$type_key} eq 'randomizetry') {
               my $order_key = "$partprefix.$respid.foilorder";
               @whichopt = &Apache::lonnet::str2array($Apache::lonhomework::history{$order_key});
               if (@whichopt > 0) {
                   foreach my $name (@whichopt) {
                       my $image=$Apache::response::foilgroup{"$name.image"};
                       if ($image !~ /^https?\:/ ) {
                           $image=&clean_up_image($image);
                       }
                       push(@images,$image);
                   }
               }
           } else {
               @whichopt = @{$curropt};
               @images = @{$currimages};
           }
           my $submission = $Apache::lonhomework::history{$sub_key};
           my $output =  &format_prior_response('grade',$submission,
                                                [\@images,\@whichopt]);
           if (defined($output)) {
               $Apache::inputtags::submission_display{$sub_key} = $output;
           }
       }
   }
   
 sub format_prior_response {  sub format_prior_response {
     my ($mode,$answer,$other_data) = @_;      my ($mode,$answer,$other_data) = @_;
           
Line 386  sub display_answers { Line 424  sub display_answers {
  my $image=$Apache::response::foilgroup{"$name.image"};   my $image=$Apache::response::foilgroup{"$name.image"};
  &Apache::lonxml::debug("image is $image");   &Apache::lonxml::debug("image is $image");
  if ( ($target eq 'web' || $target eq 'answer')   if ( ($target eq 'web' || $target eq 'answer')
      && $image !~ /^http:/ ) {       && $image !~ /^https?\:/ ) {
     $image = &clean_up_image($image);      $image = &clean_up_image($image);
  }    } 
  my $token=&prep_image($image,'answeronly',$name);   my $token=&prep_image($image,'answeronly',$name);
Line 401  sub clean_up_image { Line 439  sub clean_up_image {
     my ($image)=@_;      my ($image)=@_;
     if ($image =~ /\s*<img\s*/) {      if ($image =~ /\s*<img\s*/) {
  ($image) = ($image =~ /src\s*=\s*[\"\']([^\"\']+)[\"\']/i);   ($image) = ($image =~ /src\s*=\s*[\"\']([^\"\']+)[\"\']/i);
  if ($image !~ /^http:/) {   if ($image !~ /^https?\:/) {
     $image=&Apache::lonnet::hreflocation('',$image);      $image=&Apache::lonnet::hreflocation('',$image);
  }   }
  if (!$image) {   if (!$image) {
Line 460  sub gradefoils { Line 498  sub gradefoils {
  }   }
  $temp++;   $temp++;
     }      }
       if ($Apache::lonhomework::type eq 'randomizetry') {
           $Apache::lonhomework::results{"resource.$partid.$id.foilorder"} = &Apache::lonnet::array2str(@whichopt);
       }
     my ($result) = &Apache::inputtags::finalizeawards(\@results,[]);      my ($result) = &Apache::inputtags::finalizeawards(\@results,[]);
     &Apache::lonxml::debug("Question is $result");      &Apache::lonxml::debug("Question is $result");
   
Line 467  sub gradefoils { Line 508  sub gradefoils {
     my %previous=      my %previous=
  &Apache::response::check_for_previous(&stringify_submission(\%response),   &Apache::response::check_for_previous(&stringify_submission(\%response),
       $part,$id);        $part,$id);
     if ($result       if ($result) { 
  && $Apache::lonhomework::type eq 'survey') { $result='SUBMITTED'; }   if ($Apache::lonhomework::type eq 'survey') { 
               $result='SUBMITTED';
           } elsif ($Apache::lonhomework::type eq 'surveycred') { 
               $result='SUBMITTED_CREDIT'; 
           } elsif ($Apache::lonhomework::type eq 'anonsurvey') { 
               $result='ANONYMOUS'; 
           } elsif ($Apache::lonhomework::type eq 'anonsurveycred') { 
               $result='ANONYMOUS_CREDIT'; 
           }
       }
   
     &Apache::response::handle_previous(\%previous,$result);      &Apache::response::handle_previous(\%previous,$result);
     $Apache::lonhomework::results{"resource.$part.$id.submission"}=      $Apache::lonhomework::results{"resource.$part.$id.submission"}=
  &stringify_submission(\%response);   &stringify_submission(\%response);
Line 479  sub gradefoils { Line 530  sub gradefoils {
 sub stringify_submission {  sub stringify_submission {
     my ($response) = @_;      my ($response) = @_;
     return &Apache::lonnet::hash2str(%{ $response });      return &Apache::lonnet::hash2str(%{ $response });
   
       
 }  }
   
 sub get_submission {  sub get_submission {
Line 517  sub end_foilgroup { Line 566  sub end_foilgroup {
   
  if ($target eq 'web' || $target eq 'tex') {   if ($target eq 'web' || $target eq 'tex') {
     $result=&displayfoils($target,@whichopt);      $result=&displayfoils($target,@whichopt);
               if ($Apache::lonhomework::type eq 'randomizetry') {
                   if ($target eq 'web') {
                       &get_prior_options($target,@whichopt);
                   }
               }
     $Apache::lonxml::post_evaluate=0;      $Apache::lonxml::post_evaluate=0;
  } elsif ($target eq 'grade') {   } elsif ($target eq 'grade') {
     if ( defined $env{'form.submitted'}) { &gradefoils(@whichopt); }      if ( defined $env{'form.submitted'}) { &gradefoils(@whichopt); }
Line 716  sub end_image { Line 770  sub end_image {
     my ($commentline, $restofstuff) = split(/\n/, $src);      my ($commentline, $restofstuff) = split(/\n/, $src);
     $graphinclude = $src;      $graphinclude = $src;
     $graphinclude =~ s/^$commentline//;      $graphinclude =~ s/^$commentline//;
  } else {   } elsif (!($src =~ /\\/)) {
     my ($path,$file) = &Apache::londefdef::get_eps_image($src);      my ($path,$file) = &Apache::londefdef::get_eps_image($src);
     my ($height_param,$width_param)=      my ($height_param,$width_param)=
  &Apache::londefdef::image_size($src,0.3,$parstack,$safeeval);   &Apache::londefdef::image_size($src,0.3,$parstack,$safeeval);
     $graphinclude = '\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'}';      $graphinclude = '\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'}';
    } else {
       $graphinclude = $src;   # Already fully formed.
  }   }
  $Apache::response::foilgroup{"$name.image"} ='\vskip 0 mm \noindent '.$graphinclude;   $Apache::response::foilgroup{"$name.image"} ='\vskip 0 mm \noindent '.$graphinclude;
     }       } 

Removed from v.1.96  
changed lines
  Added in v.1.103


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