--- loncom/homework/optionresponse.pm 2003/01/19 08:10:22 1.67
+++ loncom/homework/optionresponse.pm 2003/04/24 15:49:46 1.76
@@ -1,7 +1,7 @@
# LearningOnline Network with CAPA
# option list style responses
#
-# $Id: optionresponse.pm,v 1.67 2003/01/19 08:10:22 albertel Exp $
+# $Id: optionresponse.pm,v 1.76 2003/04/24 15:49:46 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;
@@ -185,7 +185,10 @@ sub end_foilgroup {
my $wrong=0;
my $ignored=0;
foreach $name (@whichopt) {
- my $response = $ENV{'form.HWVAL_'.$Apache::inputtags::response['-1'].":$temp"};
+ my $response=&Apache::response::getresponse($temp);
+ if ($ENV{'form.submitted'} eq 'scantron') {
+ $response = $opt[$response];
+ }
$responsehash{$name}=$response;
if ( $response =~ /[^\s]/) {
my $value=$Apache::response::foilgroup{$name.'.value'};
@@ -207,30 +210,47 @@ sub end_foilgroup {
my %previous=&Apache::response::check_for_previous($responsestr,
$part,$id);
&Apache::lonxml::debug("Got $right right and $wrong wrong, and $ignored were ignored");
- my $ad;
- if ($wrong==0 && $ignored==0) {
- $ad='EXACT_ANS';
- } elsif ($wrong==0 && $right==0) {
- #nothing submitted
- } else {
- if ($ignored==0) {
- $ad='INCORRECT';
- } else {
- $ad='MISSING_ANSWER';
- }
- }
$Apache::lonhomework::results{"resource.$part.$id.submission"}=
- $responsestr;
+ $responsestr;
$Apache::lonhomework::results{"resource.$part.$id.submissiongrading"}=$gradestr;
- $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=
- $ad;
- &Apache::response::handle_previous(\%previous,$ad);
+
+ if (!$Apache::lonhomework::scantronmode) {
+ my $ad;
+ if ($wrong==0 && $ignored==0) {
+ $ad='EXACT_ANS';
+ } elsif ($wrong==0 && $right==0) {
+ #nothing submitted
+ } else {
+ if ($ignored==0) {
+ $ad='INCORRECT';
+ } else {
+ $ad='MISSING_ANSWER';
+ }
+ }
+ $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$ad;
+ &Apache::response::handle_previous(\%previous,$ad);
+ } else {
+ my $ad;
+ if ($wrong==0 && $right==0) {
+ #nothing submitted
+ } else {
+ $ad='ASSIGNED_SCORE';
+ }
+ $Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=$ad;
+ $Apache::lonhomework::results{"resource.$part.$id.awarded"}=
+ $right/(scalar(@whichopt));
+ $Apache::lonhomework::results{"resource.$part.$id.numfoils"}=
+ scalar(@whichopt);
+ }
}
}
+ &Apache::lonxml::increment_counter(&getfoilcounts($max));
} 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;
}
@@ -316,8 +336,7 @@ sub displayfoils {
my $result;
my $name;
my $displayoptionintex=0;
- my @alphabet = ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',
- 'Q','R','S','T','U','V','W','X','Y','Z');
+ my @alphabet = ('A'..'Z');
my @whichopt = &whichfoils($max,$randomize);
my $part=$Apache::inputtags::part;
my $id=$Apache::inputtags::response[-1];
@@ -383,16 +402,18 @@ sub displayfoils {
}
}
if ($target ne 'tex') {
- $optionlist='\n";
+ }
my $text=$Apache::response::foilgroup{$name.'.text'};
- if (!($text=~s||$optionlist|)) {
+ if (!($text=~s||$optionlist|) && $Apache::lonhomework::type ne 'exam') {
$text=$optionlist.$text;
}
$result.=$break.$text."\n";
if ($Apache::lonhomework::type eq 'exam') {
- $result.=&webbubbles(\@opt,\@alphabet);
+ $result.=&webbubbles(\@opt,\@alphabet,$temp);
}
$temp++;
} else {
@@ -401,7 +422,7 @@ 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\} |;
@@ -409,20 +430,19 @@ sub displayfoils {
$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 ';
+ $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\} |;
@@ -430,14 +450,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 ';
+ $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 ';
}
}
}
@@ -469,14 +488,15 @@ sub optionlist_correction {
sub webbubbles {
- my ($ropt,$ralphabet)=@_;
+ my ($ropt,$ralphabet,$temp)=@_;
my @opt=@$ropt;
my @alphabet=@$ralphabet;
my $result='';
my $number_of_bubbles = $#opt + 1;
$result.= '
';
return $result;
@@ -505,7 +525,6 @@ sub bubbles {
}
}
- &Apache::lonxml::increment_counter();
return $result;
}
@@ -618,7 +637,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') {
@@ -633,12 +652,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' and $Apache::lonhomework::type eq 'exam') {
+ $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' and $Apache::lonhomework::type eq 'exam') {
+ $Apache::response::foilgroup{"$name.text"} = ' $\triangleright$ '.$text;
+ } else {
+ $Apache::response::foilgroup{"$name.text"} = $text;
+ }
+ }
$Apache::response::foilgroup{"$name.location"} = $location;
}
}