--- loncom/homework/caparesponse/caparesponse.pm 2008/02/01 23:00:56 1.221 +++ loncom/homework/caparesponse/caparesponse.pm 2008/05/30 16:04:33 1.225 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # caparesponse definition # -# $Id: caparesponse.pm,v 1.221 2008/02/01 23:00:56 raeburn Exp $ +# $Id: caparesponse.pm,v 1.225 2008/05/30 16:04:33 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -310,6 +310,11 @@ sub start_numericalresponse { $safeeval); if ($unit =~ /\S/) { $result.=" (in $unit) "; } } + if (($token->[1] eq 'formularesponse') && + ($Apache::inputtags::status['-1'] eq 'CAN_ANSWER') && + (!&Apache::lonxml::get_param_var('samples',$parstack,$safeeval))) { + $result.=&edit_formula_button($id,"HWVAL_$id"); + } if ( &Apache::response::show_answer() ) { &set_answertext($tag_internal_answer_name,$target,$token,$tagstack, $parstack,$parser,$safeeval,-1); @@ -318,6 +323,21 @@ sub start_numericalresponse { return $result; } +sub edit_formula_button { + my ($id,$field)=@_; + my $button=&mt('Edit Answer'); + return(< +function edit_${id}_${field} (textarea) { + thenumber = textarea; + thedata = document.forms['lonhomework'].elements[textarea].value; + newwin = window.open("/adm/dragmath/applet/MaximaPopup.html","","width=565,height=400,resizable"); +} + + +ENDFORMULABUTTON +} + sub set_answertext { my ($name,$target,$token,$tagstack,$parstack,$parser,$safeeval, $response_level) = @_; @@ -678,12 +698,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]"; @@ -703,7 +723,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)); } } @@ -988,13 +1008,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); }