--- rat/lonpage.pm 2008/11/20 13:11:43 1.88
+++ rat/lonpage.pm 2012/11/30 18:16:53 1.98
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Page Handler
#
-# $Id: lonpage.pm,v 1.88 2008/11/20 13:11:43 jms Exp $
+# $Id: lonpage.pm,v 1.98 2012/11/30 18:16:53 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -27,105 +27,7 @@
#
###
-=head1 NAME
-
-Apache::lonpage - Page Handler
-
-=head1 SYNOPSIS
-
-Invoked by /etc/httpd/conf/srm.conf:
-
- SetHandler perl-script
- PerlHandler Apache::lonpage
-
-
-=head1 INTRODUCTION
-
-This module renders a .page resource.
-
-This is part of the LearningOnline Network with CAPA project
-described at http://www.lon-capa.org.
-
-=head1 HANDLER SUBROUTINE
-
-This routine is called by Apache and mod_perl.
-
-=over 4
-
-=item *
-
-set document type for header only
-
-=item *
-
-tie db file
-
-=item *
-
-render page
-
-=item *
-
-add to symb list
-
-=item *
-
-page parms
-
-=item *
-
-Get SSI output, post parameters
-
-=item *
-
-SSI cell rendering
-
-=item *
-
-Deal with Applet codebases
-
-=item *
-
-Build page
-
-=item *
-
-send headers
-
-=item *
-
-start body
-
-=item *
-
-start form
-
-=item *
-
-start table
-
-=item *
-
-submit element, etc, render page, untie hash
-
-=back
-
-=head1 OTHER SUBROUTINES
-
-=over 4
-
-=item *
-
-euclid() : Euclid's method for determining the greatest common denominator.
-
-=item *
-
-tracetable() : Build page table.
-
-=back
-
-=cut
package Apache::lonpage;
@@ -256,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');
@@ -299,6 +214,10 @@ sub handler {
my $lcm=1;
my $contents=0;
my $nforms=0;
+ my $nuploads=0;
+ my %turninpaths;
+ my %multiresps;
+ my $turninparent;
my %ssibody=();
my %ssibgcolor=();
@@ -340,12 +259,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) {
@@ -369,10 +290,10 @@ 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.' }';
+# $output = '\parbox{\minipagewidth}{ '.$output.' }';
#some additional cleanup necessary for LateX (due to limitations of table environment
$output =~ s/(\\vskip\s*\d+mm)\s*(\\\\)+/$1/g;
}
@@ -435,12 +356,27 @@ sub handler {
$nforms++;
$output=~s/\
');
}
- unless ($target eq 'tex') {
+ unless (($target eq 'tex') || ($target eq 'tex_answer')) {
$r->print(&Apache::loncommon::end_page({'discussion'
=> 1,}));
} else {
@@ -632,10 +584,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);
@@ -652,15 +600,17 @@ sub get_buttons {
|| !$hash->{'encrypted_'.$rid})) {
$metainfo .=''.
''.
- ''.
+ ''.
'';
}
- $metainfo .= ''.
- ''.
- '';
- if (($hash->{'src_'.$rid}=~/\.(problem|exam|quiz|assess|survey|form)$/) &&
+ if ($hash->{'src_'.$rid} !~ m{^/uploaded/}) {
+ $metainfo .= ''.
+ ''.
+ '';
+ }
+ if (($hash->{'src_'.$rid}=~/$LONCAPA::assess_re/) &&
($hash->{'src_'.$rid} !~ m-^/uploaded/-)) {
if (&Apache::lonnet::allowed('mgr',$env{'request.course.id'})) {
@@ -668,12 +618,12 @@ sub get_buttons {
''.
'&command=submission">'.
- ''.
+ ''.
''.
''.
'&command=gradingmenu">'.
- ''.
+ ''.
'';
}
if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) {
@@ -681,7 +631,7 @@ sub get_buttons {
''.
'" >'.
- ''.
+ ''.
'';
}
}
@@ -692,6 +642,104 @@ sub get_buttons {
__END__
+=head1 NAME
+
+Apache::lonpage - Page Handler
+
+=head1 SYNOPSIS
+
+Invoked by /etc/httpd/conf/srm.conf:
+
+
+ SetHandler perl-script
+ PerlHandler Apache::lonpage
+
+
+=head1 INTRODUCTION
+
+This module renders a .page resource.
+
+This is part of the LearningOnline Network with CAPA project
+described at http://www.lon-capa.org.
+
+=head1 HANDLER SUBROUTINE
+
+This routine is called by Apache and mod_perl.
+
+=over 4
+
+=item *
+
+set document type for header only
+
+=item *
+
+tie db file
+
+=item *
+
+render page
+
+=item *
+
+add to symb list
+
+=item *
+
+page parms
+
+=item *
+
+Get SSI output, post parameters
+
+=item *
+
+SSI cell rendering
+
+=item *
+
+Deal with Applet codebases
+
+=item *
+
+Build page
+
+=item *
+
+send headers
+
+=item *
+
+start body
+
+=item *
+
+start form
+
+=item *
+
+start table
+
+=item *
+
+submit element, etc, render page, untie hash
+
+=back
+
+=head1 OTHER SUBROUTINES
+
+=over 4
+
+=item *
+euclid() : Euclid's method for determining the greatest common denominator.
+
+=item *
+
+tracetable() : Build page table.
+
+=back
+
+=cut