version 1.73, 2003/04/02 18:40:37
|
version 1.78, 2003/05/27 13:56:21
|
Line 185 sub end_foilgroup {
|
Line 185 sub end_foilgroup {
|
my $wrong=0; |
my $wrong=0; |
my $ignored=0; |
my $ignored=0; |
foreach $name (@whichopt) { |
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; |
$responsehash{$name}=$response; |
if ( $response =~ /[^\s]/) { |
if ( $response =~ /[^\s]/) { |
my $value=$Apache::response::foilgroup{$name.'.value'}; |
my $value=$Apache::response::foilgroup{$name.'.value'}; |
Line 207 sub end_foilgroup {
|
Line 210 sub end_foilgroup {
|
my %previous=&Apache::response::check_for_previous($responsestr, |
my %previous=&Apache::response::check_for_previous($responsestr, |
$part,$id); |
$part,$id); |
&Apache::lonxml::debug("Got $right right and $wrong wrong, and $ignored were ignored"); |
&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"}= |
$Apache::lonhomework::results{"resource.$part.$id.submission"}= |
$responsestr; |
$responsestr; |
$Apache::lonhomework::results{"resource.$part.$id.submissiongrading"}=$gradestr; |
$Apache::lonhomework::results{"resource.$part.$id.submissiongrading"}=$gradestr; |
$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}= |
|
$ad; |
if (!$Apache::lonhomework::scantronmode) { |
&Apache::response::handle_previous(\%previous,$ad); |
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') { |
} elsif ($target eq 'edit') { |
$result.=&Apache::edit::end_table(); |
$result.=&Apache::edit::end_table(); |
} |
} |
if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') {$result .= '\end{enumerate}';} |
if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') { |
|
$result .= '\end{enumerate}'; |
|
} |
return $result; |
return $result; |
} |
} |
|
|
Line 245 sub getfoilcounts {
|
Line 265 sub getfoilcounts {
|
} |
} |
|
|
sub whichfoils { |
sub whichfoils { |
my ($max,$randomize)=@_; |
my ($max,$randomize)=@_; |
$max = &getfoilcounts($max); |
return &Apache::response::whichorder($max,$randomize, |
&Apache::lonxml::debug("randomize $randomize"); |
&Apache::response::showallfoils(), |
if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;} |
\%Apache::response::foilgroup); |
my @names = @{ $Apache::response::foilgroup{'names'} }; |
|
my @whichopt =(); |
|
my (%top,@toplist,%bottom,@bottomlist); |
|
if (!(&Apache::response::showallfoils() || ($randomize eq 'no'))) { |
|
my $current=0; |
|
foreach my $name (@names) { |
|
$current++; |
|
if ($Apache::response::foilgroup{$name.'.location'} eq 'top') { |
|
$top{$name}=$current; |
|
} elsif ($Apache::response::foilgroup{$name.'.location'} eq |
|
'bottom') { |
|
$bottom{$name}=$current; |
|
} |
|
} |
|
} |
|
while ((($#whichopt+1) < $max) && ($#names > -1)) { |
|
&Apache::lonxml::debug("Have $#whichopt max is $max"); |
|
my $aopt; |
|
if (&Apache::response::showallfoils() || ($randomize eq 'no')) { |
|
$aopt=0; |
|
} else { |
|
$aopt=int(&Math::Random::random_uniform() * ($#names+1)); |
|
} |
|
&Apache::lonxml::debug("From $#whichopt $max $#names elms, picking $aopt"); |
|
$aopt=splice(@names,$aopt,1); |
|
&Apache::lonxml::debug("Picked $aopt"); |
|
if ($top{$aopt}) { |
|
$toplist[$top{$aopt}]=$aopt; |
|
} elsif ($bottom{$aopt}) { |
|
$bottomlist[$bottom{$aopt}]=$aopt; |
|
} else { |
|
push (@whichopt,$aopt); |
|
} |
|
} |
|
for (my $i=0;$i<=$#toplist;$i++) { |
|
if ($toplist[$i]) { unshift(@whichopt,$toplist[$i]) } |
|
} |
|
for (my $i=0;$i<=$#bottomlist;$i++) { |
|
if ($bottomlist[$i]) { push(@whichopt,$bottomlist[$i]) } |
|
} |
|
|
|
return @whichopt; |
|
} |
} |
|
|
sub displayanswers { |
sub displayanswers { |
Line 417 sub displayfoils {
|
Line 395 sub displayfoils {
|
} |
} |
if ($Apache::lonhomework::type eq 'exam') { |
if ($Apache::lonhomework::type eq 'exam') { |
$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 '; |
$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 '; |
|
# $Apache::lonxml::counter++; |
} |
} |
$displayoptionintex=1; |
$displayoptionintex=1; |
} else { |
} else { |
Line 437 sub displayfoils {
|
Line 416 sub displayfoils {
|
} |
} |
if ($Apache::lonhomework::type eq 'exam') { |
if ($Apache::lonhomework::type eq 'exam') { |
$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 '; |
$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 '; |
|
# $Apache::lonxml::counter++; |
} |
} |
} |
} |
} |
} |
Line 505 sub bubbles {
|
Line 485 sub bubbles {
|
} |
} |
|
|
} |
} |
&Apache::lonxml::increment_counter(); |
|
return $result; |
return $result; |
} |
} |
|
|
Line 646 sub end_foil {
|
Line 625 sub end_foil {
|
} else { |
} else { |
push @{ $Apache::response::foilgroup{'names'} }, $name; |
push @{ $Apache::response::foilgroup{'names'} }, $name; |
$Apache::response::foilgroup{"$name.value"} = $value; |
$Apache::response::foilgroup{"$name.value"} = $value; |
if ($Apache::lonhomework::type eq 'exam') { |
if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam') { |
$Apache::response::foilgroup{"$name.text"} = '\vskip 5 mm $\triangleright$ '.$text; |
$Apache::response::foilgroup{"$name.text"} = '\vskip 5 mm $\triangleright$ '.$text; |
} else { |
} else { |
if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam') { |
if ($target eq 'tex' and $Apache::lonhomework::type eq 'exam') { |