--- loncom/homework/optionresponse.pm 2007/08/29 10:07:42 1.145 +++ loncom/homework/optionresponse.pm 2008/09/11 17:38:14 1.152 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # option list style responses # -# $Id: optionresponse.pm,v 1.145 2007/08/29 10:07:42 foxr Exp $ +# $Id: optionresponse.pm,v 1.152 2008/09/11 17:38:14 onken Exp $ # # Copyright Michigan State University Board of Trustees # @@ -70,8 +70,9 @@ sub start_optionresponse { $result=&Apache::response::meta_package_write('optionresponse'); } elsif ($target eq 'analyze') { my $part_id="$Apache::inputtags::part.$id"; + $Apache::lonhomework::analyze{"$part_id.type"} = 'optionresponse'; push (@{ $Apache::lonhomework::analyze{"parts"} },$part_id); - push (@{ $Apache::lonhomeowrk::analyze{"$part_id.bubble_lines"} }, 1); + push (@{ $Apache::lonhomework::analyze{"$part_id.bubble_lines"} }, 1); } return $result; @@ -158,8 +159,12 @@ ENDTABLE } # else nothing changed so just use the default mechanism } if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') { + if($env{'form.pdfFormFields'} ne 'yes') { $result .= ' \renewcommand{\labelenumi}{\Alph{enumi}.} \begin{enumerate} '; + } else { + $result .= "\\\\"; + } } return $result; } @@ -277,12 +282,23 @@ sub end_foilgroup { } } } - &Apache::lonxml::increment_counter(&getfoilcounts($max)); + my $part_id = $Apache::inputtags::part; + my $response_id = $Apache::inputtags::response[-1]; + &Apache::lonxml::increment_counter(&getfoilcounts($max), + "$part_id.$response_id"); + if ($target eq 'analyze') { + &Apache::lonhomework::set_bubble_lines(); + } + } elsif ($target eq 'edit') { $result.=&Apache::edit::end_table(); } if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') { + if($env{'form.pdfFormFields'} ne 'yes') { $result .= '\end{enumerate}'; + } else { + $result .= "\\\\"; + } } &Apache::response::poprandomnumber(); return $result; @@ -415,13 +431,27 @@ sub displayfoils { } my $lastopt=$lastresponse{$name}; my $optionlist="\n"; + + if($target eq 'tex' and $env{'form.pdfFormFields'} eq 'yes') { + my $fieldname = $env{'request.symb'}.'&part_'.$Apache::inputtags::part.'&optionresponse'.'&HWVAL_'.$Apache::inputtags::response['-1'].':'.$temp; + $optionlist = &Apache::lonxml::print_pdf_start_combobox($fieldname); + } + foreach my $option (@opt) { my $escopt=&HTML::Entities::encode($option,'\'"&<>'); - if ($option eq $lastopt) { - $optionlist.="\n"; - } else { - $optionlist.="\n"; - } + if ($option eq $lastopt) { + if ($target eq 'tex' && $env{'form.pdfFormFields'} eq 'yes') { + $optionlist .= &Apache::lonxml::print_pdf_add_combobox_option($option); + } else { + $optionlist.="\n"; + } + } else { + if ($target eq 'tex' && $env{'form.pdfFormFields'} eq 'yes') { + $optionlist .= &Apache::lonxml::print_pdf_add_combobox_option($option); + } else { + $optionlist.="\n"; + } + } } if ($target ne 'tex') { if ($Apache::lonhomework::type ne 'exam') { @@ -459,13 +489,18 @@ sub displayfoils { if ($text=~m/\\item /) { if ($Apache::lonhomework::type eq 'exam') { $text=~s/\\item/\\vskip 2 mm/; - } - $result.= $texoptionlist.$text; - } else { + } elsif ($env{'form.pdfFormFields'} ne 'yes') { + $result.= $texoptionlist.$text; + } + } else { if ($Apache::lonhomework::type eq 'exam') { $result.= $texoptionlist.' '.$text; - } else { - if ($text=~/\S/) {$result.= $texoptionlist.'\vspace*{-2 mm}\item '.$text;} else {$result.= $texoptionlist;} + } elsif ($env{'form.pdfFormFields'} ne 'yes') { + if ($text=~/\S/) { + $result.= $texoptionlist.'\vspace*{-2 mm}\item '.$text; + } else { + $result.= $texoptionlist; + } } } if ($Apache::lonhomework::type eq 'exam') { @@ -474,6 +509,12 @@ 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; + $result .= " $optionlist ". &Apache::lonxml::print_pdf_end_combobox($text).'\strut \\\\'; + $temp++; + } $displayoptionintex=0; } } @@ -495,7 +536,7 @@ sub displayfoils { sub optionlist_correction { my ($TeXlayout,@options) = @_; - my $texoptionlist='\\item [] Choices: '; + my $texoptionlist='\\item [] '.&mt('Choices:').' '; if ($TeXlayout eq 'vertical') {$texoptionlist='\\item []';} if (scalar(@options) > 0) { foreach my $option (@options) { @@ -676,12 +717,12 @@ sub end_foil { my $name = &Apache::lonxml::get_param('name',$parstack,$safeeval); &Apache::lonxml::debug("Got a name of :$name:"); if ($name eq "") { - &Apache::lonxml::warning("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; } &Apache::lonxml::debug("Using a name of :$name:"); if (defined($Apache::response::foilnames{$name})) { - &Apache::lonxml::error(&mt("Foil name [_1] appears more than once. Foil names need to be unique.",$name)); + &Apache::lonxml::error(&mt("Foil name [_1] appears more than once. Foil names need to be unique.",''.$name.'')); } $Apache::response::foilnames{$name}++; my $location =&Apache::lonxml::get_param('location',$parstack,$safeeval);