--- rat/lonpage.pm 2010/03/16 19:56:02 1.93 +++ rat/lonpage.pm 2010/07/13 00:16:23 1.94 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Page Handler # -# $Id: lonpage.pm,v 1.93 2010/03/16 19:56:02 droeschl Exp $ +# $Id: lonpage.pm,v 1.94 2010/07/13 00:16:23 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -158,6 +158,19 @@ sub handler { my $number_of_columns = 1; my $requrl=$r->uri; my $target = $env{'form.grade_target'}; + +# Short term solution: define target as 'tex_answer' when retrieving answers +# for resources in a .page when generating printouts. +# A better long-term fix would be to modify the way problem rendering, and +# answer rendering are retrieved for individual resources when printing a .page, +# so rendered problem and answer are sequential for individual resources in +# the .page +# + if ($target eq 'answer') { + if ($env{'form.answer_output_mode'} eq 'tex') { + $target = 'tex_answer'; + } + } # &Apache::lonnet::logthis("Got a target of $target"); if ($target eq 'meta') { &Apache::loncommon::content_type($r,'text/html'); @@ -242,12 +255,14 @@ sub handler { my %posthash=('request.prefix' => $prefix, 'LONCAPA_INTERNAL_no_discussion' => 'true', 'symb' => $symb); - if ($env{'form.grade_target'} eq 'tex') { + if (($env{'form.grade_target'} eq 'tex') || + ($env{'form.answer_output_mode'} eq 'tex')) { $posthash{'grade_target'}=$env{'form.grade_target'}; $posthash{'textwidth'}=$env{'form.textwidth'}; $posthash{'problem_split'}=$env{'form.problem_split'}; $posthash{'latex_type'}=$env{'form.latex_type'}; $posthash{'rndseed'}=$env{'form.rndseed'}; + $posthash{'answer_output_mode'} = $env{'form.answer_output_mode'}; } my $submitted=exists($env{'form.all_submit'}); if (!$submitted) { @@ -271,7 +286,7 @@ sub handler { } my $output=Apache::lonnet::ssi($src,%posthash); $output=~s|//(\s*)?\s||gs; - if ($target eq 'tex') { + if (($target eq 'tex') || ($target eq 'tex_answer')) { $output =~ s/^([^&]+)\\begin{document}//; $output =~ s/\\end{document}//; # $output = '\parbox{\minipagewidth}{ '.$output.' }'; @@ -372,7 +387,7 @@ sub handler { # ------------------------------------------------------------------ Build page # ---------------------------------------------------------------- Send headers - unless ($target eq 'tex') { + unless (($target eq 'tex') || ($target eq 'tex_answer')) { if ($isxml) { &Apache::loncommon::content_type($r,'text/xml'); } else { @@ -396,7 +411,7 @@ sub handler { &Apache::lonenc::check_encrypt($requrl) .'">'); } - } elsif ($target eq 'tex') { + } elsif (($target eq 'tex') || ($target eq 'tex_answer')) { # I think this is not needed as the header # will be put in for each of the page parts # by the londefdef.pm now that we are opening up @@ -410,7 +425,7 @@ sub handler { # \begin{document}'); } # ----------------------------------------------------------------- Start table - if ($target eq 'tex') { + if (($target eq 'tex') || ($target eq 'tex_answer')) { # # $r->print('\begin{longtable}INSERTTHEHEADOFLONGTABLE\endfirsthead\endhead '); if ($number_of_columns le $lcm) {$number_of_columns=$lcm;}; } else { @@ -419,7 +434,7 @@ sub handler { # generate rows for ($i=0;$i<=$#rows;$i++) { if ($rows[$i]) { - unless ($target eq 'tex') { + unless (($target eq 'tex') || ($target eq 'tex_answer')) { $r->print("\n"); } my @colcont=split(/\&/,$rows[$i]); @@ -428,11 +443,11 @@ sub handler { my $rid=$colcont[$j]; my $metainfo =&get_buttons(\%hash,$rid).'
'; - unless ($target eq 'tex') { + unless (($target eq 'tex') || ($target eq 'tex_answer')) { $r->print('print(' bgcolor="'. $ssibgcolor{$rid}.'"'); @@ -454,13 +469,13 @@ sub handler { $r->print('>'); } $r->print($ssibody{$rid}); - unless ($target eq 'tex') { + unless (($target eq 'tex') || ($target eq 'tex_answer')) { $r->print(''); } if ($env{'course.'. $env{'request.course.id'}. '.pageseparators'} eq 'yes') { - unless($target eq 'tex') { + unless (($target eq 'tex') || ($target eq 'tex_answer')) { $r->print('
'); } } @@ -475,7 +490,7 @@ sub handler { &mt('It is recommended that you use an up-to-date virus scanner before handling this file.').'

'. &Apache::londocs::entryline(0,&mt("Click to download or use your browser's Save Link function"),'/'.&Apache::lonnet::declutter($hash{'src_'.$rid})).'


'); } - unless ($target eq 'tex') { + unless (($target eq 'tex') || ($target eq 'tex_answer')) { $r->print(''); } else { # for (my $incol=1;$incol<=$avespan;$incol++) { @@ -483,14 +498,14 @@ sub handler { # } } } - unless ($target eq 'tex') { + unless (($target eq 'tex') || ($target eq 'tex_answer')) { $r->print(''); } else { # $r->print('REMOVETHEHEADOFLONGTABLE\\\\'); } } } - unless ($target eq 'tex') { + unless (($target eq 'tex') || ($target eq 'tex_answer')) { $r->print("\n"); } else { # $r->print('\end{longtable}\strut'); @@ -501,7 +516,7 @@ sub handler { ''); } - unless ($target eq 'tex') { + unless (($target eq 'tex') || ($target eq 'tex_answer')) { $r->print(&Apache::loncommon::end_page({'discussion' => 1,})); } else {