--- loncom/homework/optionresponse.pm 2010/02/05 20:54:33 1.160 +++ 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.160 2010/02/05 20:54:33 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); @@ -360,8 +373,12 @@ sub displayanswers { } sub check_box_opt { -# Check if we are in checkbox mode. If so, return "checked" value - return ''; + 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 { @@ -386,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; @@ -432,7 +449,7 @@ 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(); + my $checkboxopt=&check_box_opt($target,$checkboxvalue,@opt); if ($checkboxopt) { $result.='
'.&mt('Choices: ').''.$opt[0].','.$opt[1].'. '. &mt('Select all that are [_1].',$checkboxopt);