Diff for /loncom/homework/imageresponse.pm between versions 1.93 and 1.99

version 1.93, 2008/03/12 02:46:53 version 1.99, 2010/02/28 23:37:44
Line 29 Line 29
 #FIXME LATER assumes multiple possible submissions but only one is possible   #FIXME LATER assumes multiple possible submissions but only one is possible 
 #currently  #currently
   
   
   =head1 NAME
   
   Apache::imageresponse
   
   =head1 SYNOPSIS
   
   Coordinates the response to clicking an image.
   
   This is part of the LearningOnline Network with CAPA project
   described at http://www.lon-capa.org.
   
   =head1 SUBROUTINES
   
   =over
   
   =item start_imageresponse()
   
   =item end_imageresponse()
   
   =item start_foilgroup()
   
   =item getfoilcounts()
   
   =item whichfoils()
   
   =item prep_image()
   
   =item draw_image()
   
   =item displayfoils()
   
   =item format_prior_response()
   
   =item display_answers()
   
   =item clean_up_image()
   
   =item gradefoils()
   
   =item stringify_submission()
   
   =item get_submission()
   
   =item end_foilgroup()
   
   =item start_conceptgroup()
   
   =item end_conceptgroup()
   
   =item insert_foil()
   
   =item start_foil()
   
   =item end_foil()
   
   =item start_text()
   
   =item end_text()
   
   =item start_image()
   
   =item end_image()
   
   =item start_rectangle()
   
   =item grade_rectangle()
   
   =item end_rectangle()
   
   =item start_polygon()
   
   =item grade_polygon()
   
   =item end_polygon()
   
   =back
   
   =cut
   
   
 package Apache::imageresponse;  package Apache::imageresponse;
 use strict;  use strict;
 use Image::Magick();  use Image::Magick();
Line 106  sub end_imageresponse { Line 187  sub end_imageresponse {
   
     }      }
     &Apache::response::end_response();      &Apache::response::end_response();
   
     return $result;      return $result;
 }  }
   
Line 239  sub displayfoils { Line 319  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 305  sub display_answers { Line 385  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 320  sub clean_up_image { Line 400  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 367  sub gradefoils { Line 447  sub gradefoils {
  } elsif ($1 eq 'polygon') {   } elsif ($1 eq 'polygon') {
     $grade=&grade_polygon($area,$x,$y);      $grade=&grade_polygon($area,$x,$y);
  } else {   } else {
     &Apache::lonxml::error("Unknown area style $area");      &Apache::lonxml::error(&mt('Unknown area style [_1]',$area));
  }   }
  &Apache::lonxml::debug("Area said $grade");   &Apache::lonxml::debug("Area said $grade");
  if ($grade eq 'APPROX_ANS') { last; }   if ($grade eq 'APPROX_ANS') { last; }
Line 386  sub gradefoils { Line 466  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 494  sub start_foil { Line 584  sub start_foil {
  $target eq 'analyze' || $target eq 'answer') {   $target eq 'analyze' || $target eq 'answer') {
  my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval);   my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval);
  if ($name eq "") {   if ($name eq "") {
     &Apache::lonxml::warning("Foils without names exist. This can cause problems to malfunction.");      &Apache::lonxml::warning(&mt('Foils without names exist. This can cause problems to malfunction.'));
     $name=$Apache::lonxml::curdepth;      $name=$Apache::lonxml::curdepth;
  }   }
  if (defined($Apache::response::foilnames{$name})) {   if (defined($Apache::response::foilnames{$name})) {
     &Apache::lonxml::error(&mt("Foil name <b><tt>[_1]</tt></b> appears more than once. Foil names need to be unique.",$name));      &Apache::lonxml::error(&mt("Foil name [_1] appears more than once. Foil names need to be unique."
                                         ,'<b><tt>'.$name.'</tt></b>'));
  }   }
  $Apache::response::foilnames{$name}++;   $Apache::response::foilnames{$name}++;
  if ( $Apache::imageresponse::conceptgroup   if ( $Apache::imageresponse::conceptgroup
Line 634  sub end_image { Line 725  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.93  
changed lines
  Added in v.1.99


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.