--- loncom/homework/response.pm 2009/03/16 18:20:22 1.213 +++ loncom/homework/response.pm 2010/11/24 00:10:06 1.220 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # various response type definitons response definition # -# $Id: response.pm,v 1.213 2009/03/16 18:20:22 bisitz Exp $ +# $Id: response.pm,v 1.220 2010/11/24 00:10:06 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -30,7 +30,7 @@ =head1 NAME -Apache::resonse.pm +Apache::response.pm =head1 SYNOPSIS @@ -54,6 +54,7 @@ use strict; use Apache::lonlocal; use Apache::lonnet; use Apache::lonmaxima(); +use Apache::lonr(); BEGIN { &Apache::lonxml::register('Apache::response',('responseparam','parameter','dataresponse','customresponse','mathresponse')); @@ -279,7 +280,7 @@ sub meta_response_order { } sub check_for_previous { - my ($curresponse,$partid,$id,$last) = @_; + my ($curresponse,$partid,$id,$last,$type) = @_; my %previous; $previous{'used'} = 0; foreach my $key (sort(keys(%Apache::lonhomework::history))) { @@ -304,7 +305,15 @@ sub check_for_previous { if (! $previous{'award'} ) { $previous{'award'} = 'UNKNOWN'; } if ($previous{'award'} eq 'INTERNAL_ERROR') { $previous{'used'}=0; } &Apache::lonxml::debug("got a match :$previous{'award'}:$previous{'used'}:"); - } + } elsif ($type eq 'ci') { + if (lc($pastresponse) eq lc($curresponse)) { + if ($key =~ /^(\d+):/) { + push (@{$previous{'versionci'}},$1); + $previous{'awardci'} = $Apache::lonhomework::history{"resource.$partid.$id.awarddetail"}; + $previous{'usedci'} = 1; + } + } + } } } &Apache::lonhomework::showhash(%previous); @@ -317,7 +326,10 @@ sub handle_previous { if ($$previous{'last'}) { push(@Apache::inputtags::previous,'PREVIOUSLY_LAST'); push(@Apache::inputtags::previous_version,$$previous{'version'}); - } elsif ($Apache::lonhomework::type ne 'survey') { + } elsif (($Apache::lonhomework::type ne 'survey') && + ($Apache::lonhomework::type ne 'surveycred') && + ($Apache::lonhomework::type ne 'anonsurvey') && + ($Apache::lonhomework::type ne 'anonsurveycred')) { push(@Apache::inputtags::previous,'PREVIOUSLY_USED'); push(@Apache::inputtags::previous_version,$$previous{'version'}); } @@ -398,7 +410,7 @@ sub start_customresponse { } elsif ($target eq 'edit') { $result.=&Apache::edit::tag_start($target,$token); $result.=&Apache::edit::text_arg('String to display for answer:', - 'answerdisplay',$token); + 'answerdisplay',$token,'50'); $result.=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); } elsif ($target eq 'modified') { my $constructtag; @@ -438,7 +450,7 @@ sub end_customresponse { ${$safeeval->varglob('LONCAPA::customresponse_submission')}= $response; - my $award = &Apache::run::run('{ my $submission=$LONCAPA::customresponse_submission;'.$Apache::response::custom_answer[-1].'}',$safeeval); + my ($award,$score) = &Apache::run::run('{ my $submission=$LONCAPA::customresponse_submission;'.$Apache::response::custom_answer[-1].'}',$safeeval); if (!&Apache::inputtags::valid_award($award)) { $error = $award; $award = 'ERROR'; @@ -446,6 +458,9 @@ sub end_customresponse { &Apache::response::handle_previous(\%previous,$award); $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}= $award; + if ($award eq 'ASSIGNED_SCORE') { + $Apache::lonhomework::results{"resource.$part.$id.awarded"}=1.0*$score; + } if ($error) { $Apache::lonhomework::results{"resource.$part.$id.awardmsg"}= $error; @@ -505,10 +520,10 @@ sub start_mathresponse { } elsif ($target eq 'edit') { $result.=&Apache::edit::tag_start($target,$token); $result.=&Apache::edit::text_arg('String to display for answer:', - 'answerdisplay',$token); + 'answerdisplay',$token,'50'); $result.=&Apache::edit::select_arg('Algebra System:', 'cas', - ['maxima'], + ['maxima','R'], $token); $result.=&Apache::edit::text_arg('Argument Array:', 'args',$token). @@ -545,7 +560,7 @@ function edit_${id}_${field} (textarea) newwin = window.open("/adm/dragmath/applet/MaximaPopup.html","","width=565,height=400,resizable"); } -$button +$button ENDFORMULABUTTON } @@ -572,6 +587,12 @@ sub end_mathresponse { $award=&Apache::lonmaxima::maxima_run($Apache::response::custom_answer[-1],$response,$args, &Apache::lonxml::get_param('libraries',$parstack,$safeeval)); } + if ($cas eq 'R') { + my $args = [&Apache::lonxml::get_param_var('args',$parstack,$safeeval)]; + $award=&Apache::lonr::r_run($Apache::response::custom_answer[-1],$response,$args, + &Apache::lonxml::get_param('libraries',$parstack,$safeeval)); + } + if (!&Apache::inputtags::valid_award($award)) { $error = $award; $award = 'ERROR'; @@ -897,6 +918,10 @@ sub showallfoils { } } if ($Apache::lonhomework::type eq 'survey') { return 1; } + if ($Apache::lonhomework::type eq 'surveycred') { return 1; } + if ($Apache::lonhomework::type eq 'anonsurvey') { return 1; } + if ($Apache::lonhomework::type eq 'anonsurveycred') { return 1; } + return 0; }