--- loncom/homework/response.pm 2003/10/27 19:27:09 1.87 +++ loncom/homework/response.pm 2004/02/27 17:18:32 1.92 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # various response type definitons response definition # -# $Id: response.pm,v 1.87 2003/10/27 19:27:09 albertel Exp $ +# $Id: response.pm,v 1.92 2004/02/27 17:18:32 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -45,6 +45,16 @@ sub start_response { push (@Apache::inputtags::response,$id); push (@Apache::inputtags::responselist,$id); @Apache::inputtags::inputlist=(); + if ($Apache::inputtags::part eq '') { + &Apache::lonxml::error(&HTML::Entities::encode(&mt("Found a <*response> outside of a in a ed problem"))); + } + if ($Apache::inputtags::response_with_no_part && + $Apache::inputtags::part ne '0') { + &Apache::lonxml::error(&HTML::Entities::encode(&mt("<*response>s are both inside of and outside of , this is not a valid problem, errors in grading may occur.")).'
'); + } + if ($Apache::inputtags::part eq '0') { + $Apache::inputtags::response_with_no_part=1; + } return $id; } @@ -77,17 +87,13 @@ sub end_hintresponse { # that is stable and unique based on the part number and response number sub setrandomnumber { my $rndseed; - if ($ENV{'request.state'} eq "construct") { - $rndseed=$ENV{'form.rndseed'}; - if (!$rndseed) { $rndseed=time; } - } else { - $rndseed=&Apache::lonnet::rndseed(); - } + $rndseed=&Apache::structuretags::setup_rndseed(); + if (!defined($rndseed)) { $rndseed=&Apache::lonnet::rndseed(); } &Apache::lonxml::debug("randseed $rndseed"); # $rndseed=unpack("%32i",$rndseed); my $rndmod=(&Apache::lonnet::numval($Apache::inputtags::part) << 10); if (defined($Apache::inputtags::response['-1'])) { - $rndmod+=&Apache::lonnet::numval($Apache::inputtags::response[-1]); + $rndmod+=&Apache::lonnet::numval($Apache::inputtags::response[-1]); } if ($rndseed =~/,/) { { @@ -115,8 +121,8 @@ sub meta_parameter_write { } $result.= ' name="'.$name.'"'. ' type="'.$type.'"'. -($default?' default="'.$default.'"':''). -($display?' display="'.$display.' [Part: '.$partref.']"':'') +(defined($default)?' default="'.$default.'"':''). +(defined($display)?' display="'.$display.' [Part: '.$partref.']"':'') .'>' ."\n"; return $result; @@ -460,7 +466,7 @@ sub showallfoils { } sub getresponse { - my ($temp)=@_; + my ($temp,$resulttype)=@_; my $formparm='form.HWVAL_'.$Apache::inputtags::response['-1']; my $response; if (!defined($temp)) { @@ -480,7 +486,9 @@ sub getresponse { # save bubbled letter for later $Apache::lonhomework::results{"resource.$part.$id.scantron"}.= $response; - $response = $let_to_num{$response}; + if ($resulttype ne 'letter') { + $response = $let_to_num{$response}; + } } else { $response = $ENV{$formparm}; } @@ -504,6 +512,7 @@ sub scored_response { if ($increase ne '') { $score+=$increase+1; } } my $weight = &Apache::lonnet::EXT("resource.$part.weight"); + if (!defined($weight) || $weight eq '' || $weight eq 0) { $weight = 1; } my $pcr=$score/$weight; $Apache::lonhomework::results{"resource.$part.$id.awarded"}=$pcr; $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}= @@ -559,7 +568,6 @@ sub whichorder { for (my $i=0;$i<=$#bottomlist;$i++) { if ($bottomlist[$i]) { push(@whichopt,$bottomlist[$i]) } } - return @whichopt; }