--- loncom/homework/optionresponse.pm 2002/10/01 20:17:04 1.50
+++ loncom/homework/optionresponse.pm 2002/11/11 20:13:47 1.61
@@ -1,7 +1,7 @@
# LearningOnline Network with CAPA
# option list style responses
#
-# $Id: optionresponse.pm,v 1.50 2002/10/01 20:17:04 sakharuk Exp $
+# $Id: optionresponse.pm,v 1.61 2002/11/11 20:13:47 sakharuk Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -42,6 +42,7 @@ sub start_optionresponse {
&Apache::lonxml::register('Apache::optionresponse',('foilgroup','foil','conceptgroup'));
push (@Apache::lonxml::namespace,'optionresponse');
my $id = &Apache::response::start_response($parstack,$safeeval);
+ %Apache::hint::option=();
if ($target eq 'edit') {
$result.=&Apache::edit::start_table($token).
"
Multiple Option Response Question | Delete:".
@@ -179,6 +180,7 @@ sub end_foilgroup {
my @whichopt = &whichfoils($max,$randomize);
my $temp=1;my $name;
my %responsehash;
+ my %grade;
my $right=0;
my $wrong=0;
my $ignored=0;
@@ -188,7 +190,11 @@ sub end_foilgroup {
if ( $response =~ /[^\s]/) {
my $value=$Apache::response::foilgroup{$name.'.value'};
&Apache::lonxml::debug("submitted a $response for $value \n");
- if ($value eq $response) {$right++;} else {$wrong++;}
+ if ($value eq $response) {
+ $grade{$name}='1'; $right++;
+ } else {
+ $grade{$name}='0'; $wrong++;
+ }
} else {
$ignored++;
}
@@ -197,6 +203,7 @@ sub end_foilgroup {
my $part=$Apache::inputtags::part;
my $id = $Apache::inputtags::response['-1'];
my $responsestr=&Apache::lonnet::hash2str(%responsehash);
+ my $gradestr =&Apache::lonnet::hash2str(%grade);
my %previous=&Apache::response::check_for_previous($responsestr,
$part,$id);
&Apache::lonxml::debug("Got $right right and $wrong wrong, and $ignored were ignored");
@@ -214,6 +221,7 @@ sub end_foilgroup {
}
$Apache::lonhomework::results{"resource.$part.$id.submission"}=
$responsestr;
+ $Apache::lonhomework::results{"resource.$part.$id.submissiongrading"}=$gradestr;
$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}=
$ad;
&Apache::response::handle_previous(\%previous,$ad);
@@ -310,7 +318,8 @@ sub displayfoils {
my @whichopt = &whichfoils($max,$randomize);
my $part=$Apache::inputtags::part;
my $id=$Apache::inputtags::response[-1];
- if (($Apache::lonhomework::history{"resource.$part.solved"} =~ /^correct/) || ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER')) {
+ if (($Apache::lonhomework::history{"resource.$part.solved"} =~ /^correct/) || ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER')) {
+ my $temp=1; ####
foreach $name (@whichopt) {
if ($target eq 'web') {
$result.=" ";
@@ -318,12 +327,25 @@ sub displayfoils {
$result.='\vskip 0 mm ';
}
if ($target ne 'tex') {
- $result .=$Apache::response::foilgroup{$name.'.value'}.
- ":".$Apache::response::foilgroup{$name.'.text'}."\n";
+ my $text=$Apache::response::foilgroup{$name.'.text'};
+ my $value=$Apache::response::foilgroup{$name.'.value'};
+ if (!($text=~s||$value|)) {
+ $text=$value.': '.$text;
+ }
+ $result.=$text."\n";
} else {
- $result .='\item '.$Apache::response::foilgroup{$name.'.value'}.
+ $Apache::response::foilgroup{$name.'.text'}=~s/\\item//;
+ $result .='\item \textit{'.$Apache::response::foilgroup{$name.'.value'}.'}'.
":".$Apache::response::foilgroup{$name.'.text'}."\n";
}
+ if ($Apache::lonhomework::type eq 'exam') {
+ if ($target ne 'tex') {
+ $result.=&webbubbles(\@opt,\@alphabet);
+ } else {
+ $result.=&bubbles(\@alphabet,\@opt);
+ }
+ }
+ $temp++;
}
} else {
my $temp=1;
@@ -340,25 +362,36 @@ sub displayfoils {
}
}
if ($target ne 'tex') {
- $result.=" \n".$Apache::response::foilgroup{$name.'.text'}."\n";
+ $optionlist='\n";
+ my $text=$Apache::response::foilgroup{$name.'.text'};
+ if (!($text=~s||$optionlist|)) {
+ $text=$optionlist.$text;
+ }
+ $result.=" ".$text."\n";
if ($Apache::lonhomework::type eq 'exam') {
- my $number_of_bubbles = $#opt + 1;
- $result.= '';
- for (my $ind=0;$ind<$number_of_bubbles;$ind++) {
- $result.=''.$alphabet[$ind].': '.$opt[$ind].' | ';
- }
- $result.=' ';
+ $result.=&webbubbles(\@opt,\@alphabet);
}
$temp++;
} else {
+ my $texoptionlist = &optionlist_correction($optionlist);
if ($displayoptionintex == 0) {
- my $texoptionlist = &optionlist_correction($optionlist);
+ if ($Apache::lonhomework::type eq 'exam') {$texoptionlist='';} #if exam we do not need to show optionlist
if ($Apache::response::foilgroup{$name.'.text'}=~m/\\item /) {
- $result.= $texoptionlist.$Apache::response::foilgroup{$name.'.text'};
+ if ($Apache::lonhomework::type eq 'exam') {
+ $Apache::response::foilgroup{$name.'.text'}=~s/\\item/\\item[\\textbf{$Apache::lonxml::counter}\.]/;
+ }
+ if ($Apache::response::foilgroup{$name.'.text'}=~//) {
+ $Apache::response::foilgroup{$name.'.text'}=~s|| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |;
+ $result.= $texoptionlist.$Apache::response::foilgroup{$name.'.text'};
+ }
} else {
- $result.= $texoptionlist.'\item '.$Apache::response::foilgroup{$name.'.text'};
+ if ($Apache::lonhomework::type eq 'exam') {
+ $result.= $texoptionlist.'\vspace*{-2 mm}\item[\textbf{'.$Apache::lonxml::counter.'}.]'.$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);
@@ -366,9 +399,19 @@ sub displayfoils {
$displayoptionintex=1;
} else {
if ($Apache::response::foilgroup{$name.'.text'}=~m/\\item /) {
- $result.= $Apache::response::foilgroup{$name.'.text'};
+ if ($Apache::lonhomework::type eq 'exam') {
+ $Apache::response::foilgroup{$name.'.text'}=~s/\\item/\\item[\\textbf{$Apache::lonxml::counter}\.]/;
+ }
+ if ($Apache::response::foilgroup{$name.'.text'}=~//) {
+ $Apache::response::foilgroup{$name.'.text'}=~s|| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |;
+ }
+ $result.= $Apache::response::foilgroup{$name.'.text'};
} else {
- $result.= '\item '.$Apache::response::foilgroup{$name.'.text'};
+ if ($Apache::lonhomework::type eq 'exam') {
+ $result.= '\item[\textbf{'.$Apache::lonxml::counter.'}.]'.$Apache::response::foilgroup{$name.'.text'};
+ } else {
+ $result.= '\item '.$Apache::response::foilgroup{$name.'.text'};
+ }
}
if ($Apache::lonhomework::type eq 'exam') {
$result.=&bubbles(\@alphabet,\@opt);
@@ -389,7 +432,7 @@ sub displayfoils {
sub optionlist_correction {
my $texoptionlist = shift;
- $texoptionlist =~ s/ |