--- loncom/homework/optionresponse.pm 2010/02/05 15:34:02 1.159 +++ loncom/homework/optionresponse.pm 2010/02/05 23:02:39 1.162 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # option list style responses # -# $Id: optionresponse.pm,v 1.159 2010/02/05 15:34:02 www Exp $ +# $Id: optionresponse.pm,v 1.162 2010/02/05 23:02:39 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -123,10 +123,21 @@ sub start_foilgroup { Delete an Option: + ENDTABLE - $result.= &Apache::edit::checked_arg('Print options:','texoptions', + $result.= ''.&Apache::edit::checked_arg('Print options:','texoptions', [ ['nochoice','Don\'t show option list'] ] - ,$token); + ,$token).''; + $result.= ''; $result.= &Apache::edit::end_row(); $result.= &Apache::edit::start_spanning_row(); $result.= $insertlist.'
'; @@ -151,7 +162,7 @@ ENDTABLE $optchanged=1; } my $rebuildtag = &Apache::edit::get_new_args($token,$parstack,$safeeval, - ('texoptions')); + 'texoptions','checkboxvalue'); if ($optchanged || $rebuildtag ) { $result = "[2]{'texoptions'}.'" '; + $result .= 'checkboxvalue="'.$token->[2]{'checkboxvalue'}.'"'; $result .= '>'; } # else nothing changed so just use the default mechanism } @@ -190,13 +202,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 +372,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 +403,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 +449,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*$/) { @@ -463,9 +490,6 @@ sub displayfoils { } } } -# debug for checkbox - my $checkboxopt=''; -# end debug for checkbox if ($target ne 'tex') { if ($Apache::lonhomework::type ne 'exam') { # we are on the web, this is not an exam, and the problem can be answered @@ -487,8 +511,8 @@ sub displayfoils { # defopt is what the field is going to start out with: either previous choice or altopt # fieldname is this input field's name after HWVAL_ $optionlist=''. - '\n"; + '\n"; } else { # classic selection list $optionlist='