--- loncom/homework/optionresponse.pm 2011/09/13 21:42:58 1.177 +++ loncom/homework/optionresponse.pm 2011/10/07 22:39:59 1.181 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # option list style responses # -# $Id: optionresponse.pm,v 1.177 2011/09/13 21:42:58 raeburn Exp $ +# $Id: optionresponse.pm,v 1.181 2011/10/07 22:39:59 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -155,13 +155,9 @@ ENDTABLE splice(@options,$delopt-1,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"}; - if ($options[0]) { - push(@options,$newopt); - } else { - $options[0]=$newopt; - } + push(@options,$newopt); $optchanged=1; } my $rebuildtag = &Apache::edit::get_new_args($token,$parstack,$safeeval, @@ -226,23 +222,6 @@ sub end_foilgroup { push (@{ $Apache::lonhomework::analyze{"$part_id.options"} },@opt); } 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()) { my @whichopt = &whichfoils($max,$randomize); @@ -279,12 +258,14 @@ sub end_foilgroup { } $temp += $numrows; } else { + $response=&Apache::response::getresponse($temp); if ($response=~/\S/) { $response = $opt[$response]; } $temp ++; } } else { + $response=&Apache::response::getresponse($temp); $temp ++; } if ( $response =~ /[^\s]/) { @@ -301,6 +282,7 @@ sub end_foilgroup { } } my $part=$Apache::inputtags::part; + my $nonlenient=&is_nonlenient($part); my $id = $Apache::inputtags::response['-1']; my $responsestr=&Apache::lonnet::hash2str(%responsehash); my $gradestr =&Apache::lonnet::hash2str(%grade); @@ -404,6 +386,26 @@ sub end_foilgroup { return $result; } +sub 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 { my ($max)=@_; # +1 since instructors will count from 1 @@ -912,9 +914,6 @@ sub end_foil { &Apache::lonxml::warning(&mt('Foils without names exist. This can cause problems to malfunction.')); $name=$Apache::lonxml::curdepth; } - if ($name eq "0") { - &Apache::lonxml::error(&mt('Foil name [_1] is not supported. Please choose another name.',''.$name.'')); - } &Apache::lonxml::debug("Using a name of :$name:"); if (defined($Apache::response::foilnames{$name})) { &Apache::lonxml::error(&mt("Foil name [_1] appears more than once. Foil names need to be unique.",''.$name.''));