--- loncom/homework/caparesponse/caparesponse.pm 2012/01/20 10:12:09 1.249.8.1 +++ loncom/homework/caparesponse/caparesponse.pm 2016/02/18 18:40:05 1.257 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # caparesponse definition # -# $Id: caparesponse.pm,v 1.249.8.1 2012/01/20 10:12:09 foxr Exp $ +# $Id: caparesponse.pm,v 1.257 2016/02/18 18:40:05 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -296,7 +296,7 @@ sub start_numericalresponse { } elsif ($token->[1] eq 'formularesponse') { $constructtag=&Apache::edit::get_new_args($token,$parstack, $safeeval,'answer', - 'samples','preproces'); + 'samples','preprocess'); } if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); @@ -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); @@ -895,7 +892,6 @@ sub get_table_sizes { my ($number_of_bubbles,$rbubble_values)=@_; my $scale=2; #mm for one digit my $cell_width=0; - &Apache::lonnet::logthis("textwidth envvar: " . $env{'form.textwidth'}); foreach my $member (@$rbubble_values) { my $cell_width_real=0; if ($member=~/(\+|-)?(\d*)\.?(\d*)\s*\$?\\times\s*10\^{(\+|-)?(\d+)}\$?/) { @@ -971,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 @@ -1098,11 +1103,11 @@ sub make_horizontal_latex_bubbles { } $result.='\noindent \setlength{\tabcolsep}{2 mm}\hskip 2pc\begin{tabular}{'; for (my $ind=0;$ind<$table_range[$j];$ind++) { - $result.='p{3 mm}p{'.$celllength.' mm}'; + $result.='p{4 mm}p{'.$celllength.' mm}'; } $result.='}'; for (my $ind=$cou;$ind<$cou+$table_range[$j];$ind++) { - $result.='\hskip -4 mm {\small \textbf{'.$alphabet[$ind].'}}' + $result.='\hskip -4 mm {\small \textbf{ '.$alphabet[$ind].'}}' . $bubble_fragment . '& \hskip -3 mm {\small '.$bubble_display->[$ind].'} '; if ($ind != $cou+$table_range[$j]-1) {