Diff for /loncom/homework/optionresponse.pm between versions 1.181 and 1.188

version 1.181, 2011/10/07 22:39:59 version 1.188, 2012/11/30 11:45:50
Line 108  sub start_foilgroup { Line 108  sub start_foilgroup {
     my $optionlist="<option></option>\n";      my $optionlist="<option></option>\n";
     my $option;      my $option;
     my @opt;      my @opt;
     eval '@opt ='. &Apache::lonxml::get_param('options',$parstack,$safeeval);      my @raw_options = &Apache::lonxml::get_param('options', $parstack, $safeeval, 0,  0, 1);
   
   
       eval '@opt ='. &Apache::lonxml::get_param('options',$parstack,$safeeval, 0, 0, 1);
   
     my $count=1;      my $count=1;
     foreach $option (@opt) {      foreach $option (@opt) {
       $optionlist.="<option value=\"$count\">$option</option>\n";        $optionlist.="<option value=\"$count\">$option</option>\n";
Line 148  ENDTABLE Line 152  ENDTABLE
   if ($target eq 'modified') {    if ($target eq 'modified') {
     my @options;      my @options;
     my $optchanged=0;      my $optchanged=0;
     eval '@options ='.&Apache::lonxml::get_param('options',$parstack,$safeeval);  
   
       eval '@options ='.&Apache::lonxml::get_param('options',$parstack,$safeeval, 0, 0, 1);
   
     if ($env{"form.$Apache::lonxml::curdepth.deleteopt"}) {      if ($env{"form.$Apache::lonxml::curdepth.deleteopt"}) {
       my $delopt=$env{"form.$Apache::lonxml::curdepth.deleteopt"};        my $delopt=$env{"form.$Apache::lonxml::curdepth.deleteopt"};
       &Apache::lonxml::debug("Deleting :$delopt:");        &Apache::lonxml::debug("Deleting :$delopt:");
Line 203  sub end_foilgroup { Line 210  sub end_foilgroup {
      -2,0);       -2,0);
     my $checkboxvalue=&Apache::lonxml::get_param('checkboxvalue',$parstack,$safeeval);      my $checkboxvalue=&Apache::lonxml::get_param('checkboxvalue',$parstack,$safeeval);
     my $checkboxchoices=(&Apache::lonxml::get_param('checkboxoptions',$parstack,$safeeval) ne 'nochoice');      my $checkboxchoices=(&Apache::lonxml::get_param('checkboxoptions',$parstack,$safeeval) ne 'nochoice');
       my $noprompt       =&Apache::lonxml::get_param('noprompt', $parstack, $safeeval);
   
     if ($target eq 'tex' && $tex_option_switch eq 'nochoice') {@opt=();}      if ($target eq 'tex' && $tex_option_switch eq 'nochoice') {@opt=();}
     &Apache::lonxml::debug("Options are $#opt");      &Apache::lonxml::debug("Options are $#opt");
     my $max = &Apache::lonxml::get_param('max',$parstack,$safeeval,'-2');      my $max = &Apache::lonxml::get_param('max',$parstack,$safeeval,'-2');
     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, $noprompt, @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 282  sub end_foilgroup { Line 291  sub end_foilgroup {
   }    }
  }   }
  my $part=$Apache::inputtags::part;   my $part=$Apache::inputtags::part;
         my $nonlenient=&is_nonlenient($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 386  sub end_foilgroup { Line 395  sub end_foilgroup {
   return $result;    return $result;
 }  }
   
 sub is_nonlenient {  sub grading_is_nonlenient {
     my ($part) = @_;      my ($part) = @_;
 # Web mode: we are non-lenient unless told otherwise   # Web mode: we are non-lenient unless told otherwise
     my $defaultparm = 'off';      my $defaultparm = 'off';
     my $nonlenient = 0;      my $nonlenient = 0;
 # Grading a bubblesheet exam: we are grading lenient unless told otherwise   # Grading a bubblesheet exam: we are grading lenient unless told otherwise
     if ($Apache::lonhomework::scantronmode) {      if ($Apache::lonhomework::scantronmode) {
         $defaultparm = 'on';          $defaultparm = 'on';
         $nonlenient = 1;          $nonlenient = 1;
     }      }
     my $lenientparm =       my $lenientparm =
         &Apache::response::get_response_param($part,'lenient',$defaultparm);            &Apache::response::get_response_param($part,'lenient',$defaultparm);
     if ($lenientparm=~/^0|off|no$/i) {      if ($lenientparm=~/^0|off|no$/i) {
         $nonlenient = 1;          $nonlenient = 1;
     } elsif ($lenientparm=~/^1|on|yes$/i) {      } elsif ($lenientparm=~/^1|on|yes$/i) {
Line 425  sub whichfoils { Line 434  sub whichfoils {
   
 sub displayanswers {  sub displayanswers {
     my ($max,$randomize,@opt)=@_;      my ($max,$randomize,@opt)=@_;
     if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;}      my @names;
     my @names = @{ $Apache::response::foilgroup{'names'} };      if (ref($Apache::response::foilgroup{'names'}) eq 'ARRAY') {
           @names = @{ $Apache::response::foilgroup{'names'} };
       }
       return if (!@names);
     my @whichopt = &whichfoils($max,$randomize);      my @whichopt = &whichfoils($max,$randomize);
     my $result;      my $result;
     if ($Apache::lonhomework::type eq 'exam') {      if ($Apache::lonhomework::type eq 'exam') {
Line 485  sub check_for_invalid { Line 497  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, $no_tfprompt, @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 508  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 549  sub displayfoils { Line 564  sub displayfoils {
     }      }
     my $internal_counter=$Apache::lonxml::counter;      my $internal_counter=$Apache::lonxml::counter;
     my $checkboxopt=&check_box_opt($target,$checkboxvalue,@opt);      my $checkboxopt=&check_box_opt($target,$checkboxvalue,@opt);
     if ($checkboxopt) {      if ($checkboxopt && (!$no_tfprompt)) {
        $result.='<br />'.         $result.='<br />'.
                 ($checkboxchoices?&mt('Choices: ').'<b>'.$opt[0].','.$opt[1].'</b>. ':'').                  ($checkboxchoices?&mt('Choices: ').'<b>'.$opt[0].','.$opt[1].'</b>. ':'').
                  &mt('Select all that are <b>[_1]</b>.',$checkboxopt);                   &mt('Select all that are <b>[_1]</b>.',$checkboxopt);
Line 803  sub bubbles { Line 818  sub bubbles {
  if ($response eq 'rankresponse') {$opt[$ind]='Rank '.$opt[$ind];}   if ($response eq 'rankresponse') {$opt[$ind]='Rank '.$opt[$ind];}
  if ($ind==0) {$leftmargin=6;} else {$leftmargin=10;}   if ($ind==0) {$leftmargin=6;} else {$leftmargin=10;}
   
  $current_length += (length($opt[$ind])+length($item)+4)*2;   $current_length += (length($opt[$ind])+length($item)+5)*2;
                   
  if ($current_length<($textwidth-$leftmargin) and $ind!=$number_of_bubbles) {   if ($current_length<($textwidth-$leftmargin) and $ind!=$number_of_bubbles) {
                           

Removed from v.1.181  
changed lines
  Added in v.1.188


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