--- loncom/homework/imageresponse.pm 2003/11/10 23:29:27 1.40
+++ loncom/homework/imageresponse.pm 2003/11/11 00:39:33 1.42
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# image click response style
#
-# $Id: imageresponse.pm,v 1.40 2003/11/10 23:29:27 albertel Exp $
+# $Id: imageresponse.pm,v 1.42 2003/11/11 00:39:33 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -104,41 +104,49 @@ sub whichfoils {
}
sub prep_image {
- my ($image)=@_;
+ my ($image,$mode,$name)=@_;
my $part=$Apache::inputtags::part;
- my $id=$Apache::inputtags::response['-1'];
- my $token=$Apache::lonxml::curdepth.'_'.$$;
- my $args="BGIMG=".$image;
- &Apache::lonxml::debug("args is $args image is $image");
- my ($x,$y)=split(/:/,$Apache::lonhomework::history{"resource.$part.$id.submission"});
+ my $respid=$Apache::inputtags::response['-1'];
+ my $id=&Apache::loncommon::get_cgi_id();
+ my %x;
+ $x{"cgi.$id.BGIMG"}=$image;
+ my ($x,$y)=split(/:/,$Apache::lonhomework::history{"resource.$part.$respid.submission"});
#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
if (defined($x) && defined($y)) {
- $args.="&LINECOUNT=4";
+ $x{"cgi.$id.LINECOUNT"}=4;
my $length = 6;
my $width = 1;
my $extrawidth = 2;
- $args.="&LINEW0=".($width+$extrawidth);
- $args.="&LINEC0=FFFFFF";
- $args.="&LINEX10=".($x-$length)."&LINEY10=".($y-$length);
- $args.="&LINEX20=".($x+$length)."&LINEY20=".($y+$length);
- $args.="&LINEW1=".($width+$extrawidth);
- $args.="&LINEC1=FFFFFF";
- $args.="&LINEX11=".($x-$length)."&LINEY11=".($y+$length);
- $args.="&LINEX21=".($x+$length)."&LINEY21=".($y-$length);
- $args.="&LINEW2=$width";
- $args.="&LINEC2=FF0000";
- $args.="&LINEX12=".($x-$length)."&LINEY12=".($y-$length);
- $args.="&LINEX22=".($x+$length)."&LINEY22=".($y+$length);
- $args.="&LINEW3=$width";
- $args.="&LINEC3=FF0000";
- $args.="&LINEX13=".($x-$length)."&LINEY13=".($y+$length);
- $args.="&LINEX23=".($x+$length)."&LINEY23=".($y-$length);
+ $x{"cgi.$id.LINE0"}=
+ join(':',(($x-$length),($y-$length),($x+$length),($y+$length),
+ "FFFFFF",($width+$extrawidth)));
+ $x{"cgi.$id.LINE1"}=
+ join(':',(($x-$length),($y+$length),($x+$length),($y-$length),
+ "FFFFFF",($width+$extrawidth)));
+ $x{"cgi.$id.LINE2"}=
+ join(':',(($x-$length),($y-$length),($x+$length),($y+$length),
+ "FF0000",($width)));
+ $x{"cgi.$id.LINE3"}=
+ join(':',(($x-$length),($y+$length),($x+$length),($y-$length),
+ "FF0000",($width)));
}
- &Apache::lonxml::debug("args is $args image is $image");
- &Apache::lonnet::appenv(("imagerequest.$token"=>
- &Apache::lonnet::escape($args)));
- return $token;
+ if ($mode eq 'answer') {
+ my $width = 1;
+ my $extrawidth = 2;
+ my @areas = @{ $Apache::response::foilgroup{"$name.area"} };
+ foreach my $area (@areas) {
+ my ($x1,$y1,$x2,$y2)=
+ ($area=~m/rectangle:\(([0-9]+),([0-9]+)\)\-\(([0-9]+),([0-9]+)\)/);
+ my $i=$x{"cgi.$id.BOXCOUNT"}++;
+ $x{"cgi.$id.BOX$i"}=join(':',($x1,$y1,$x2,$y2,"FFFFFF",
+ ($width+$extrawidth)));
+ $i=$x{"cgi.$id.BOXCOUNT"}++;
+ $x{"cgi.$id.BOX$i"}=join(':',($x1,$y1,$x2,$y2,"00FF00",$width));
+ }
+ }
+ &Apache::lonnet::appenv(%x);
+ return $id;
}
sub displayfoils {
@@ -163,7 +171,7 @@ sub displayfoils {
if ($target eq 'tex') {
$result.=$Apache::response::foilgroup{"$name.image"}."\\vskip 0 mm \n";
} else {
- my $token=&prep_image($image);
+ my $token=&prep_image($image,'answer',$name);
$result.="
\n";
}
} else {