--- rat/lonpage.pm 2009/10/06 11:01:35 1.91.2.1 +++ rat/lonpage.pm 2011/07/28 02:53:33 1.95 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Page Handler # -# $Id: lonpage.pm,v 1.91.2.1 2009/10/06 11:01:35 foxr Exp $ +# $Id: lonpage.pm,v 1.95 2011/07/28 02:53:33 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.' }'; @@ -339,6 +354,8 @@ sub handler { $output=~s/\<\/form[^\>]*\>//gsi; $output=~ s/\<((?:input|select|button|textarea)[^\>]+)name\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\>]*)\>/\<$1 name="$prefix$2" $3\>/gsi; + $output=~ + s/\<((?:input|select)[^\>]+\Qjavascript:setSubmittedPart\E)\(\s*[\'\"]([^\'\"]+)[\'\"]*\s*\)/\<$1('$2','$prefix')/gsi; } $thisdir=~s/\/[^\/]*$//; foreach (@rlinks) { @@ -372,7 +389,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 +413,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 +427,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 +436,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 +445,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 +471,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,25 +492,25 @@ 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++) { - $r->print(' & '); - } +# for (my $incol=1;$incol<=$avespan;$incol++) { +# $r->print(' & '); +# } } } - unless ($target eq 'tex') { + unless (($target eq 'tex') || ($target eq 'tex_answer')) { $r->print(''); } else { - $r->print('REMOVETHEHEADOFLONGTABLE\\\\'); +# $r->print('REMOVETHEHEADOFLONGTABLE\\\\'); } } } - unless ($target eq 'tex') { + unless (($target eq 'tex') || ($target eq 'tex_answer')) { $r->print("\n"); } else { - $r->print('\end{longtable}\strut'); +# $r->print('\end{longtable}\strut'); } # ---------------------------------------------------------------- Submit, etc. if ($nforms) { @@ -501,7 +518,7 @@ sub handler { ''); } - unless ($target eq 'tex') { + unless (($target eq 'tex') || ($target eq 'tex_answer')) { $r->print(&Apache::loncommon::end_page({'discussion' => 1,})); } else { @@ -538,10 +555,6 @@ sub handler { sub get_buttons { my ($hash,$rid) = @_; - # which icons do we use? - my $extension='png'; - if ($env{'environment.icons'} eq 'classic') { $extension='gif'; } - my $metainfo = ''; my $esrc=&Apache::lonnet::declutter($hash->{'src_'.$rid}); my ($mapid,$resid)=split(/\./,$rid); @@ -558,13 +571,13 @@ sub get_buttons { || !$hash->{'encrypted_'.$rid})) { $metainfo .=''. ''. - ''. + ''. ''; } $metainfo .= ''. - ''. + ''. ''; if (($hash->{'src_'.$rid}=~/\.(problem|exam|quiz|assess|survey|form)$/) && ($hash->{'src_'.$rid} !~ m-^/uploaded/-)) { @@ -574,12 +587,12 @@ sub get_buttons { ''. '&command=submission">'. - ''. + ''. ''. ''. '&command=gradingmenu">'. - ''. + ''. ''; } if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) { @@ -587,7 +600,7 @@ sub get_buttons { ''. '" >'. - ''. + ''. ''; } }