--- loncom/homework/imageresponse.pm 2003/05/05 22:36:54 1.26 +++ loncom/homework/imageresponse.pm 2003/06/09 22:42:49 1.31 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # image click response style # -# $Id: imageresponse.pm,v 1.26 2003/05/05 22:36:54 albertel Exp $ +# $Id: imageresponse.pm,v 1.31 2003/06/09 22:42:49 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -51,10 +51,13 @@ sub start_imageresponse { } sub end_imageresponse { - &Apache::response::end_response; - pop @Apache::lonxml::namespace; - &Apache::lonxml::deregister('Apache::imageresponse',('foilgroup','foil','text','image','rectangle','conceptgroup')); - return ''; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; + &Apache::response::end_response; + pop @Apache::lonxml::namespace; + &Apache::lonxml::deregister('Apache::imageresponse',('foilgroup','foil','text','image','rectangle','conceptgroup')); + my $result; + if ($target eq 'edit') { $result=&Apache::edit::end_table(); } + return $result; } %Apache::response::foilgroup=(); @@ -103,8 +106,10 @@ sub displayfoils { my $temp=1; foreach $name (@whichopt) { $result.=$Apache::response::foilgroup{"$name.text"}; + &Apache::lonxml::debug("Text is $result"); if ($target eq 'tex') {$result.="\\vskip 0 mm \n";} else {$result.="
\n";} my $image=$Apache::response::foilgroup{"$name.image"}; + &Apache::lonxml::debug("image is $image"); if ($Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"} =~ /^correct/ ) { if ($target eq 'tex') { $result.=$Apache::response::foilgroup{"$name.image"}."\\vskip 0 mm \n"; @@ -134,7 +139,8 @@ sub gradefoils { $x=$ENV{"form.HWVAL_$id:$temp.x"}; $y=$ENV{"form.HWVAL_$id:$temp.y"}; &Apache::lonxml::debug("Got a x of $x and a y of $y for $name"); - if (defined(@{ $Apache::response::foilgroup{"$name.area"} })) { + if (defined($x) && defined($y) && + defined(@{ $Apache::response::foilgroup{"$name.area"} })) { my @areas = @{ $Apache::response::foilgroup{"$name.area"} }; my $grade="INCORRECT"; foreach my $area (@areas) { @@ -170,12 +176,11 @@ sub end_foilgroup { if ($count>$max) { $count=$max } &Apache::lonxml::debug("Count is $count from $max"); @whichopt = &whichfoils($max); - } elsif ($target eq 'web' || $target eq 'tex') { - $result=&displayfoils($target,@whichopt); - } elsif ($target eq 'grade') { - if ( defined $ENV{'form.submitted'}) { - &gradefoils(@whichopt); - } + if ($target eq 'web' || $target eq 'tex') { + $result=&displayfoils($target,@whichopt); + } elsif ($target eq 'grade') { + if ( defined $ENV{'form.submitted'}) { &gradefoils(@whichopt); } + } } elsif ($target eq 'edit') { $result=&Apache::edit::end_table(); } @@ -213,6 +218,16 @@ sub end_conceptgroup { return $result; } +sub insert_foil { + return ' + + + + + +'; +} + $Apache::imageresponse::curname=''; sub start_foil { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; @@ -281,6 +296,9 @@ sub start_image { &Apache::lonxml::startredirection; } elsif ($target eq 'edit') { my $bgimg=&Apache::lonxml::get_all_text('/image',$parser); + $Apache::edit::bgimgsrc=$bgimg; + $Apache::edit::bgimgsrcdepth=$Apache::lonxml::curdepth; + $result=&Apache::edit::tag_start($target,$token,'Clickable Image'). &Apache::edit::editline($token->[1],$bgimg,'Image Source File',40); $result.=&Apache::edit::browse(undef,'textnode').' '; @@ -356,8 +374,8 @@ sub end_image { $path = $1.'/'; } my $newsrc = $src; - $newsrc =~ s/(\.gif|\.jpg)$/\.eps/i; - $file=~s/(\.gif|\.jpg)$/\.eps/i; + $newsrc =~ s/(\.gif|\.jpg|\.jpeg)$/\.eps/i; + $file=~s/(\.gif|\.jpg|\.jpeg)$/\.eps/i; #do we have any specified size of the picture? my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval); my $TeXheight = &Apache::lonxml::get_param('TeXheight',$parstack,$safeeval); @@ -394,6 +412,7 @@ sub start_rectangle { my $coords=&Apache::lonxml::get_all_text('/rectangle',$parser); $result=&Apache::edit::tag_start($target,$token,'Rectangle'). &Apache::edit::editline($token->[1],$coords,'Coordinate Pairs',40). + &Apache::edit::entercoordpair(undef,'textnode'). &Apache::edit::end_row(); } elsif ($target eq "modified") { my $coords=&Apache::lonxml::get_all_text('/rectangle',$parser);