--- loncom/homework/optionresponse.pm 2002/11/11 20:26:59 1.62
+++ loncom/homework/optionresponse.pm 2003/03/26 22:59:09 1.70
@@ -1,7 +1,7 @@
# LearningOnline Network with CAPA
# option list style responses
#
-# $Id: optionresponse.pm,v 1.62 2002/11/11 20:26:59 albertel Exp $
+# $Id: optionresponse.pm,v 1.70 2003/03/26 22:59:09 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -141,7 +141,7 @@ ENDTABLE
$result.=')">';
} # else nothing changed so just use the default mechanism
}
- if ($target eq 'tex') {
+ if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {
$result .= ' \begin{enumerate} ';
}
return $result;
@@ -230,7 +230,7 @@ sub end_foilgroup {
} elsif ($target eq 'edit') {
$result.=&Apache::edit::end_table();
}
- if ($target eq 'tex') {$result .= '\end{enumerate}';}
+ if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {$result .= '\end{enumerate}';}
return $result;
}
@@ -248,6 +248,7 @@ sub whichfoils {
my ($max,$randomize)=@_;
$max = &getfoilcounts($max);
&Apache::lonxml::debug("randomize $randomize");
+ if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;}
my @names = @{ $Apache::response::foilgroup{'names'} };
my @whichopt =();
my (%top,@toplist,%bottom,@bottomlist);
@@ -294,6 +295,7 @@ sub whichfoils {
sub displayanswers {
my ($max,$randomize,@opt)=@_;
+ if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;}
my @names = @{ $Apache::response::foilgroup{'names'} };
my @whichopt = &whichfoils($max,$randomize);
my $result=&Apache::response::answer_header('optionresponse');
@@ -307,6 +309,7 @@ sub displayanswers {
sub displayfoils {
my ($target,$max,$randomize,@opt)=@_;
+ if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;}
my @names = @{ $Apache::response::foilgroup{'names'} };
my @truelist;
my @falselist;
@@ -319,8 +322,11 @@ sub displayfoils {
my $part=$Apache::inputtags::part;
my $id=$Apache::inputtags::response[-1];
my $break;
- if (($Apache::lonhomework::history{"resource.$part.solved"} =~ /^correct/) || ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER')) {
- my $temp=1; ####
+ my $solved=$Apache::lonhomework::history{"resource.$part.solved"};
+ my $status=$Apache::inputtags::status[-1];
+ if (
+ ($target ne 'tex') &&
+ (($solved =~ /^correct/) || ($status eq 'SHOW_ANSWER')) ) {
foreach $name (@whichopt) {
my $text=$Apache::response::foilgroup{$name.'.text'};
if ($text!~/^\s*$/) {
@@ -353,7 +359,6 @@ sub displayfoils {
$result.=&bubbles(\@alphabet,\@opt);
}
}
- $temp++;
}
} else {
my $temp=1;
@@ -396,27 +401,27 @@ sub displayfoils {
if ($Apache::lonhomework::type eq 'exam') {$texoptionlist='';} #if exam we do not need to show optionlist
if ($Apache::response::foilgroup{$name.'.text'}=~m/\\item /) {
if ($Apache::lonhomework::type eq 'exam') {
- $Apache::response::foilgroup{$name.'.text'}=~s/\\item/\\item[\\textbf{$Apache::lonxml::counter}\.]/;
+ $Apache::response::foilgroup{$name.'.text'}=~s/\\item/\\vskip 2 mm/;
}
if ($Apache::response::foilgroup{$name.'.text'}=~//) {
$Apache::response::foilgroup{$name.'.text'}=~s|| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |;
- $result.= $texoptionlist.$Apache::response::foilgroup{$name.'.text'};
}
+ $result.= $texoptionlist.$Apache::response::foilgroup{$name.'.text'};
} else {
if ($Apache::lonhomework::type eq 'exam') {
- $result.= $texoptionlist.'\vspace*{-2 mm}\item[\textbf{'.$Apache::lonxml::counter.'}.]'.$Apache::response::foilgroup{$name.'.text'};
+ $result.= $texoptionlist.' '.$Apache::response::foilgroup{$name.'.text'};
} else {
$result.= $texoptionlist.'\vspace*{-2 mm}\item '.$Apache::response::foilgroup{$name.'.text'};
}
}
if ($Apache::lonhomework::type eq 'exam') {
- $result.=&bubbles(\@alphabet,\@opt);
+ $result.='\vskip -2 mm\parbox{\textwidth}{\begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]\parbox{\textwidth - 5 mm}{'.&bubbles(\@alphabet,\@opt).'}\end{enumerate}} \vskip -9 mm \strut ';
}
$displayoptionintex=1;
} else {
if ($Apache::response::foilgroup{$name.'.text'}=~m/\\item /) {
if ($Apache::lonhomework::type eq 'exam') {
- $Apache::response::foilgroup{$name.'.text'}=~s/\\item/\\item[\\textbf{$Apache::lonxml::counter}\.]/;
+ $Apache::response::foilgroup{$name.'.text'}=~s/\\item//;
}
if ($Apache::response::foilgroup{$name.'.text'}=~//) {
$Apache::response::foilgroup{$name.'.text'}=~s|| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |;
@@ -424,13 +429,13 @@ sub displayfoils {
$result.= $Apache::response::foilgroup{$name.'.text'};
} else {
if ($Apache::lonhomework::type eq 'exam') {
- $result.= '\item[\textbf{'.$Apache::lonxml::counter.'}.]'.$Apache::response::foilgroup{$name.'.text'};
+ $result.= ' '.$Apache::response::foilgroup{$name.'.text'};
} else {
$result.= '\item '.$Apache::response::foilgroup{$name.'.text'};
}
}
if ($Apache::lonhomework::type eq 'exam') {
- $result.=&bubbles(\@alphabet,\@opt);
+ $result.='\vskip -2 mm \parbox{\textwidth}{\begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]\parbox{\textwidth - 5 mm}{'.&bubbles(\@alphabet,\@opt).'}\end{enumerate}} \vskip -9 mm \strut ';
}
}
}
@@ -455,6 +460,7 @@ sub optionlist_correction {
$texoptionlist =~ s/>/\$>\$/g;
$texoptionlist =~ s/\$<\$/g;
$texoptionlist =~ s/=/\$=\$/g;
+ $texoptionlist =~ s/\^(\d+)/\$$1\$<\/m>/g;
return $texoptionlist;
}
@@ -610,7 +616,7 @@ sub end_foil {
my $result = '';
if ($target eq 'web' || $target eq 'tex') {
$text=&Apache::lonxml::endredirection;
- if ($target eq 'tex') { $text = '\vspace*{-2 mm}\item '.$text; }
+ if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') { $text = '\vspace*{-2 mm}\item '.$text; }
}
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer'
|| $target eq 'tex' || $target eq 'analyze') {
@@ -625,12 +631,28 @@ sub end_foil {
&& !&Apache::response::showallfoils() ) {
push @{ $Apache::response::conceptgroup{'names'} }, $name;
$Apache::response::conceptgroup{"$name.value"} = $value;
- $Apache::response::conceptgroup{"$name.text"} = $text;
+ if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam') {
+ $Apache::response::conceptgroup{"$name.text"} = '\vskip 4 mm $\triangleright$ '.$text;
+ } else {
+ if ($target eq 'tex') {
+ $Apache::response::conceptgroup{"$name.text"} = ' $\triangleright$ '.$text;
+ } else {
+ $Apache::response::conceptgroup{"$name.text"} = $text;
+ }
+ }
$Apache::response::conceptgroup{"$name.location"} = $location;
} else {
push @{ $Apache::response::foilgroup{'names'} }, $name;
$Apache::response::foilgroup{"$name.value"} = $value;
- $Apache::response::foilgroup{"$name.text"} = $text;
+ if ($Apache::lonhomework::type eq 'exam') {
+ $Apache::response::foilgroup{"$name.text"} = '\vskip 5 mm $\triangleright$ '.$text;
+ } else {
+ if ($target eq 'tex') {
+ $Apache::response::foilgroup{"$name.text"} = ' $\triangleright$ '.$text;
+ } else {
+ $Apache::response::foilgroup{"$name.text"} = $text;
+ }
+ }
$Apache::response::foilgroup{"$name.location"} = $location;
}
}