--- loncom/homework/radiobuttonresponse.pm 2004/03/15 22:09:52 1.86 +++ loncom/homework/radiobuttonresponse.pm 2004/10/04 17:41:01 1.94 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # mutliple choice style responses # -# $Id: radiobuttonresponse.pm,v 1.86 2004/03/15 22:09:52 albertel Exp $ +# $Id: radiobuttonresponse.pm,v 1.94 2004/10/04 17:41:01 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -77,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') { @@ -104,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.'}.]'; } @@ -165,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' ) { @@ -180,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') { @@ -195,6 +199,7 @@ sub end_foilgroup { } } } + &Apache::response::poprandomnumber(); &Apache::lonxml::increment_counter(); return $result; } @@ -218,6 +223,7 @@ sub getfoilcounts { } sub displayallfoils { + my ($direction)=@_; my $result; &Apache::lonxml::debug("survey style display"); my @names = @{ $Apache::response::foilgroup{'names'} }; @@ -226,11 +232,16 @@ sub displayallfoils { my $part=$Apache::inputtags::part; my $lastresponse= $Apache::lonhomework::history{"resource.$part.$id.submission"}; + if ($direction eq 'horizontal') { $result.=''; } my %lastresponse=&Apache::lonnet::str2hash($lastresponse); if (&Apache::response::show_answer() ) { foreach my $name (@names) { if ($Apache::response::foilgroup{$name.'.value'} ne 'unused') { - $result.="
"; + if ($direction eq 'horizontal') { + $result.=""; } } } } else { foreach my $name (@names) { if ($Apache::response::foilgroup{$name.'.value'} ne 'unused') { - $result.="
\n"; + $result .= '>'.$Apache::response::foilgroup{$name.'.text'}. + ''; $temp++; + if ($direction eq 'horizontal') { $result.=""; } } } } + if ($direction eq 'horizontal') { $result.='
"; + } else { + $result.="
"; + } if (defined($lastresponse{$name})) { $result.=''; } @@ -238,18 +249,28 @@ sub displayallfoils { if (defined($lastresponse{$name})) { $result.=''; } + if ($direction eq 'horizontal') { $result.="
'; } return $result; } @@ -283,7 +304,7 @@ sub whichfoils { push (@whichfalse,$name); } elsif ($Apache::response::foilgroup{$name.'.value'} eq 'unused') { } else { - &Apache::lonxml::error(&HTML::Entities::encode("No valid value assigned ($Apache::response::foilgroup{$name.'.value'}) for foil $name in ")); + &Apache::lonxml::error(&HTML::Entities::encode("No valid value assigned ($Apache::response::foilgroup{$name.'.value'}) for foil $name in ",'<>&"')); } } } else { @@ -309,7 +330,7 @@ sub whichfoils { } } elsif ($Apache::response::foilgroup{$name.'.value'} eq 'unused') { } else { - &Apache::lonxml::error(&HTML::Entities::encode("No valid value assigned ($Apache::response::foilgroup{$name.'.value'}) for foil $name in ")); + &Apache::lonxml::error(&HTML::Entities::encode("No valid value assigned ($Apache::response::foilgroup{$name.'.value'}) for foil $name in ",'<>&"')); } } #pick a true statement @@ -387,7 +408,7 @@ sub whichfoils { } sub displayfoils { - my ($target,$max,$randomize)=@_; + my ($target,$max,$randomize,$direction)=@_; my $result; my ($answer,@whichfoils)=&whichfoils($max,$randomize); @@ -395,7 +416,15 @@ sub displayfoils { my $solved=$Apache::lonhomework::history{"resource.$part.solved"}; if ( ($target ne 'tex') && &Apache::response::show_answer() ) { + if ($direction eq 'horizontal') { + if ($target ne 'tex') { + $result.=''; + } + } foreach my $name (@whichfoils) { + if ($direction eq 'horizontal') { + if ($target ne 'tex') { $result.=''; } + } + } + if ($direction eq 'horizontal') { + if ($target ne 'tex') { + $result.='
'; } + } if ($target ne 'tex') { $result.="
"; } else { @@ -406,14 +435,20 @@ sub displayfoils { } else { $result.='Incorrect:'; } - if ($target ne 'tex') { - $result.=$Apache::response::foilgroup{$name.'.text'}."\n"; - } else { - $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.='
'; + } } } else { my @alphabet = ('A'..'Z'); @@ -423,11 +458,22 @@ sub displayfoils { my $part=$Apache::inputtags::part; my $lastresponse=$Apache::lonhomework::history{"resource.$part.$id.submission"}; my %lastresponse=&Apache::lonnet::str2hash($lastresponse); + if ($target ne 'tex' && $direction eq 'horizontal') { + $result.=""; + } foreach my $name (@whichfoils) { if ($target ne 'tex') { - $result.="
\n"; + $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 @@ -436,10 +482,16 @@ sub displayfoils { $result .= '\vspace*{-2 mm}\item '.$Apache::response::foilgroup{$name.'.text'}; } } + if ($target ne 'tex' && $direction eq 'horizontal') { + $result.=""; + } $temp++; } + if ($target ne 'tex' && $direction eq 'horizontal') { + $result.="
"; + } } - if ($target ne 'tex') { $result.="
"; } else { $result.='\vskip 0 mm '; } + if ($target ne 'tex') { if ($direction ne 'horizontal') { $result.="
";} } else { $result.='\vskip 0 mm '; } return $result; }