--- loncom/homework/radiobuttonresponse.pm 2007/06/20 21:43:59 1.117 +++ loncom/homework/radiobuttonresponse.pm 2007/06/20 22:36:52 1.118 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # mutliple choice style responses # -# $Id: radiobuttonresponse.pm,v 1.117 2007/06/20 21:43:59 foxr Exp $ +# $Id: radiobuttonresponse.pm,v 1.118 2007/06/20 22:36:52 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -146,48 +146,26 @@ sub grade_response { my ($answer,@whichfoils)=&whichfoils($max,$randomize); if ( !&Apache::response::submitted() ) { return; } my $response; + + # Need to know how many foils we have so that I know how many + # bubble lines to consume: + + my $numfoils = scalar @whichfoils; + my $bubble_lines = int($numfoils / $bubbles_per_line); + if (($numfoils % $bubbles_per_line) != 0) { + $bubble_lines++; # Partial line of bubbles too. + } + + if ($env{'form.submitted'} eq 'scantron') { - # Need to know how many foils we have so that I know how many - # bubble lines to consume: - - my $numfoils = scalar @whichfoils; - my $bubble_lines = int($numfoils / $bubbles_per_line); - if (($numfoils % $bubbles_per_line) != 0) { - $bubble_lines++; # Partial line of bubbles too. - } - # Get an array of the lines... note offsets seem to go from 1??... - - my @responses; - for (my $i = 1; $i <= $bubble_lines; $i++) { - my $this_line = &Apache::response::getresponse($i); - push(@responses, $this_line); - - } - # Update the lonxml::counter so that the next problem - # Gets the right set of answers: - - &Apache::lonxml::increment_counter($bubble_lines-1); - - # This code assumes that unbubbled lines will be - # give empties. while bubbled lines nonblank. - - my $answer_line; - my $answer_value = ''; # By default no answer given... - my $num_bubbled_lines=0; - for (my $line_number = 0; $line_number < $bubble_lines; $line_number++) { - if ($responses[$line_number] ne "") { - $answer_line = $line_number; - $answer_value = $responses[$line_number]; - last; - } - } - - $response = $answer_line * $bubbles_per_line + $answer_value; - + $response = &Apache::response::getresponse(1,undef,$bubble_lines, + $bubbles_per_line); } else { $response = $env{'form.HWVAL_'.$Apache::inputtags::response['-1']}; } + &Apache::lonxml::increment_counter($bubble_lines-1); + if ( $response !~ /[0-9]+/) { return; } my $part=$Apache::inputtags::part; my $id = $Apache::inputtags::response['-1'];