version 1.177, 2011/09/13 21:42:58
|
version 1.184, 2011/12/15 01:21:28
|
Line 155 ENDTABLE
|
Line 155 ENDTABLE
|
splice(@options,$delopt-1,1); |
splice(@options,$delopt-1,1); |
$optchanged=1; |
$optchanged=1; |
} |
} |
if ($env{"form.$Apache::lonxml::curdepth.options"}) { |
if ($env{"form.$Apache::lonxml::curdepth.options"} ne '') { |
my $newopt = $env{"form.$Apache::lonxml::curdepth.options"}; |
my $newopt = $env{"form.$Apache::lonxml::curdepth.options"}; |
if ($options[0]) { |
push(@options,$newopt); |
push(@options,$newopt); |
|
} else { |
|
$options[0]=$newopt; |
|
} |
|
$optchanged=1; |
$optchanged=1; |
} |
} |
my $rebuildtag = &Apache::edit::get_new_args($token,$parstack,$safeeval, |
my $rebuildtag = &Apache::edit::get_new_args($token,$parstack,$safeeval, |
Line 213 sub end_foilgroup {
|
Line 209 sub end_foilgroup {
|
my $randomize = &Apache::lonxml::get_param('randomize',$parstack, |
my $randomize = &Apache::lonxml::get_param('randomize',$parstack, |
$safeeval,'-2'); |
$safeeval,'-2'); |
if ($target eq 'web' || $target eq 'tex') { |
if ($target eq 'web' || $target eq 'tex') { |
$result.=&displayfoils($target,$max,$randomize,$TeXlayout,$checkboxvalue,$checkboxchoices,@opt); |
$result.=&displayfoils($target,$max,$randomize,$TeXlayout,$checkboxvalue,$checkboxchoices,$tex_option_switch,@opt); |
$Apache::lonxml::post_evaluate=0; |
$Apache::lonxml::post_evaluate=0; |
} elsif ( $target eq 'answer') { |
} elsif ( $target eq 'answer') { |
$result.=&displayanswers($max,$randomize,@opt); |
$result.=&displayanswers($max,$randomize,@opt); |
Line 226 sub end_foilgroup {
|
Line 222 sub end_foilgroup {
|
push (@{ $Apache::lonhomework::analyze{"$part_id.options"} },@opt); |
push (@{ $Apache::lonhomework::analyze{"$part_id.options"} },@opt); |
} elsif ( $target eq 'grade') { |
} elsif ( $target eq 'grade') { |
|
|
my $nonlenient=0; |
|
my $part=$Apache::inputtags::part; |
|
my $lenientparm=&Apache::lonnet::EXT("resource.$part.lenient"); |
|
|
|
if ($Apache::lonhomework::scantronmode) { |
|
$nonlenient=0; |
|
# Grading an exam: we are grading lenient unless told not to |
|
if ($lenientparm=~/^0|off|no$/i) { |
|
$nonlenient=1; |
|
} |
|
} else { |
|
# Web mode: we are non-lenient unless told to |
|
$nonlenient=1; |
|
if ($lenientparm=~/^1|on|yes$/i) { |
|
$nonlenient=0; |
|
} |
|
} |
|
if ( &Apache::response::submitted()) { |
if ( &Apache::response::submitted()) { |
|
|
my @whichopt = &whichfoils($max,$randomize); |
my @whichopt = &whichfoils($max,$randomize); |
Line 279 sub end_foilgroup {
|
Line 258 sub end_foilgroup {
|
} |
} |
$temp += $numrows; |
$temp += $numrows; |
} else { |
} else { |
|
$response=&Apache::response::getresponse($temp); |
if ($response=~/\S/) { |
if ($response=~/\S/) { |
$response = $opt[$response]; |
$response = $opt[$response]; |
} |
} |
$temp ++; |
$temp ++; |
} |
} |
} else { |
} else { |
|
$response=&Apache::response::getresponse($temp); |
$temp ++; |
$temp ++; |
} |
} |
if ( $response =~ /[^\s]/) { |
if ( $response =~ /[^\s]/) { |
Line 301 sub end_foilgroup {
|
Line 282 sub end_foilgroup {
|
} |
} |
} |
} |
my $part=$Apache::inputtags::part; |
my $part=$Apache::inputtags::part; |
|
my $nonlenient=&grading_is_nonlenient($part); |
my $id = $Apache::inputtags::response['-1']; |
my $id = $Apache::inputtags::response['-1']; |
my $responsestr=&Apache::lonnet::hash2str(%responsehash); |
my $responsestr=&Apache::lonnet::hash2str(%responsehash); |
my $gradestr =&Apache::lonnet::hash2str(%grade); |
my $gradestr =&Apache::lonnet::hash2str(%grade); |
Line 404 sub end_foilgroup {
|
Line 386 sub end_foilgroup {
|
return $result; |
return $result; |
} |
} |
|
|
|
sub grading_is_nonlenient { |
|
my ($part) = @_; |
|
# Web mode: we are non-lenient unless told otherwise |
|
my $defaultparm = 'off'; |
|
my $nonlenient = 0; |
|
# Grading a bubblesheet exam: we are grading lenient unless told otherwise |
|
if ($Apache::lonhomework::scantronmode) { |
|
$defaultparm = 'on'; |
|
$nonlenient = 1; |
|
} |
|
my $lenientparm = |
|
&Apache::response::get_response_param($part,'lenient',$defaultparm); |
|
if ($lenientparm=~/^0|off|no$/i) { |
|
$nonlenient = 1; |
|
} elsif ($lenientparm=~/^1|on|yes$/i) { |
|
$nonlenient = 0; |
|
} |
|
return $nonlenient; |
|
} |
|
|
sub getfoilcounts { |
sub getfoilcounts { |
my ($max)=@_; |
my ($max)=@_; |
# +1 since instructors will count from 1 |
# +1 since instructors will count from 1 |
Line 483 sub check_for_invalid {
|
Line 485 sub check_for_invalid {
|
} |
} |
|
|
sub displayfoils { |
sub displayfoils { |
my ($target,$max,$randomize,$TeXlayout,$checkboxvalue,$checkboxchoices,@opt)=@_; |
my ($target,$max,$randomize,$TeXlayout,$checkboxvalue,$checkboxchoices, |
|
$tex_option_switch,@opt)=@_; |
if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;} |
if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;} |
my @names = @{ $Apache::response::foilgroup{'names'} }; |
my @names = @{ $Apache::response::foilgroup{'names'} }; |
my @truelist; |
my @truelist; |
Line 493 sub displayfoils {
|
Line 496 sub displayfoils {
|
my $displayoptionintex=1; |
my $displayoptionintex=1; |
my @alphabet = ('A'..'Z'); |
my @alphabet = ('A'..'Z'); |
my @whichopt = &whichfoils($max,$randomize); |
my @whichopt = &whichfoils($max,$randomize); |
&check_for_invalid(\@whichopt,\@opt); |
unless (($target eq 'tex') && ($tex_option_switch eq 'nochoice')) { |
|
&check_for_invalid(\@whichopt,\@opt); |
|
} |
my $part=$Apache::inputtags::part; |
my $part=$Apache::inputtags::part; |
my $id=$Apache::inputtags::response[-1]; |
my $id=$Apache::inputtags::response[-1]; |
my $break; |
my $break; |
Line 912 sub end_foil {
|
Line 917 sub end_foil {
|
&Apache::lonxml::warning(&mt('Foils without names exist. This can cause problems to malfunction.')); |
&Apache::lonxml::warning(&mt('Foils without names exist. This can cause problems to malfunction.')); |
$name=$Apache::lonxml::curdepth; |
$name=$Apache::lonxml::curdepth; |
} |
} |
if ($name eq "0") { |
|
&Apache::lonxml::error(&mt('Foil name [_1] is not supported. Please choose another name.','<b><tt>'.$name.'</tt></b>')); |
|
} |
|
&Apache::lonxml::debug("Using a name of :$name:"); |
&Apache::lonxml::debug("Using a name of :$name:"); |
if (defined($Apache::response::foilnames{$name})) { |
if (defined($Apache::response::foilnames{$name})) { |
&Apache::lonxml::error(&mt("Foil name [_1] appears more than once. Foil names need to be unique.",'<b><tt>'.$name.'</tt></b>')); |
&Apache::lonxml::error(&mt("Foil name [_1] appears more than once. Foil names need to be unique.",'<b><tt>'.$name.'</tt></b>')); |