--- loncom/homework/imageresponse.pm 2003/01/16 02:55:05 1.23 +++ loncom/homework/imageresponse.pm 2003/05/05 18:24:50 1.25 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # image click response style # -# $Id: imageresponse.pm,v 1.23 2003/01/16 02:55:05 albertel Exp $ +# $Id: imageresponse.pm,v 1.25 2003/05/05 18:24:50 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -26,7 +26,8 @@ # http://www.lon-capa.org/ # -#FIXME assumes multiple possbile submissions but only one is possible currently +#FIXME LATER assumes multiple possible submissions but only one is possible +#currently package Apache::imageresponse; use strict; @@ -96,17 +97,26 @@ sub whichfoils { } sub displayfoils { - my (@whichopt) = @_; + my ($target,@whichopt) = @_; my $result =''; my $name; my $temp=1; foreach $name (@whichopt) { - $result.=$Apache::response::foilgroup{"$name.text"}."
\n"; + $result.=$Apache::response::foilgroup{"$name.text"}; + if ($target eq 'tex') {$result.="\\vskip 0 mm \n";} else {$result.="
\n";} my $image=$Apache::response::foilgroup{"$name.image"}; if ($Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"} =~ /^correct/ ) { - $result.="
\n"; + if ($target eq 'tex') { + $result.=$Apache::response::foilgroup{"$name.image"}."\\vskip 0 mm \n"; + } else { + $result.="
\n"; + } } else { - $result.="
\n"; + if ($target eq 'tex') { + $result.=$Apache::response::foilgroup{"$name.image"}."\\vskip 0 mm \n"; + } else { + $result.="
\n"; + } } $temp++; } @@ -155,14 +165,14 @@ sub end_foilgroup { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result=''; my @whichopt; - if ($target eq 'web' || $target eq 'grade') { + if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') { my ($count,$max) = &getfoilcounts($parstack,$safeeval); if ($count>$max) { $count=$max } &Apache::lonxml::debug("Count is $count from $max"); @whichopt = &whichfoils($max); } - if ($target eq 'web') { - $result=&displayfoils(@whichopt); + if ($target eq 'web' || $target eq 'tex') { + $result=&displayfoils($target,@whichopt); } if ($target eq 'grade') { if ( defined $ENV{'form.submitted'}) { @@ -181,7 +191,7 @@ sub start_conceptgroup { sub end_conceptgroup { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; $Apache::imageresponse::conceptgroup=0; - if ($target eq 'web' || $target eq 'grade') { + if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') { if (defined(@{ $Apache::response::conceptgroup{'names'} })) { my @names = @{ $Apache::response::conceptgroup{'names'} }; my $pick=int(&Math::Random::random_uniform() * ($#names+1)); @@ -203,7 +213,7 @@ sub end_conceptgroup { $Apache::imageresponse::curname=''; sub start_foil { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; - if ($target eq 'web' || $target eq 'grade') { + if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') { my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval); if ($name eq '') { $name=$Apache::lonxml::curdepth; } if ( $Apache::imageresponse::conceptgroup @@ -224,13 +234,25 @@ sub end_foil { sub start_text { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; - if ($target eq 'web') { &Apache::lonxml::startredirection; } - return ''; + my $result=''; + if ($target eq 'web' || $target eq 'tex') { + &Apache::lonxml::startredirection; + } elsif ($target eq 'edit') { + my $descr=$$parser[$#$parser]->get_text("/text"); + $result=&Apache::edit::tag_start($target,$token,'Task Description'). + &Apache::edit::editfield($token->[1],$descr,'Text',60,2). + &Apache::edit::end_row().&Apache::edit::start_spanning_row(); + } elsif ($target eq "modified") { + my $bgimg=$$parser[$#$parser]->get_text("/text"); + $result=$token->[4].&Apache::edit::modifiedfield($token); + &Apache::lonxml::debug($result); + } + return $result; } sub end_text { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; - if ($target eq 'web') { + if ($target eq 'web' || $target eq 'tex') { my $name = $Apache::imageresponse::curname; if ( $Apache::imageresponse::conceptgroup && !&Apache::response::showallfoils() ) { @@ -244,15 +266,28 @@ sub end_text { sub start_image { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; - if ($target eq 'web' || $target eq 'tex') { &Apache::lonxml::startredirection; } - return ''; + my $result=''; + if ($target eq 'web' || $target eq 'tex') { + &Apache::lonxml::startredirection; + } elsif ($target eq 'edit') { + my $bgimg=$$parser[$#$parser]->get_text("/image"); + $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').' '; + $result.=&Apache::edit::search(undef,'textnode'). + &Apache::edit::end_row().&Apache::edit::start_spanning_row(); + } elsif ($target eq "modified") { + my $bgimg=$$parser[$#$parser]->get_text("/image"); + $result=$token->[4].&Apache::edit::modifiedfield($token); + &Apache::lonxml::debug($result); + } + return $result; } sub end_image { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; - my $currentstring = ''; + my $name = $Apache::imageresponse::curname; if ($target eq 'web') { - my $name = $Apache::imageresponse::curname; my $image = &Apache::lonxml::endredirection; &Apache::lonxml::debug("out is $image"); if ( $Apache::imageresponse::conceptgroup @@ -324,23 +359,35 @@ sub end_image { #where can we find the picture? if (-e $newsrc) { if ($path) { - $currentstring .= '\vskip 0 mm \noindent\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; + $Apache::response::foilgroup{"$name.image"} ='\vskip 0 mm \noindent\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; } } else { my $temp_file; my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat"; $temp_file = Apache::File->new('>>'.$filename); print $temp_file "$src\n"; - $currentstring .= '\vskip 0 mm \graphicspath{{/home/httpd/prtspool/}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; +$Apache::response::foilgroup{"$name.image"} ='\vskip 0 mm \graphicspath{{/home/httpd/prtspool/}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; } - } - return $currentstring; + } + return ''; } sub start_rectangle { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; - if ($target eq 'web' || $target eq 'grade') { &Apache::lonxml::startredirection; } - return ''; + my $result=''; + if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') { + &Apache::lonxml::startredirection; + } elsif ($target eq 'edit') { + my $coords=$$parser[$#$parser]->get_text("/rectangle"); + $result=&Apache::edit::tag_start($target,$token,'Rectangle'). + &Apache::edit::editline($token->[1],$coords,'Coordinate Pairs',40). + &Apache::edit::end_row().&Apache::edit::start_spanning_row(); + } elsif ($target eq "modified") { + my $coords=$$parser[$#$parser]->get_text("/rectangle"); + $result=$token->[4].&Apache::edit::modifiedfield($token); + &Apache::lonxml::debug($result); + } + return $result; } sub grade_rectangle { @@ -362,7 +409,7 @@ sub grade_rectangle { sub end_rectangle { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; - if ($target eq 'web' || $target eq 'grade') { + if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') { my $name = $Apache::imageresponse::curname; my $area = &Apache::lonxml::endredirection; &Apache::lonxml::debug("out is $area for $name");