[LON-CAPA-cvs] cvs: loncom /interface lonprintout.pm /xml londefdef.pm
raeburn
raeburn at source.lon-capa.org
Fri Feb 6 15:30:07 EST 2026
raeburn Fri Feb 6 20:30:07 2026 EDT
Modified files:
/loncom/interface lonprintout.pm
/loncom/xml londefdef.pm
Log:
- Bug 6121. Support PDF Forms for all PRINT_TYPEs
-------------- next part --------------
Index: loncom/interface/lonprintout.pm
diff -u loncom/interface/lonprintout.pm:1.712 loncom/interface/lonprintout.pm:1.713
--- loncom/interface/lonprintout.pm:1.712 Fri Feb 6 20:08:21 2026
+++ loncom/interface/lonprintout.pm Fri Feb 6 20:30:06 2026
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.712 2026/02/06 20:08:21 raeburn Exp $
+# $Id: lonprintout.pm,v 1.713 2026/02/06 20:30:06 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2180,9 +2180,8 @@
}
sub print_latex_header {
- my $mode=shift;
-
- return &Apache::londefdef::latex_header($mode);
+ my ($mode,$pdfFormFields) = @_;
+ return &Apache::londefdef::latex_header($mode,$pdfFormFields);
}
sub path_to_problem {
@@ -2238,13 +2237,13 @@
sub unsupported {
- my ($currentURL,$mode,$symb)=@_;
+ my ($currentURL,$mode,$pdfFormFields,$symb)=@_;
my $cleanURL=&Apache::lonenc::check_decrypt($currentURL);
my $shown = $currentURL;
if (($cleanURL ne $currentURL) || ($symb =~ m{/^enc/})) {
$shown = &mt('URL not shown (encrypted)');
}
- my $result = &print_latex_header($mode);
+ my $result = &print_latex_header($mode,$pdfFormFields);
if ($cleanURL=~m|^(/adm/wrapper)?/ext/|) {
$cleanURL=~s|^(/adm/wrapper)?/ext/|http://|;
$cleanURL=~s|^http://https://|https://|;
@@ -2297,7 +2296,7 @@
$numberofcolumns);
my $LaTeXwidth=&recalcto_mm($textwidth);
- my $result = &print_latex_header($mode);
+ my $result = &print_latex_header($mode,$pdfFormFields);
my $title=&Apache::lonnet::gettitle($currentURL);
$title = &Apache::lonxml::latex_special_symbols($title);
@@ -2327,7 +2326,8 @@
$result .= &print_page_in_course($helper, $rparmhash,
$resource_src, \@page_resources);
} elsif ($resource->ext()) {
- $result.=&latex_header_footer_remove(&unsupported($current_url,$mode,$resource->symb));
+ $result.=&latex_header_footer_remove(&unsupported($current_url,$mode,
+ $pdfFormFields,$resource->symb));
} elsif ($resource_src =~ /\.(problem|exam|quiz|assess|survey|form|library|xml|html|htm|xhtml|xhtm)$/) {
# these resources go through the XML transformer:
$result .= &Apache::lonxml::latex_special_symbols($resource->title()) . '\\\\';
@@ -2388,7 +2388,7 @@
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
$texversion=~s/(\\keephidden\{ENDOFPROBLEM})/$answer$1/;
} else {
- $texversion= &print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
+ $texversion= &print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'},$pdfFormFields);
if ($helper->{'VARS'}->{'construction'} ne '1') {
my $title = &Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'});
$title = &Apache::lonxml::latex_special_symbols($title);
@@ -2658,7 +2658,7 @@
# prefix the latex with the page headers stuff.
#
sub print_construction_sequence {
- my ($currentURL, $helper, %form, $LaTeXwidth) = @_;
+ my ($currentURL, $helper, %form, $LaTeXwidth, $pdfFormFields) = @_;
my $result;
my $rndseed=time;
@@ -2703,7 +2703,7 @@
} else {
# If necessary, encapsulate answer in minipage:
- $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
+ $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'},$pdfFormFields);
my $title = &Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'});
$title = &Apache::lonxml::latex_special_symbols($title);
my $body ='\vskip 0 mm \noindent\textbf{'.$title.'}\vskip 0 mm ';
@@ -2734,7 +2734,8 @@
if ($urlp =~ /\.sequence$/) {
$result .= &print_construction_sequence($urlp,
$helper, %form,
- $LaTeXwidth);
+ $LaTeXwidth,
+ $pdfFormFields);
}
}
elsif ($urlp =~ /\.pdf$/i) {
@@ -2965,7 +2966,7 @@
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
$texversion=~s/(\\keephidden\{ENDOFPROBLEM})/$answer$1/;
} else {
- $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
+ $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'},$pdfFormFields);
if ($helper->{'VARS'}->{'construction'} ne '1') {
my $title = &Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'});
$title = &Apache::lonxml::latex_special_symbols($title);
@@ -3008,10 +3009,10 @@
} elsif ($cleanURL!~m|^/adm/|
&& $currentURL=~/\.(sequence|page)$/ && $helper->{'VARS'}->{'construction'} eq '1') {
$result .= &print_construction_sequence($currentURL, $helper, %form,
- $LaTeXwidth);
+ $LaTeXwidth, $pdfFormFields);
$result .= '\end{document}';
if (!($result =~ /\\begin\{document\}/)) {
- $result = &print_latex_header() . $result;
+ $result = &print_latex_header('',$pdfFormFields) . $result;
}
# End construction space sequence.
} elsif ($cleanURL=~/\/(smppg|syllabus|aboutme|bulletinboard|ext\.tool)$/) {
@@ -3053,7 +3054,7 @@
} else {
$result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'},
- $helper->{'VARS'}->{'symb'});
+ $pdfFormFields,$helper->{'VARS'}->{'symb'});
}
} elsif (($print_type eq 'map_problems') or
($print_type eq 'map_problems_in_page') or
@@ -3127,7 +3128,7 @@
$resources_printed .= $urlp.':';
&Apache::lonxml::remember_problem_counter();
if ($flag_latex_header_remove eq 'NO') {
- $texversion.=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); # RF
+ $texversion.=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'},$pdfFormFields); # RF
unless (($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only') ||
(($i==0) &&
(($urlp=~/\.page$/) ||
@@ -3168,7 +3169,7 @@
}
} else {
if ($urlp=~/$LONCAPA::assess_page_re/) {
- $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
+ $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'},$pdfFormFields);
# $texversion =~ s/\\begin\{document}//; # FIXME
my $title = &Apache::lonnet::gettitle($master_seq[$i]);
$title = &Apache::lonxml::latex_special_symbols($title);
@@ -3254,7 +3255,7 @@
} else {
$texversion=&unsupported($urlp,$helper->{'VARS'}->{'LATEX_TYPE'},
- $master_seq[$i]);
+ $pdfFormFields,$master_seq[$i]);
if ($flag_latex_header_remove ne 'NO') {
$texversion = &latex_header_footer_remove($texversion);
} else {
@@ -3352,6 +3353,7 @@
$moreenv{'print_annotations'} = $helper->{'VARS'}->{'PRINT_ANNOTATIONS'};
$moreenv{'problem_split'} = $parmhash{'problem_stream_switch'};
$moreenv{'suppress_tries'} = $parmhash{'suppress_tries'};
+ $moreenv{'pdfFormFields'} = $pdfFormFields;
if (($helper->{'VARS'}->{'PRINT_DISCUSSIONS'} eq 'yes') ||
($helper->{'VARS'}->{'PRINT_ANNOTATIONS'} eq 'yes')) {
$moreenv{'problem_split'}='yes';
@@ -3386,7 +3388,7 @@
$person,$type,
\%moreenv, $actual_seq,
$flag_latex_header_remove,
- $LaTeXwidth);
+ $LaTeXwidth, $pdfFormFields);
$resources_printed .= ":";
$print_array[$i].=$output;
$student_names[$i].=$person.':'.$fullname.'_END_';
@@ -3441,6 +3443,7 @@
$moreenv{'suppress_tries'} = $parmhash{'suppress_tries'};
$moreenv{'instructor_comments'}='hide';
$moreenv{'bubbles_per_row'} = $bubbles_per_row;
+ $moreenv{'pdfFormFields'} = $pdfFormFields;
my $seed=time+($$<<16)+($$);
my @allcodes;
if ($old_name) {
@@ -3512,7 +3515,7 @@
my ($output,$fullname, $printed)=
&print_resources($r,$helper,'anonymous',$type,\%moreenv,
$actual_seq,$flag_latex_header_remove,
- $LaTeXwidth);
+ $LaTeXwidth,$pdfFormFields);
$resources_printed .= ":";
$print_array[$file_num].=$output;
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,
@@ -3561,7 +3564,7 @@
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
$texversion=~s/(\\keephidden\{ENDOFPROBLEM})/$answer$1/;
} else {
- $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
+ $texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'},$pdfFormFields);
if ($helper->{'VARS'}->{'construction'} ne '1') {
$texversion.='\vskip 0 mm \noindent ';
$texversion.=&path_to_problem ($urlp,$LaTeXwidth);
@@ -3801,7 +3804,7 @@
sub print_resources {
my ($r,$helper,$person,$type,$moreenv,$master_seq,$remove_latex_header,
- $LaTeXwidth)=@_;
+ $LaTeXwidth,$pdfFormFields)=@_;
my $current_output = '';
my $printed = '';
my ($username,$userdomain,$usersection) = split /:/,$person;
@@ -3881,7 +3884,7 @@
if ($res_url =~ /\.page$/) {
if ($remove_latex_header eq 'NO') {
if (!($rendered =~ /\\begin\{document\}/)) {
- $rendered = &print_latex_header().$rendered;
+ $rendered = &print_latex_header('',$pdfFormFields).$rendered;
}
}
if ($remove_latex_header eq 'YES') {
@@ -3906,7 +3909,7 @@
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
$rendered=~s/(\\keephidden\{ENDOFPROBLEM})/$ansrendered$1/;
} else {
- my $header =&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
+ my $header =&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'},$pdfFormFields);
unless ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only') {
$header =~ s/\\begin\{document}//; #<<<<<
}
@@ -3956,7 +3959,8 @@
}
$current_output .= $rendered;
} else {
- my $rendered = &unsupported($res_url,$helper->{'VARS'}->{'LATEX_TYPE'},$curresline);
+ my $rendered = &unsupported($res_url,$helper->{'VARS'}->{'LATEX_TYPE'},
+ $pdfFormFields,$curresline);
if ($remove_latex_header ne 'NO') {
$rendered = &latex_header_footer_remove($rendered);
} else {
@@ -4008,7 +4012,7 @@
$current_output = &encapsulate_minipage("\\vskip -10mm \n$message\n \\vskip 100 mm { }\n",$moreenv->{'problem_split'});
}
if ($remove_latex_header eq "NO") {
- $current_output = &print_latex_header() . $current_output;
+ $current_output = &print_latex_header('',$pdfFormFields) . $current_output;
} else {
$current_output = &latex_header_footer_remove($current_output);
}
Index: loncom/xml/londefdef.pm
diff -u loncom/xml/londefdef.pm:1.478 loncom/xml/londefdef.pm:1.479
--- loncom/xml/londefdef.pm:1.478 Fri Feb 6 19:22:16 2026
+++ loncom/xml/londefdef.pm Fri Feb 6 20:30:07 2026
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Tags Default Definition Module
#
-# $Id: londefdef.pm,v 1.478 2026/02/06 19:22:16 raeburn Exp $
+# $Id: londefdef.pm,v 1.479 2026/02/06 20:30:07 raeburn Exp $
#
#
# Copyright Michigan State University Board of Trustees
@@ -4630,7 +4630,7 @@
# This sub provides the typical LaTeX prefix matter for tex output:
#
sub latex_header {
- my ($mode) = @_;
+ my ($mode,$pdfforms) = @_;
my $currentstring = '';
$currentstring .=
@@ -4669,7 +4669,7 @@
'\usepackage{amsthm}'."\n".
'\usepackage{amscd}'."\n".
'\usepackage{actuarialangle}'."\n";
- if($env{'form.pdfFormFields'} eq 'yes') {
+ if (($env{'form.pdfFormFields'} eq 'yes') || ($pdfforms eq 'yes')) {
$currentstring .= '\usepackage{hyperref}'."\n".
'\usepackage{eforms}';
}
More information about the LON-CAPA-cvs
mailing list