version 1.76, 2006/03/09 01:37:39
|
version 1.82, 2007/04/18 01:06:22
|
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 70 sub end_imageresponse {
|
Line 73 sub end_imageresponse {
|
my $result; |
my $result; |
if ($target eq 'edit') { |
if ($target eq 'edit') { |
$result=&Apache::edit::end_table(); |
$result=&Apache::edit::end_table(); |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex' |
|
&& $Apache::lonhomework::type eq 'exam') { |
$result=&Apache::inputtags::exam_score_line($target); |
$result=&Apache::inputtags::exam_score_line($target); |
} |
} |
|
|
Line 128 sub prep_image {
|
Line 132 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 166 sub prep_image {
|
Line 179 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 199 sub displayfoils {
|
Line 211 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 207 sub displayfoils {
|
Line 220 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 229 sub displayfoils {
|
Line 243 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 342 sub end_foilgroup {
|
Line 371 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') { |