--- loncom/homework/response.pm 2014/08/28 14:41:18 1.236 +++ loncom/homework/response.pm 2018/09/02 16:51:51 1.244.2.1 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # various response type definitons response definition # -# $Id: response.pm,v 1.236 2014/08/28 14:41:18 raeburn Exp $ +# $Id: response.pm,v 1.244.2.1 2018/09/02 16:51:51 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -56,6 +56,7 @@ use Apache::lonnet; use Apache::inputtags(); use Apache::lonmaxima(); use Apache::lonr(); +use Apache::lontexconvert(); BEGIN { &Apache::lonxml::register('Apache::response',('responseparam','parameter','dataresponse','customresponse','mathresponse')); @@ -180,7 +181,6 @@ sub setrandomnumber { } else { ($rndmod,$rndmod2)=&Apache::lonnet::digest("$id1,$id2"); } - $Apache::lonhomework::results{'resource.'.$id1.'.rawrndseed'}=$rndseed; if ($rndseed =~/([,:])/) { my $char=$1; use integer; @@ -197,7 +197,6 @@ sub setrandomnumber { } } &Apache::lonxml::debug("randseed $rndmod $rndseed"); - $Apache::lonhomework::results{'resource.'.$id1.'.rndseed'}=$rndseed; &Apache::lonnet::setup_random_from_rndseed($rndseed); return ''; } @@ -514,6 +513,9 @@ sub end_customresponse { &Apache::lonhomework::set_bubble_lines(); } } + if ($target eq 'web') { + &setup_prior_tries_hash(\&format_prior_response_math); + } pop(@Apache::lonxml::namespace); pop(@Apache::response::custom_answer); pop(@Apache::response::custom_answer_type); @@ -576,23 +578,6 @@ sub start_mathresponse { return $result; } -sub edit_mathresponse_button { - my ($id,$field)=@_; - my $button=&mt('Edit Answer'); -# my $helplink=&Apache::loncommon::help_open_topic('Formula_Editor'); - my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'}; - return(< -function edit_${id}_${field} (textarea) { - thenumber = textarea; - thedata = document.forms['lonhomework'].elements[textarea].value; - newwin = window.open("/adm/dragmath/MaximaPopup.html","","width=565,height=400,resizable"); -} - -$button -ENDFORMULABUTTON -} - sub end_mathresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $result; @@ -647,15 +632,6 @@ sub end_mathresponse { } } } - if ($target eq 'web') { - &setup_prior_tries_hash(\&format_prior_response_math); - my $partid = $Apache::inputtags::part; - my $id = $Apache::inputtags::response[-1]; - if (($Apache::inputtags::status['-1'] eq 'CAN_ANSWER') - && (&Apache::lonnet::EXT('resource.'.$partid.'_'.$id.'.turnoffeditor') ne 'yes')) { - $result.=&edit_mathresponse_button($id,"HWVAL_$id"); - } - } pop(@Apache::lonxml::namespace); pop(@Apache::response::custom_answer); @@ -1367,10 +1343,12 @@ basically undef and 0 (both false) mean and all true values mean that they can't do any more work a return of undef means it is unattempted - a return of 0 means it is attmpted and wrong but still has tries + a return of 0 means it is both attempted and still has tries and + is wrong or is only partially correct, and retries + are allowed. a return of 1 means it is marked correct - a return of 2 means they have exceed maximum number of tries - a return of 3 means it after the answer date + a return of 2 means they have exceeded maximum number of tries + a return of 3 means it is after the answer date =cut @@ -1387,7 +1365,13 @@ sub check_status { return 3; } my $status=&Apache::lonnet::EXT("user.resource.resource.$id.solved"); - if ($status =~ /^correct/) { return 1; } + if ($status =~ /^correct/) { + my $awarded=&Apache::lonnet::EXT("user.resource.resource.$id.awarded"); + my $retrypartial=&Apache::lonnet::EXT("resource.$id.retrypartial"); + unless (($retrypartial =~ /^1|on|yes$/) && ($awarded <1)) { + return 1; + } + } if (!$status) { return undef; } my $maxtries=&Apache::lonnet::EXT("resource.$id.maxtries"); if ($maxtries eq '') { $maxtries=2; }