--- loncom/homework/caparesponse/caparesponse.pm 2012/02/10 00:25:53 1.251 +++ loncom/homework/caparesponse/caparesponse.pm 2016/08/09 23:43:45 1.258 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # caparesponse definition # -# caparesponse.pm,v 1.249.8.2 2012/02/04 20:40:15 foxr +# $Id: caparesponse.pm,v 1.258 2016/08/09 23:43:45 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -456,7 +456,6 @@ sub check_submission { my ($result,@msgs) = &Apache::run::run("&caparesponse_check_list()",$safeeval); &Apache::lonxml::debug("checking $name $result with $response took ".&Time::HiRes::tv_interval($t0)); - &Apache::lonxml::debug('msgs are '.join(':',@msgs)); my ($awards)=split(/:/,$result); my @awards= split(/,/,$awards); @@ -643,12 +642,7 @@ sub end_numericalresponse { } } } - if (($target eq 'web') && ($tag eq 'formularesponse') - && ($Apache::lonhomework::type ne 'exam') && ($Apache::inputtags::status['-1'] eq 'CAN_ANSWER') - && (&Apache::lonnet::EXT('resource.'.$partid.'_'.$id.'.turnoffeditor') ne 'yes')) { - $result.=&Apache::response::edit_mathresponse_button($id,"HWVAL_$id"); - } - + &Apache::response::setup_prior_tries_hash(\&format_prior_response_numerical); } elsif ($target eq 'edit') { $result.=''.&Apache::edit::end_table; @@ -796,7 +790,10 @@ sub end_numericalresponse { $tag,$parstack, $safeeval,1); $error=&mt("Computer's answer is incorrect ([_1]).",'"'.join(', ',@$response).'"').' '; - if ($sigline ne '') { + if ($ad eq 'UNIT_INVALID_STUDENT') { + $error.=&mt('Unable to interpret units. Computer reads units as "[_1]".',$msg).' '. + &mt('The unit attribute in the numericalresponse item needs to be a supported physical unit.'); + } elsif ($sigline ne '') { $error.=&mt('It is likely that the tolerance range [_1] or significant figures [_2] need to be adjusted.',$tolline,$sigline); } else { $error.=&mt('It is likely that the tolerance range [_1] needs to be adjusted.',$tolline); @@ -897,7 +894,7 @@ sub get_table_sizes { my $cell_width=0; foreach my $member (@$rbubble_values) { my $cell_width_real=0; - if ($member=~/(\+|-)?(\d*)\.?(\d*)\s*\$?\\times\s*10\^{(\+|-)?(\d+)}\$?/) { + if ($member=~/(\+|-)?(\d*)\.?(\d*)\s*\$?\\times\s*10\^\{(\+|-)?(\d+)}\$?/) { $cell_width_real=(length($2)+length($3)+length($5)+7)*$scale; } elsif ($member=~/(\d*)\.?(\d*)(E|e)(\+|-)?(\d*)/) { $cell_width_real=(length($1)+length($2)+length($5)+9)*$scale; @@ -970,6 +967,15 @@ sub make_numerical_bubbles { my $number_of_bubbles = &Apache::response::get_response_param($part.'_'.$id,'numbubbles',8); + # + # Fixes for BZ 6519 - number of bubbles <= 0 or non-integer. + # + $number_of_bubbles = int($number_of_bubbles + 0.5); + if ($number_of_bubbles <= 0) { + $number_of_bubbles = 8; + } + + my ($format)=&Apache::lonxml::get_param_var('format',$parstack,$safeeval); my $name = (exists($answer{$tag_internal_answer_name}) ? $tag_internal_answer_name