Diff for /loncom/homework/imageresponse.pm between versions 1.77 and 1.84

version 1.77, 2006/05/18 22:02:03 version 1.84, 2007/08/29 10:07:42
Line 37  use Apache::londefdef(); Line 37  use Apache::londefdef();
 use Apache::Constants qw(:common :http);  use Apache::Constants qw(:common :http);
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnet;  use Apache::lonnet;
   use lib '/home/httpd/lib/perl/';
   use LONCAPA;
    
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::imageresponse',('imageresponse'));      &Apache::lonxml::register('Apache::imageresponse',('imageresponse'));
Line 57  sub start_imageresponse { Line 60  sub start_imageresponse {
     } elsif ($target eq 'analyze') {      } elsif ($target eq 'analyze') {
  my $part_id="$Apache::inputtags::part.$id";   my $part_id="$Apache::inputtags::part.$id";
  push (@{ $Apache::lonhomework::analyze{"parts"} },$part_id);   push (@{ $Apache::lonhomework::analyze{"parts"} },$part_id);
    push (@{ $Apache::lonhomework::analyze{"$part_id.bubble_lines"} },
         1);
     }      }
     return $result;      return $result;
 }  }
Line 129  sub prep_image { Line 134  sub prep_image {
     my ($image,$mode,$name)=@_;      my ($image,$mode,$name)=@_;
     my $part=$Apache::inputtags::part;      my $part=$Apache::inputtags::part;
     my $respid=$Apache::inputtags::response['-1'];      my $respid=$Apache::inputtags::response['-1'];
       my ($x,$y)=split(/:/,$Apache::lonhomework::history{"resource.$part.$respid.submission"});
       &draw_image($mode,$image,$x,$y,$Apache::response::foilgroup{"$name.area"});
   }
   
   sub draw_image {
       my ($mode,$image,$x,$y,$areas) = @_;
   
     my $id=&Apache::loncommon::get_cgi_id();      my $id=&Apache::loncommon::get_cgi_id();
   
     my (%x,$i);      my (%x,$i);
     $x{"cgi.$id.BGIMG"}=&Apache::lonnet::escape($image);      $x{"cgi.$id.BGIMG"}=&escape($image);
     my ($x,$y)=split(/:/,$Apache::lonhomework::history{"resource.$part.$respid.submission"});  
     #draws 2 xs on the image at the clicked location      #draws 2 xs on the image at the clicked location
     #one in white and then one in red on top of the one in white      #one in white and then one in red on top of the one in white
   
     if (defined($x)    && $x =~/\S/       if (defined($x)    && $x =~/\S/ 
  && defined($y) && $y =~/\S/    && defined($y) && $y =~/\S/ 
  && !&Apache::response::show_answer()   && ($mode eq 'submission' || !&Apache::response::show_answer())
  && $mode ne 'answeronly') {   && $mode ne 'answeronly') {
  my $length = 6;   my $length = 6;
  my $width = 1;   my $width = 1;
Line 167  sub prep_image { Line 181  sub prep_image {
     if ($mode eq 'answer' || $mode eq 'answeronly') {      if ($mode eq 'answer' || $mode eq 'answeronly') {
  my $width = 1;   my $width = 1;
  my $extrawidth = 2;   my $extrawidth = 2;
  my @areas = @{ $Apache::response::foilgroup{"$name.area"} };   foreach my $area (@{ $areas }) {
  foreach my $area (@areas) {  
     if ($area=~/^rectangle:/) {      if ($area=~/^rectangle:/) {
  $x{"cgi.$id.OBJTYPE"}.='RECTANGLE:';   $x{"cgi.$id.OBJTYPE"}.='RECTANGLE:';
  $i=$x{"cgi.$id.OBJCOUNT"}++;   $i=$x{"cgi.$id.OBJCOUNT"}++;
Line 200  sub displayfoils { Line 213  sub displayfoils {
     my $result ='';      my $result ='';
     my $name;      my $name;
     my $temp=1;      my $temp=1;
       my @images;
     foreach $name (@whichopt) {      foreach $name (@whichopt) {
  $result.=$Apache::response::foilgroup{"$name.text"};   $result.=$Apache::response::foilgroup{"$name.text"};
  &Apache::lonxml::debug("Text is $result");   &Apache::lonxml::debug("Text is $result");
Line 208  sub displayfoils { Line 222  sub displayfoils {
  &Apache::lonxml::debug("image is $image");   &Apache::lonxml::debug("image is $image");
  if ( $target eq 'web' && $image !~ /^http:/ ) {   if ( $target eq 'web' && $image !~ /^http:/ ) {
     $image=&clean_up_image($image);      $image=&clean_up_image($image);
  }    }
    push(@images,$image);
  &Apache::lonxml::debug("image is $image");   &Apache::lonxml::debug("image is $image");
  if ( &Apache::response::show_answer() ) {   if ( &Apache::response::show_answer() ) {
     if ($target eq 'tex') {      if ($target eq 'tex') {
Line 230  sub displayfoils { Line 245  sub displayfoils {
  }   }
  $temp++;   $temp++;
     }      }
       if ($target eq 'web') {
    &Apache::response::setup_prior_tries_hash(\&format_prior_response,
     [\@images]);
       }
     return $result;      return $result;
 }  }
   
   sub format_prior_response {
       my ($mode,$answer,$other_data) = @_;
       my ($x,$y)=split(/:/,$answer);
       my $images = $other_data->[0];
   
       my $token = &draw_image('submission',$images->[0],$x,$y);
   
       return "<img class=\"LC_prior_image\" src=\"/adm/randomlabel.png?token=$token\" />";
       
   }
   
 sub display_answers {  sub display_answers {
     my ($target,$whichopt)=@_;      my ($target,$whichopt)=@_;
   
Line 343  sub end_foilgroup { Line 373  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);
       $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); }
  } elsif ( $target eq 'analyze') {   } elsif ( $target eq 'analyze') {
Line 476  sub end_text { Line 507  sub end_text {
 sub start_image {  sub start_image {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result='';      my $result='';
       my $only = join(',',&Apache::loncommon::filecategorytypes('Pictures'));
     if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze'      if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze'
  || $target eq 'answer') {    || $target eq 'answer') { 
  &Apache::lonxml::startredirection;    &Apache::lonxml::startredirection; 
Line 486  sub start_image { Line 518  sub start_image {
   
  $result=&Apache::edit::tag_start($target,$token,'Clickable Image').   $result=&Apache::edit::tag_start($target,$token,'Clickable Image').
     &Apache::edit::editline($token->[1],$bgimg,'Image Source File',40);      &Apache::edit::editline($token->[1],$bgimg,'Image Source File',40);
  $result.=&Apache::edit::browse(undef,'textnode').' ';   $result.=&Apache::edit::browse(undef,'textnode',undef,$only).' ';
  $result.=&Apache::edit::search(undef,'textnode').   $result.=&Apache::edit::search(undef,'textnode').
     &Apache::edit::end_row();      &Apache::edit::end_row();
     } elsif ($target eq "modified") {      } elsif ($target eq "modified") {

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


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