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

version 1.84, 2007/08/29 10:07:42 version 1.85, 2007/09/25 23:16:13
Line 132  sub whichfoils { Line 132  sub whichfoils {
   
 sub prep_image {  sub prep_image {
     my ($image,$mode,$name)=@_;      my ($image,$mode,$name)=@_;
     my $part=$Apache::inputtags::part;  
     my $respid=$Apache::inputtags::response['-1'];      my ($x,$y)= &get_submission($name);
     my ($x,$y)=split(/:/,$Apache::lonhomework::history{"resource.$part.$respid.submission"});      &Apache::lonxml::debug("for $name drawing click at $x and $y");
     &draw_image($mode,$image,$x,$y,$Apache::response::foilgroup{"$name.area"});      &draw_image($mode,$image,$x,$y,$Apache::response::foilgroup{"$name.area"});
 }  }
   
Line 211  sub draw_image { Line 211  sub draw_image {
 sub displayfoils {  sub displayfoils {
     my ($target,@whichopt) = @_;      my ($target,@whichopt) = @_;
     my $result ='';      my $result ='';
     my $name;  
     my $temp=1;      my $temp=1;
     my @images;      my @images;
     foreach $name (@whichopt) {      foreach my $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");
  if ($target eq 'tex') {$result.="\\vskip 0 mm \n";} else {$result.="<br />\n";}   if ($target eq 'tex') {$result.="\\vskip 0 mm \n";} else {$result.="<br />\n";}
Line 236  sub displayfoils { Line 235  sub displayfoils {
     if ($target eq 'tex') {      if ($target eq 'tex') {
  $result.=$Apache::response::foilgroup{"$name.image"}."\\vskip 0 mm \n";   $result.=$Apache::response::foilgroup{"$name.image"}."\\vskip 0 mm \n";
     } else {      } else {
  my $id=$Apache::inputtags::response['-1'];   my $respid=$Apache::inputtags::response['-1'];
  my $token=&prep_image($image);   my $token=&prep_image($image,'submission',$name);
  my $temp=1;   my $id = "HWVAL_$respid:$temp";
  $result.="<input type=\"image\" name=\"HWVAL_$id:$temp\" ".   $result.='<img onclick="image_response_click(\''.$id.'\',event);"
     "src=\"/adm/randomlabel.png?token=$token\" /><br />\n";                         src="/adm/randomlabel.png?token='.$token.'" 
                                  id="imageresponse_'.$id.'"
                                   />'.
          '<br />'.
          '<input type="hidden" name="token_'.$id.'" value="'.$token.'" />'.
          '<input type="hidden" name="'.$id.'" value="'.
          join(':',&get_submission($name)).'" />';
     }      }
  }   }
  $temp++;   $temp++;
     }      }
     if ($target eq 'web') {      if ($target eq 'web') {
  &Apache::response::setup_prior_tries_hash(\&format_prior_response,   &Apache::response::setup_prior_tries_hash(\&format_prior_response,
   [\@images]);    [\@images,\@whichopt]);
     }      }
     return $result;      return $result;
 }  }
   
 sub format_prior_response {  sub format_prior_response {
     my ($mode,$answer,$other_data) = @_;      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\" />";  
           
       my $result;
   
       # make a copy of the data in the refs
       my @images = @{ $other_data->[0] };
       my @foils = @{ $other_data->[1] };
       foreach my $name (@foils) {
    my $image = pop(@images);
    my ($x,$y) = &get_submission($name,$answer);
    my $token = &draw_image('submission',$image,$x,$y);
    $result .=
       '<img class="LC_prior_image"
                     src="/adm/randomlabel.png?token='.$token.'" /><br />';
       }
       return $result;
 }  }
   
 sub display_answers {  sub display_answers {
Line 313  sub gradefoils { Line 326  sub gradefoils {
  return;   return;
     }      }
           
     my $x;      my @results;
     my $y;  
     my $result;  
     my $temp=1;      my $temp=1;
       my %response;
     foreach my $name (@whichopt) {      foreach my $name (@whichopt) {
  $x=$env{"form.HWVAL_$id:$temp.x"};   my ($x,$y) = split(':',$env{"form.HWVAL_$id:$temp"});
  $y=$env{"form.HWVAL_$id:$temp.y"};   $response{$name} = $env{"form.HWVAL_$id:$temp"};
  &Apache::lonxml::debug("Got a x of $x and a y of $y for $name");   &Apache::lonxml::debug("Got a x of $x and a y of $y for $name");
  if (defined($x) && defined($y) &&   if (defined($x) && defined($y) &&
     defined(@{ $Apache::response::foilgroup{"$name.area"} })) {      defined(@{ $Apache::response::foilgroup{"$name.area"} })) {
Line 340  sub gradefoils { Line 352  sub gradefoils {
  if ($grade eq 'APPROX_ANS') { last; }   if ($grade eq 'APPROX_ANS') { last; }
     }      }
     &Apache::lonxml::debug("Foil was $grade");      &Apache::lonxml::debug("Foil was $grade");
     if ($grade eq 'INCORRECT') { $result= 'INCORRECT'; }      push(@results, $grade)
     if (($grade eq 'APPROX_ANS') && ($result ne 'APPROX_ANS')) { $result=$grade; }   } else {
     &Apache::lonxml::debug("Question is $result");      push(@results, 'MISSING_ANSWER')
     $temp++;  
  }   }
    $temp++;
     }      }
     my $responsestr="$x:$y";      my ($result) = &Apache::inputtags::finalizeawards(\@results,[]);
       &Apache::lonxml::debug("Question is $result");
   
     my $part=$Apache::inputtags::part;      my $part=$Apache::inputtags::part;
     my %previous=&Apache::response::check_for_previous($responsestr,$part,$id);      my %previous=
    &Apache::response::check_for_previous(&stringify_submission(\%response),
         $part,$id);
     if ($result       if ($result 
  && $Apache::lonhomework::type eq 'survey') { $result='SUBMITTED'; }   && $Apache::lonhomework::type eq 'survey') { $result='SUBMITTED'; }
     &Apache::response::handle_previous(\%previous,$result);      &Apache::response::handle_previous(\%previous,$result);
     $Apache::lonhomework::results{"resource.$part.$id.submission"}=$responsestr;      $Apache::lonhomework::results{"resource.$part.$id.submission"}=
    &stringify_submission(\%response);
     $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$result;      $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$result;
     return;      return;
 }  }
   
   sub stringify_submission {
       my ($response) = @_;
       return
    join("\0",map {$_."\1".$response->{$_}} (sort(keys(%{ $response }))));
       
   }
   
   sub get_submission {
       my ($name,$string) = @_;
   
       if (!defined($string)) {
    my $part=$Apache::inputtags::part;
    my $respid=$Apache::inputtags::response['-1'];
       $string = 
       $Apache::lonhomework::history{"resource.$part.$respid.submission"};
       }
   
       if ($string !~ /\0/) {
    return split(':',$string);
       } else {
    my %response = map { split("\1",$_,2) } (split("\0",$string));
    return split(':',$response{$name});
       }
   }
   
 sub end_foilgroup {  sub end_foilgroup {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result='';      my $result='';

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


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