--- loncom/homework/imageresponse.pm 2004/03/15 22:09:52 1.52 +++ loncom/homework/imageresponse.pm 2005/01/31 23:09:29 1.58.2.2 @@ -2,7 +2,7 @@ # The LearningOnline Network with CAPA # image click response style # -# $Id: imageresponse.pm,v 1.52 2004/03/15 22:09:52 albertel Exp $ +# $Id: imageresponse.pm,v 1.58.2.2 2005/01/31 23:09:29 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -75,7 +75,7 @@ sub end_imageresponse { sub start_foilgroup { %Apache::response::foilgroup=(); $Apache::imageresponse::conceptgroup=0; - &Apache::response::setrandomnumber(); + &Apache::response::pushrandomnumber(); return ''; } @@ -85,7 +85,7 @@ sub getfoilcounts { my $max = &Apache::lonxml::get_param('max',$parstack,$safeeval,'-2'); # +1 since instructors will count from 1 my $count = $#{ $Apache::response::foilgroup{'names'} }+1; - if (&Apache::response::showallfoils()) { $max=$count; } + #if (&Apache::response::showallfoils()) { $max=$count; } return ($count,$max); } @@ -97,11 +97,11 @@ sub whichfoils { while ((($#whichopt+1) < $max) && ($#names > -1)) { &Apache::lonxml::debug("Have $#whichopt max is $max"); my $aopt; - if (&Apache::response::showallfoils()) { - $aopt=0; - } else { +# if (&Apache::response::showallfoils()) { +# $aopt=0; +# } else { $aopt=int(&Math::Random::random_uniform() * ($#names+1)); - } +# } &Apache::lonxml::debug("From $#names elms, picking $aopt"); $aopt=splice(@names,$aopt,1); &Apache::lonxml::debug("Picked $aopt"); @@ -120,7 +120,7 @@ sub prep_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) && $x=~/\S/ && defined($y) && $y =~/\S/) { + if (defined($x) && $x=~/\S/ && defined($y) && $y =~/\S/ && !&Apache::response::show_answer()) { my $length = 6; my $width = 1; my $extrawidth = 2; @@ -270,8 +270,14 @@ sub gradefoils { $temp++; } } - $Apache::lonhomework::results{"resource.$Apache::inputtags::part.$id.submission"}="$x:$y"; - $Apache::lonhomework::results{"resource.$Apache::inputtags::part.$id.awarddetail"}=$result; + my $responsestr="$x:$y"; + my $part=$Apache::inputtags::part; + my %previous=&Apache::response::check_for_previous($responsestr,$part,$id); + if ($result + && $Apache::lonhomework::type eq 'survey') { $result='SUBMITTED'; } + &Apache::response::handle_previous(\%previous,$result); + $Apache::lonhomework::results{"resource.$part.$id.submission"}=$responsestr; + $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$result; return ''; } @@ -296,6 +302,7 @@ sub end_foilgroup { } elsif ($target eq 'edit') { $result=&Apache::edit::end_table(); } + &Apache::response::poprandomnumber(); return $result; } @@ -343,7 +350,8 @@ sub start_foil { } $Apache::response::foilnames{$name}++; if ( $Apache::imageresponse::conceptgroup - && !&Apache::response::showallfoils()) { + #&& !&Apache::response::showallfoils() + ) { push(@{ $Apache::response::conceptgroup{'names'} }, $name); } else { push(@{ $Apache::response::foilgroup{'names'} }, $name); @@ -384,7 +392,8 @@ sub end_text { if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { my $name = $Apache::imageresponse::curname; if ( $Apache::imageresponse::conceptgroup - && !&Apache::response::showallfoils() ) { + #&& !&Apache::response::showallfoils() + ) { $Apache::response::conceptgroup{"$name.text"} = &Apache::lonxml::endredirection; } else { $Apache::response::foilgroup{"$name.text"} = &Apache::lonxml::endredirection; @@ -424,7 +433,8 @@ sub end_image { my $image = &Apache::lonxml::endredirection; &Apache::lonxml::debug("original image is $image"); if ( $Apache::imageresponse::conceptgroup - && !&Apache::response::showallfoils()) { + #&& !&Apache::response::showallfoils() + ) { $Apache::response::conceptgroup{"$name.image"} = $image; } else { $Apache::response::foilgroup{"$name.image"} = $image; @@ -432,7 +442,8 @@ sub end_image { } elsif ($target eq 'analyze') { my $image = &Apache::lonxml::endredirection; if ( $Apache::imageresponse::conceptgroup - && !&Apache::response::showallfoils()) { + #&& !&Apache::response::showallfoils() + ) { $Apache::response::conceptgroup{"$name.image"} = $image; } else { $Apache::response::foilgroup{"$name.image"} = $image; @@ -499,6 +510,7 @@ sub end_image { } elsif ($width ne '') { $width_param = $width*$scaling; } + $width_param=&Apache::randomlabel::adjust_textwidth($width_param); #where can we find the picture? if (-e $newsrc) { if ($path) { @@ -551,9 +563,11 @@ sub end_rectangle { $target eq 'analyze') { my $name = $Apache::imageresponse::curname; my $area = &Apache::lonxml::endredirection; + $area=~s/\s//g; &Apache::lonxml::debug("out is $area for $name"); if ( $Apache::imageresponse::conceptgroup - && !&Apache::response::showallfoils()) { + #&& !&Apache::response::showallfoils() + ) { push @{ $Apache::response::conceptgroup{"$name.area"} },"rectangle:$area"; } else { push @{ $Apache::response::foilgroup{"$name.area"} },"rectangle:$area"; @@ -633,7 +647,8 @@ sub end_polygon { $area=~s/\s*//g; &Apache::lonxml::debug("out is $area for $name"); if ( $Apache::imageresponse::conceptgroup - && !&Apache::response::showallfoils()) { + #&& !&Apache::response::showallfoils() + ) { push @{ $Apache::response::conceptgroup{"$name.area"} },"polygon:$area"; } else { push @{ $Apache::response::foilgroup{"$name.area"} },"polygon:$area";