Diff for /loncom/homework/optionresponse.pm between versions 1.178 and 1.183

version 1.178, 2011/09/16 02:27:59 version 1.183, 2011/11/29 13:24:38
Line 32 Line 32
   
 package Apache::optionresponse;  package Apache::optionresponse;
 use strict;  use strict;
   use Apache::inputtags();
 use Apache::response();  use Apache::response();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnet;  use Apache::lonnet;
Line 155  ENDTABLE Line 156  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 210  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 223  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 303  sub end_foilgroup { Line 283  sub end_foilgroup {
   }    }
  }   }
  my $part=$Apache::inputtags::part;   my $part=$Apache::inputtags::part;
           my $nonlenient=&Apache::inputtags::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 485  sub check_for_invalid { Line 466  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 495  sub displayfoils { Line 477  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 914  sub end_foil { Line 898  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>'));

Removed from v.1.178  
changed lines
  Added in v.1.183


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>