--- loncom/homework/caparesponse/caparesponse.pm 2007/08/29 21:57:47 1.219 +++ loncom/homework/caparesponse/caparesponse.pm 2008/03/06 16:28:22 1.223 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # caparesponse definition # -# $Id: caparesponse.pm,v 1.219 2007/08/29 21:57:47 albertel Exp $ +# $Id: caparesponse.pm,v 1.223 2008/03/06 16:28:22 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -609,7 +609,6 @@ sub end_numericalresponse { my $part_id="$partid.$id"; if ($target eq 'analyze') { push (@{ $Apache::lonhomework::analyze{"parts"} },$part_id); - push (@{ $Apache::lonhomework::analyze{"$part_id.bubble_lines"} }, 1); $Apache::lonhomework::analyze{"$part_id.type"} = $tag; my (@incorrect)=&Apache::lonxml::get_param_var('incorrect',$parstack,$safeeval); if ($#incorrect eq 0) { @incorrect=(split(/,/,$incorrect[0])); } @@ -679,12 +678,12 @@ sub end_numericalresponse { #} } if ($high && $tag eq 'numericalresponse') { - $element.=' ['.$low.','.$high.']'; + $element.=': ['.$low.','.$high.']'; $tolline .= "[$low, $high]"; } if (defined($sighigh) && $tag eq 'numericalresponse') { if ($env{'form.answer_output_mode'} eq 'tex') { - $element.= " Sig $siglow - $sighigh"; + $element.= ": Sig $siglow - $sighigh"; } else { $element.= " Sig $siglow - $sighigh"; $sigline .= "[$siglow, $sighigh]"; @@ -704,7 +703,7 @@ sub end_numericalresponse { } } if ($target eq 'answer') { - $result.= &Apache::response::answer_part($tag,join(', ',@all_answer_info)); + $result.= &Apache::response::answer_part($tag,join('; ',@all_answer_info)); } } @@ -788,7 +787,16 @@ sub end_numericalresponse { } if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || $target eq 'tex' || $target eq 'analyze') { - &Apache::lonxml::increment_counter($increment); + if (($tag eq 'formularesponse') && ($target eq 'analyze')) { + my $type = &Apache::lonnet::EXT('resource.'.$partid.'_'.$id.'.type'); + if ($type eq 'exam') { + $increment = &Apache::response::repetition(); + } + } + &Apache::lonxml::increment_counter($increment,"$partid.$id"); + if ($target eq 'analyze') { + &Apache::lonhomework::set_bubble_lines(); + } } &Apache::response::end_response(); return $result; @@ -980,13 +988,23 @@ sub make_numerical_bubbles { $ind=&Math::Random::random_uniform_integer(1,0,$#factors); my $factor = $factors[$ind]; my @bubble_display; + my $answerfactor=$answer; + if ($answer==0) { + $answerfactor=&Math::Random::random_uniform_integer(1,1,100)/ + &Math::Random::random_uniform_integer(1,1,10); + } for ($ind=0;$ind<$number_of_bubbles;$ind++) { - $bubble_values[$ind] = $answer*($factor**($power-$powers[$#powers-$ind])); + $bubble_values[$ind] = $answerfactor*($factor**($power-$powers[$#powers-$ind])); $bubble_display[$ind] = &format_number($bubble_values[$ind], $format,$target,$safeeval); - } my $correct = $alphabet[$number_of_bubbles-$power]; + if ($answer==0) { + $correct='A'; + $bubble_values[0]=0; + $bubble_display[0] = &format_number($bubble_values[0], + $format,$target,$safeeval); + } &Math::Random::random_set_seed(@oldseed); return (\@bubble_values,\@bubble_display,$correct); } @@ -1228,7 +1246,11 @@ sub end_stringresponse { } if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || $target eq 'tex' || $target eq 'analyze') { - &Apache::lonxml::increment_counter(&Apache::response::repetition()); + &Apache::lonxml::increment_counter(&Apache::response::repetition(), + "$part.$id"); + if ($target eq 'analyze') { + &Apache::lonhomework::set_bubble_lines(); + } } &Apache::response::end_response; return $result;