--- loncom/homework/radiobuttonresponse.pm 2007/06/29 17:32:31 1.123 +++ loncom/homework/radiobuttonresponse.pm 2007/08/29 13:40:18 1.127 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # mutliple choice style responses # -# $Id: radiobuttonresponse.pm,v 1.123 2007/06/29 17:32:31 albertel Exp $ +# $Id: radiobuttonresponse.pm,v 1.127 2007/08/29 13:40:18 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -56,8 +56,6 @@ sub start_radiobuttonresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result; - - #when in a radiobutton response use these &Apache::lonxml::register('Apache::radiobuttonresponse',('foilgroup','foil','conceptgroup')); push (@Apache::lonxml::namespace,'radiobuttonresponse'); @@ -240,15 +238,19 @@ sub end_foilgroup { $direction, $bubbles_per_line); } elsif ($target eq 'answer' ) { - $result=&displayanswers($answer, \@shown); + $result=&displayanswers($answer, \@shown, $bubbles_per_line); } elsif ( $target eq 'grade') { &grade_response($answer, \@shown, $bubbles_per_line); } elsif ( $target eq 'analyze') { + my $bubble_lines = &bubble_line_count($answer_count, + $bubbles_per_line); &Apache::response::analyze_store_foilgroup(\@shown, ['text','value','location']); my $part_id="$Apache::inputtags::part.$Apache::inputtags::response[-1]"; push (@{ $Apache::lonhomework::analyze{"$part_id.options"} }, ('true','false')); + push (@{ $Apache::lonhomework::analyze{"$part_id.bubble_lines"} }, + $bubble_lines); } } $Apache::lonxml::post_evaluate=0; @@ -296,7 +298,6 @@ sub displayallfoils { my $result; &Apache::lonxml::debug("survey style display"); my @names; - &Apache::lonnet::loghthis("Display all foils"); if ( $Apache::response::foilgroup{'names'} ) { @names= @{ $Apache::response::foilgroup{'names'} }; } @@ -585,6 +586,7 @@ sub displayfoils { my @alphabet = ('A'..'Z'); my $i = 0; my $bubble_number = 0; + my $line = 0; my $temp=0; my $id=$Apache::inputtags::response['-1']; my $part=$Apache::inputtags::part; @@ -612,14 +614,15 @@ sub displayfoils { $result .= ' />'.$Apache::response::foilgroup{$name.'.text'}.""; } else { if ($Apache::lonhomework::type eq 'exam') { - $result .= '{\small \textbf{'.$alphabet[$i].'}}$\bigcirc$'.$Apache::response::foilgroup{$name.'.text'}.'\\\\'; #' stupid emacs - $i++; - $bubble_number++; if($bubble_number >= $bubbles_per_line) { + $line++; $i = 0; $bubble_number = 0; - $result.='\item[\textbf{'.$Apache::lonxml::counter.'}.]'; + $result.='\item[\textbf{'.($Apache::lonxml::counter+$line).'}.]'; } + $result .= '{\small \textbf{'.$alphabet[$i].'}}$\bigcirc$'.$Apache::response::foilgroup{$name.'.text'}.'\\\\'; #' stupid emacs + $i++; + $bubble_number++; } else { $result .= '\vspace*{-2 mm}\item '.$Apache::response::foilgroup{$name.'.text'}; } @@ -652,12 +655,18 @@ sub displayallanswers { } sub displayanswers { - my ($answer, $whichopt)=@_; - my $result=&Apache::response::answer_header('radiobuttonresponse'); + my ($answer, $whichopt, $bubbles_per_line)=@_; + my $result; + if ($Apache::lonhomework::type eq 'exam') { - my $correct = ('A'..'Z')[$answer]; - $result.=&Apache::response::answer_part('radiobuttonresponse', - $correct); + my $line = int($answer/$bubbles_per_line); + my $correct = ('A'..'Z')[$answer%$bubbles_per_line]; + $result .= &Apache::response::answer_header('radiobuttonresponse', + $line); + $result .= &Apache::response::answer_part('radiobuttonresponse', + $correct); + } else { + $result .= &Apache::response::answer_header('radiobuttonresponse'); } foreach my $name (@{ $whichopt }) { $result.=&Apache::response::answer_part('radiobuttonresponse',