version 1.46, 2002/08/05 18:24:05
|
version 1.47, 2002/09/23 17:20:41
|
Line 51 sub start_radiobuttonresponse {
|
Line 51 sub start_radiobuttonresponse {
|
."</td><td> ".&Apache::edit::end_row() |
."</td><td> ".&Apache::edit::end_row() |
.&Apache::edit::start_spanning_row(); |
.&Apache::edit::start_spanning_row(); |
|
|
$result.=&Apache::edit::text_arg('Max Number Of Shown Foils:','max',$token,'4'). |
$result.= |
&Apache::edit::end_row().&Apache::edit::start_spanning_row()."\n"; |
&Apache::edit::text_arg('Max Number Of Shown Foils:','max',$token,'4'). |
|
&Apache::edit::select_arg('Randomize Foil Order','randomize', |
|
['yes','no'],$token). |
|
&Apache::edit::end_row().&Apache::edit::start_spanning_row()."\n"; |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
my $constructtag=&Apache::edit::get_new_args($token,$parstack, |
my $constructtag=&Apache::edit::get_new_args($token,$parstack, |
$safeeval,'max'); |
$safeeval,'max','randomize'); |
if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); } |
if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); } |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$result .= '\begin{enumerate}'; |
$result .= '\begin{enumerate}'; |
Line 98 sub storesurvey {
|
Line 101 sub storesurvey {
|
} |
} |
|
|
sub grade_response { |
sub grade_response { |
my ($max,$answer)=@_; |
my ($max,$answer,$randomize)=@_; |
if (!defined($ENV{'form.submitted'})) { return; } |
if (!defined($ENV{'form.submitted'})) { return; } |
my $response = $ENV{'form.HWVAL'.$Apache::inputtags::response['-1']}; |
my $response = $ENV{'form.HWVAL'.$Apache::inputtags::response['-1']}; |
if ( $response !~ /[0-9]+/) { return; } |
if ( $response !~ /[0-9]+/) { return; } |
my $part=$Apache::inputtags::part; |
my $part=$Apache::inputtags::part; |
my $id = $Apache::inputtags::response['-1']; |
my $id = $Apache::inputtags::response['-1']; |
my @whichfoils=&whichfoils($max,$answer); |
my @whichfoils=&whichfoils($max,$answer,$randomize); |
my %responsehash; |
my %responsehash; |
$responsehash{$whichfoils[$response]}=$response; |
$responsehash{$whichfoils[$response]}=$response; |
my $responsestr=&Apache::lonnet::hash2str(%responsehash); |
my $responsestr=&Apache::lonnet::hash2str(%responsehash); |
Line 143 sub end_foilgroup {
|
Line 146 sub end_foilgroup {
|
if (($falsecnt+1)>$max) { $count=$max } else { $count=$falsecnt+1; } |
if (($falsecnt+1)>$max) { $count=$max } else { $count=$falsecnt+1; } |
my $answer = int(rand ($count)); |
my $answer = int(rand ($count)); |
&Apache::lonxml::debug("Answer is $answer, $count from $max, $falsecnt"); |
&Apache::lonxml::debug("Answer is $answer, $count from $max, $falsecnt"); |
|
my $randomize = &Apache::lonxml::get_param('randomize',$parstack, |
|
$safeeval,'-2'); |
if ($target eq 'web' || $target eq 'tex') { |
if ($target eq 'web' || $target eq 'tex') { |
$result=&displayfoils($target,$max,$answer); |
$result=&displayfoils($target,$max,$answer,$randomize); |
} elsif ($target eq 'answer' ) { |
} elsif ($target eq 'answer' ) { |
$result=&displayanswers($max,$answer); |
$result=&displayanswers($max,$answer,$randomize); |
} elsif ( $target eq 'grade') { |
} elsif ( $target eq 'grade') { |
&grade_response($max,$answer); |
&grade_response($max,$answer,$randomize); |
} |
} |
} |
} |
} |
} |
Line 211 sub displayallfoils {
|
Line 216 sub displayallfoils {
|
} |
} |
|
|
sub whichfoils { |
sub whichfoils { |
my ($max,$answer)=@_; |
my ($max,$answer,$randomize)=@_; |
|
|
my @truelist; |
my @truelist; |
my @falselist; |
my @falselist; |
Line 223 sub whichfoils {
|
Line 228 sub whichfoils {
|
} |
} |
if (&Apache::response::showallfoils()) { |
if (&Apache::response::showallfoils()) { |
@whichfalse=@names; |
@whichfalse=@names; |
|
} elsif ($randomize=='no') { |
|
&Apache::lonxml::debug("No randomization"); |
|
my $havetrue=0; |
|
foreach my $name (@names) { |
|
if ($Apache::response::foilgroup{$name.'.value'} eq 'true') { |
|
if (!$havetrue ) { |
|
push (@whichfalse,$name); |
|
$havetrue++; |
|
} |
|
} elsif ($Apache::response::foilgroup{$name.'.value'} eq 'false') { |
|
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 <foilgroup>")); |
|
} |
|
} |
} else { |
} else { |
foreach my $name (@names) { |
foreach my $name (@names) { |
#result.="<br /><b>$name</b> is <i> $Apache::response::foilgroup{$name.'.value'} </i>"; |
#result.="<br /><b>$name</b> is <i> $Apache::response::foilgroup{$name.'.value'} </i>"; |
Line 252 sub whichfoils {
|
Line 273 sub whichfoils {
|
} |
} |
|
|
sub displayfoils { |
sub displayfoils { |
my ($target,$max,$answer)=@_; |
my ($target,$max,$answer,$randomize)=@_; |
my $result; |
my $result; |
|
|
my @whichfoils=&whichfoils($max,$answer); |
my @whichfoils=&whichfoils($max,$answer,$randomize); |
if ($Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"} =~ /^correct/ || ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER')) { |
if ($Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"} =~ /^correct/ || ($Apache::inputtags::status[-1] eq 'SHOW_ANSWER')) { |
foreach my $name (@whichfoils) { |
foreach my $name (@whichfoils) { |
if ($target ne 'tex') { |
if ($target ne 'tex') { |
Line 299 sub displayfoils {
|
Line 320 sub displayfoils {
|
} |
} |
|
|
sub displayanswers { |
sub displayanswers { |
my ($max,$answer)=@_; |
my ($max,$answer,$randomize)=@_; |
my @whichopt = &whichfoils($max,$answer); |
my @whichopt = &whichfoils($max,$answer,$randomize); |
my $result=&Apache::response::answer_header('radiobuttonresponse'); |
my $result=&Apache::response::answer_header('radiobuttonresponse'); |
foreach my $name (@whichopt) { |
foreach my $name (@whichopt) { |
$result.=&Apache::response::answer_part('radiobuttonresponse', |
$result.=&Apache::response::answer_part('radiobuttonresponse', |