--- loncom/homework/radiobuttonresponse.pm 2004/03/05 22:59:48 1.83 +++ loncom/homework/radiobuttonresponse.pm 2004/08/30 02:03:44 1.93 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # mutliple choice style responses # -# $Id: radiobuttonresponse.pm,v 1.83 2004/03/05 22:59:48 albertel Exp $ +# $Id: radiobuttonresponse.pm,v 1.93 2004/08/30 02:03:44 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -29,6 +29,7 @@ package Apache::radiobuttonresponse; use strict; use HTML::Entities(); +use Apache::lonlocal; BEGIN { &Apache::lonxml::register('Apache::radiobuttonresponse',('radiobuttonresponse')); @@ -42,6 +43,7 @@ sub start_radiobuttonresponse { push (@Apache::lonxml::namespace,'radiobuttonresponse'); my $id = &Apache::response::start_response($parstack,$safeeval); %Apache::hint::radiobutton=(); + undef(%Apache::response::foilnames); if ($target eq 'meta') { $result=&Apache::response::meta_package_write('radiobuttonresponse'); } elsif ($target eq 'edit' ) { @@ -75,6 +77,8 @@ sub start_radiobuttonresponse { $result .= ' \renewcommand{\labelenumi}{\alph{enumi}.}'; } elsif ($type eq 'i') { $result .= ' \renewcommand{\labelenumi}{\roman{enumi}.}'; + } else { + $result .= ' \renewcommand{\labelenumi}{\Alph{enumi}.}'; } $result .= '\begin{enumerate}'; } elsif ($target eq 'analyze') { @@ -92,6 +96,7 @@ sub end_radiobuttonresponse { &Apache::response::end_response; pop @Apache::lonxml::namespace; &Apache::lonxml::deregister('Apache::radiobuttonresponse',('foilgroup','foil','conceptgroup')); + undef(%Apache::response::foilnames); return $result; } @@ -101,7 +106,7 @@ sub start_foilgroup { my $result; %Apache::response::foilgroup=(); $Apache::radiobuttonresponse::conceptgroup=0; - &Apache::response::setrandomnumber(); + &Apache::response::pushrandomnumber(); if ($target eq 'tex' && $Apache::lonhomework::type eq 'exam') { $result.='\item[\textbf{'.$Apache::lonxml::counter.'}.]'; } @@ -162,9 +167,11 @@ sub end_foilgroup { if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || $target eq 'tex' || $target eq 'analyze') { my $style = $Apache::lonhomework::type; + my $direction = &Apache::lonxml::get_param('direction',$parstack, + $safeeval,'-2'); if ( $style eq 'survey' && $target ne 'analyze') { if ($target eq 'web' || $target eq 'tex') { - $result=&displayallfoils(); + $result=&displayallfoils($direction); } elsif ( $target eq 'answer' ) { $result=&displayallanswers(); } elsif ( $target eq 'grade' ) { @@ -177,7 +184,7 @@ sub end_foilgroup { my $randomize = &Apache::lonxml::get_param('randomize',$parstack, $safeeval,'-2'); if ($target eq 'web' || $target eq 'tex') { - $result=&displayfoils($target,$max,$randomize); + $result=&displayfoils($target,$max,$randomize,$direction); } elsif ($target eq 'answer' ) { $result=&displayanswers($max,$randomize); } elsif ( $target eq 'grade') { @@ -192,6 +199,7 @@ sub end_foilgroup { } } } + &Apache::response::poprandomnumber(); &Apache::lonxml::increment_counter(); return $result; } @@ -215,6 +223,7 @@ sub getfoilcounts { } sub displayallfoils { + my ($direction)=@_; my $result; &Apache::lonxml::debug("survey style display"); my @names = @{ $Apache::response::foilgroup{'names'} }; @@ -223,30 +232,43 @@ sub displayallfoils { my $part=$Apache::inputtags::part; my $lastresponse= $Apache::lonhomework::history{"resource.$part.$id.submission"}; + if ($direction eq 'horizontal') { $result.='
";
+ } else {
+ $result.=" "; + } + if (defined($lastresponse{$name})) { $result.=''; } $result .= $Apache::response::foilgroup{$name.'.text'}; - if ($Apache::response::foilgroup{$name.'.value'} eq 'true') { + if (defined($lastresponse{$name})) { $result.=''; } + if ($direction eq 'horizontal') { $result.=" | "; }
}
}
} else {
foreach my $name (@names) {
if ($Apache::response::foilgroup{$name.'.value'} ne 'unused') {
- $result.="
'; }
+ }
if ($target ne 'tex') {
$result.=" "; } else { @@ -403,14 +433,19 @@ sub displayfoils { } else { $result.='Incorrect:'; } - if ($target ne 'tex') { - $result.=$Apache::response::foilgroup{$name.'.text'}."\n"; - } else { - $result.=$Apache::response::foilgroup{$name.'.text'}; - } + $result.=$Apache::response::foilgroup{$name.'.text'}; + if ($target eq 'web') { $result.=""; } if ($Apache::response::foilgroup{$name.'.value'} eq 'true') { if ($target ne 'tex') { $result.='';} else {$result.='}';} } + if ($direction eq 'horizontal') { + if ($target ne 'tex') { $result.=' | '; }
+ }
+ }
+ if ($direction eq 'horizontal') {
+ if ($target ne 'tex') {
+ $result.='