--- loncom/homework/response.pm 2003/02/13 23:48:27 1.69 +++ loncom/homework/response.pm 2003/04/21 20:59:02 1.72 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # various response type definitons response definition # -# $Id: response.pm,v 1.69 2003/02/13 23:48:27 albertel Exp $ +# $Id: response.pm,v 1.72 2003/04/21 20:59:02 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -253,7 +253,7 @@ sub end_dataresponse { &Apache::response::setup_params('dataresponse'); my $partid = $Apache::inputtags::part; my $id = $Apache::inputtags::response['-1']; - my $response = $ENV{'form.HWVAL'.$id}; + my $response = $ENV{'form.HWVAL_'.$id}; my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval); if ( $response =~ /[^\s]/) { $Apache::lonhomework::results{"resource.$partid.$id.$name"}= @@ -402,6 +402,59 @@ sub showallfoils { } return $return; } + +sub getresponse { + my ($temp)=@_; + my $formparm='form.HWVAL_'.$Apache::inputtags::response['-1']; + my $response; + if (!defined($temp)) { + $temp=1; + } else { + $formparm.=":$temp"; + } + my %let_to_num=('A'=>0,'B'=>1,'C'=>2,'D'=>3,'E'=>4,'F'=>5,'G'=>6,'H'=>7, + 'I'=>8,'J'=>9,'K'=>10,'L'=>11,'M'=>12,'N'=>13,'O'=>14, + 'P'=>15,'Q'=>16,'R'=>17,'S'=>18,'T'=>19,'U'=>20,'V'=>21, + 'W'=>22,'X'=>23,'Y'=>24,'Z'=>25); + if ($ENV{'form.submitted'} eq 'scantron') { + my $part = $Apache::inputtags::part; + my $id = $Apache::inputtags::response[-1]; + $response = $ENV{'scantron.'.($Apache::lonxml::counter+$temp-1). + '.answer'}; + # save bubbled letter for later + $Apache::lonhomework::results{"resource.$part.$id.scantron"}.= + $response; + $response = $let_to_num{$response}; + } else { + $response = $ENV{$formparm}; + } + return $response; +} + +sub repetition { + my $id = $Apache::inputtags::part; + my $weight = &Apache::lonnet::EXT("resource.$id.weight"); + my $repetition = int $weight/9; + if ($weight % 9 != 0) {$repetition++;} + return $repetition; +} + +sub scored_response { + my ($part,$id)=@_; + my $repetition=&repetition(); + my $score=0; + for (my $i=0;$i<$repetition;$i++) { + my $increase=&Apache::response::getresponse($i+1); + if ($increase ne '') { $score+=$increase+1; } + } + my $weight = &Apache::lonnet::EXT("resource.$part.weight"); + my $pcr=$score/$weight; + $Apache::lonhomework::results{"resource.$part.$id.awarded"}=$pcr; + $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}= + 'ASSIGNED_SCORE'; + return $repetition; +} + 1; __END__