--- loncom/homework/optionresponse.pm 2008/12/10 21:48:21 1.157 +++ loncom/homework/optionresponse.pm 2010/02/05 21:38:41 1.161 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # option list style responses # -# $Id: optionresponse.pm,v 1.157 2008/12/10 21:48:21 raeburn Exp $ +# $Id: optionresponse.pm,v 1.161 2010/02/05 21:38:41 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -190,13 +190,14 @@ sub end_foilgroup { my $TeXlayout=&Apache::lonxml::get_param('TeXlayout',$parstack,$safeeval, -2,0); + my $checkboxvalue=&Apache::lonxml::get_param('checkboxvalue',$parstack,$safeeval); if ($target eq 'tex' && $tex_option_switch eq 'nochoice') {@opt=();} &Apache::lonxml::debug("Options are $#opt"); my $max = &Apache::lonxml::get_param('max',$parstack,$safeeval,'-2'); my $randomize = &Apache::lonxml::get_param('randomize',$parstack, $safeeval,'-2'); if ($target eq 'web' || $target eq 'tex') { - $result.=&displayfoils($target,$max,$randomize,$TeXlayout,@opt); + $result.=&displayfoils($target,$max,$randomize,$TeXlayout,$checkboxvalue,@opt); $Apache::lonxml::post_evaluate=0; } elsif ( $target eq 'answer') { $result.=&displayanswers($max,$randomize,@opt); @@ -359,6 +360,15 @@ sub displayanswers { return $result; } +sub check_box_opt { + my ($target,$checkboxvalue,@opt)=@_; +# Check if we are in checkbox mode: checkboxvalue specified, on web, only two options. +# If so, return "checked" value + if ($#opt!=1) { return ''; } + if ($target ne 'web') { return ''; } + return $checkboxvalue; +} + sub check_for_invalid { my ($names,$options) = @_; my %bad_names; @@ -381,7 +391,7 @@ sub check_for_invalid { } sub displayfoils { - my ($target,$max,$randomize,$TeXlayout,@opt)=@_; + my ($target,$max,$randomize,$TeXlayout,$checkboxvalue,@opt)=@_; if (!defined(@{ $Apache::response::foilgroup{'names'} })) {return;} my @names = @{ $Apache::response::foilgroup{'names'} }; my @truelist; @@ -427,6 +437,11 @@ sub displayfoils { my $temp=1; my %lastresponse=&Apache::lonnet::str2hash($Apache::lonhomework::history{"resource.$part.$id.submission"}); my $internal_counter=$Apache::lonxml::counter; + my $checkboxopt=&check_box_opt($target,$checkboxvalue,@opt); + if ($checkboxopt) { + $result.='
'.&mt('Choices: ').''.$opt[0].','.$opt[1].'. '. + &mt('Select all that are [_1].',$checkboxopt); + } foreach $name (@whichopt) { my $text=$Apache::response::foilgroup{$name.'.text'}; if ($text!~/^\s*$/) { @@ -439,7 +454,8 @@ sub displayfoils { my $lastopt=$lastresponse{$name}; my $optionlist="\n"; - if($target eq 'tex' and $env{'form.pdfFormFields'} eq 'yes') { + if($target eq 'tex' and $env{'form.pdfFormFields'} eq 'yes' + && $Apache::inputtags::status[-1] eq 'CAN_ANSWER') { my $fieldname = $env{'request.symb'}.'&part_'.$Apache::inputtags::part.'&optionresponse'.'&HWVAL_'.$Apache::inputtags::response['-1'].':'.$temp; $optionlist = &Apache::lonxml::print_pdf_start_combobox($fieldname); } @@ -447,13 +463,15 @@ sub displayfoils { foreach my $option (@opt) { my $escopt=&HTML::Entities::encode($option,'\'"&<>'); if ($option eq $lastopt) { - if ($target eq 'tex' && $env{'form.pdfFormFields'} eq 'yes') { + if ($target eq 'tex' && $env{'form.pdfFormFields'} eq 'yes' + && $Apache::inputtags::status[-1] eq 'CAN_ANSWER') { $optionlist .= &Apache::lonxml::print_pdf_add_combobox_option($option); } else { $optionlist.="\n"; } } else { - if ($target eq 'tex' && $env{'form.pdfFormFields'} eq 'yes') { + if ($target eq 'tex' && $env{'form.pdfFormFields'} eq 'yes' + && $Apache::inputtags::status[-1] eq 'CAN_ANSWER') { $optionlist .= &Apache::lonxml::print_pdf_add_combobox_option($option); } else { $optionlist.="\n"; @@ -462,10 +480,34 @@ sub displayfoils { } if ($target ne 'tex') { if ($Apache::lonhomework::type ne 'exam') { - $optionlist=''. + '\n"; + } else { +# classic selection list + $optionlist='\n"; + } } else { $optionlist=''.(' 'x10).''; } @@ -516,9 +558,9 @@ sub displayfoils { '\end{enumerate} \vskip -8 mm \strut '; $internal_counter++; } - if ($target eq 'tex' && $env{'form.pdfFormFields'} eq 'yes') { - $text =~ s/.*indent(.*)$/$1/; - $text = $1; + if ($target eq 'tex' && $env{'form.pdfFormFields'} eq 'yes' + && $Apache::inputtags::status[-1] eq 'CAN_ANSWER') { + $text =~ s/\\item//m; $result .= " $optionlist ". &Apache::lonxml::print_pdf_end_combobox($text).'\strut \\\\'; $temp++; }