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=''; |