--- loncom/interface/lonprintout.pm 2008/03/24 00:03:05 1.519.2.2
+++ loncom/interface/lonprintout.pm 2009/05/02 22:16:09 1.552
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.519.2.2 2008/03/24 00:03:05 raeburn Exp $
+# $Id: lonprintout.pm,v 1.552 2009/05/02 22:16:09 foxr Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -39,6 +39,11 @@ use Apache::File();
use Apache::lonnavmaps;
use Apache::admannotations;
use Apache::lonenc;
+use Apache::entities;
+use Apache::londefdef;
+
+use File::Basename;
+
use HTTP::Response;
use LONCAPA::map();
@@ -109,6 +114,65 @@ sub annotate {
return $result;
}
+# include_pdf - PDF files are included into the
+# output as follows:
+# - The PDF, if necessary, is replicated.
+# - The PDF is added to the list of files to convert to postscript (along with the images).
+# - The LaTeX is added to include the final converted postscript in the file as an included
+# job. The assumption is that the includedpsheader.ps header will be included.
+#
+# Parameters:
+# pdf_uri - URI of the PDF file to include.
+#
+# Returns:
+# The LaTeX to include.
+#
+# Assumptions:
+# The uri is actually a PDF file
+# The postscript will have the includepsheader.ps included.
+#
+#
+sub include_pdf {
+ my ($pdf_uri) = @_;
+
+ # Where is the file? If not local we'll need to repcopy it:'
+
+ my $file = &Apache::lonnet::filelocation('', $pdf_uri);
+ if (! -e $file) {
+ &Apache::lonnet::repcopy($file);
+ $file = &Apache::lonnet::filelocation('',$pdf_uri);
+ }
+
+ # The file isn ow replicated locally.. or it did not exist in the first place
+ # (unlikely). If it did exist, add the pdf to the set of files/images that
+ # need tob e converted for this print job:
+
+ $file =~ s|(.*)/res/|/home/httpd/html/res/|;
+
+ open(FILE,">>/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout.dat");
+ print FILE ("$file\n");
+ close (FILE);
+
+ # Construct the special to put out. To do this we need to get the
+ # resulting filename after conversion. The file will have the same name
+ # but will be in the user's spool directory with converted images.
+
+ my $dirname = "/home/httpd/prtspool/$env{'user.name'}/";
+ my ( $base, $path, $ext) = &fileparse($file, '.pdf');
+# my $destname = $dirname.'/'.$base.'.eps'; # Not really an eps but easier in printout.pl
+ $base =~ s/ /\_/g;
+
+
+ my $output = &print_latex_header();
+ $output .= '\special{ps: _begin_job_ ('
+ .$base.'.pdf.eps'.
+ ')run _end_job_}';
+
+ return $output;
+
+
+}
+
#
# ssi_with_retries - Does the server side include of a resource.
@@ -116,7 +180,7 @@ sub annotate {
# the number of times requested by the caller.
# If we still have a proble, no text is appended to the
# output and we set some global variables.
-# to indicate to the caller an SSI error occured.
+# to indicate to the caller an SSI error occurred.
# All of this is supposed to deal with the issues described
# in LonCAPA BZ 5631 see:
# http://bugs.lon-capa.org/show_bug.cgi?id=5631
@@ -132,10 +196,10 @@ sub annotate {
# On success, returns the rendered resource identified by the resource parameter.
# Side Effects:
# The following global variables can be set:
-# ssi_error - If an unrecoverable error occured this becomes true.
+# ssi_error - If an unrecoverable error occurred this becomes true.
# It is up to the caller to initialize this to false
# if desired.
-# ssi_last_error_resource - If an unrecoverable error occured, this is the value
+# ssi_last_error_resource - If an unrecoverable error occurred, this is the value
# of the resource that could not be rendered by the ssi
# call.
# ssi_last_error - The error string fetched from the ssi response
@@ -150,7 +214,7 @@ sub ssi_with_retries {
$ssi_error = 1;
$ssi_last_error_resource = $resource;
$ssi_last_error = $response->code . " " . $response->message;
-
+ $content='\section*{!!! An error occurred !!!}';
&Apache::lonnet::logthis("Error in SSI resource: $resource Error: $ssi_last_error");
}
@@ -158,6 +222,21 @@ sub ssi_with_retries {
}
+sub get_student_view_with_retries {
+ my ($curresline,$retries,$username,$userdomain,$courseid,$target,$moreenv)=@_;
+
+ my ($content, $response) = &Apache::loncommon::get_student_view_with_retries($curresline,$retries,$username,$userdomain,$courseid,$target,$moreenv);
+ if (!$response->is_success) {
+ $ssi_error = 1;
+ $ssi_last_error_resource = $curresline.' for user '.$username.':'.$userdomain;
+ $ssi_last_error = $response->code . " " . $response->message;
+ $content='\section*{!!! An error occurred !!!}';
+ &Apache::lonnet::logthis("Error in SSI (student view) resource: $curresline Error: $ssi_last_error User: $username:$userdomain");
+ }
+ return $content;
+
+}
+
#
# printf_style_subst item format_string repl
#
@@ -212,9 +291,11 @@ sub printf_style_subst {
# %a - Assignment name.
# %c - Course name.
# %n - Student name.
+# %s - The section if it is supplied.
#
sub format_page_header {
- my ($width, $format, $assignment, $course, $student) = @_;
+ my ($width, $format, $assignment, $course, $student, $section) = @_;
+
$width = &recalcto_mm($width); # Get width in mm.
# Default format?
@@ -231,38 +312,43 @@ sub format_page_header {
# - Allow the assignment to be 2 lines (wrapped).
#
my $chars_per_line = $width/2; # Character/textline.
+
- my $firstline = "$student $course";
- if (length($firstline) > $chars_per_line) {
- my $lastchar = $chars_per_line - length($student) - 1;
- if ($lastchar > 0) {
- $course = substr($course, 0, $lastchar);
- } else { # Nothing left of course:
- $course = '';
- }
- }
- if (length($assignment) > $chars_per_line) {
- $assignment = substr($assignment, 0, $chars_per_line);
+ my $name_length = int($chars_per_line *3 /4);
+ my $sec_length = int($chars_per_line / 5);
+
+ $format = "%$name_length".'n';
+
+ if ($section) {
+ $format .= ' - Sec: '."%$sec_length".'s';
}
-
- $format = "\\textbf{$student} $course \\hfill \\thepage \\\\ \\textit{$assignment}";
-
- } else {
- # An open question is how to handle long user formatted page headers...
- # A possible future is to support e.g. %na so that the user can control
- # the truncation of the elements that can appear in the header.
- #
- $format = &printf_style_subst("a", $format, $assignment);
- $format = &printf_style_subst("c", $format, $course);
- $format = &printf_style_subst("n", $format, $student);
-
- # If the user put %'s in the format string, they must be escaped
- # to \% else LaTeX will think they are comments and terminate
- # the line.. which is bad!!!
+ $format .= '\\\\%c \\\\ %a';
+
}
+ # An open question is how to handle long user formatted page headers...
+ # A possible future is to support e.g. %na so that the user can control
+ # the truncation of the elements that can appear in the header.
+ #
+ $format = &printf_style_subst("a", $format, $assignment);
+ $format = &printf_style_subst("c", $format, $course);
+ $format = &printf_style_subst("n", $format, $student);
+ $format = &printf_style_subst("s", $format, $section);
+
+
+ # If the user put %'s in the format string, they must be escaped
+ # to \% else LaTeX will think they are comments and terminate
+ # the line.. which is bad!!!
+
+ # If the user has role author, $course and $assignment are empty so
+ # there is '\\ \\ ' in the page header. That's cause a error in LaTeX
+ if($format =~ /\\\\\s\\\\\s/) {
+ #TODO find sensible caption for page header
+ my $testPrintout = '\\\\'.&mt('Construction Space').' \\\\'.&mt('Test-Printout ');
+ $format =~ s/\\\\\s\\\\\s/$testPrintout/;
+ }
return $format;
@@ -368,8 +454,8 @@ sub is_valid_alpha_code {
sub is_code_valid {
my ($code_value, $code_option) = @_;
my ($code_type, $code_length) = ('letter', 6); # defaults.
- open(FG, $Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab');
- foreach my $line (
- '.&mt('One of the resources ([_1]) you chose to print could not be rendered due to an unrecoverable error when communicating with a server:',$ssi_last_error_resource).'
- '.
-&mt('It is recommended that you try printing again later, as this error may mean the server was just temporarily unavailable, or is down for maintenance.').' '.
-&mt('We apologize for the inconvenience.').
-' '.
+ &mt('At least one of the resources you chose to print could not be rendered due to an unrecoverable error when communicating with a server:').
+ ' '.&mt('You can continue using the link provided below, but make sure to carefully inspect your output file! The errors will be marked in the file.').' '.
+ &mt('We apologize for the inconvenience.').'
';
+ my $ext_text = 'pdf' ? &mt('PDF File'):&mt('Zip File');
+ my $result=&Apache::loncommon::start_data_table_row()
+ .''
+ .''.$ext_text.''
+ .' '
+ .''.&Apache::lonlocal::locallocaltime($cctime).' '
+ .''.$csize.' '
+ .&Apache::loncommon::end_data_table_row();
if ($ext eq 'pdf') { $pdf_result .= $result; }
if ($ext eq 'zip') { $zip_result .= $result; }
}
+ if ($zip_result || $pdf_result) {
+ $r->print('
');
+ }
if ($zip_result) {
- $r->print(''.&mt('Recently generated printout zip files')."
\n"
- .$zip_result);
+ $r->print(''.&mt('Recently generated printout zip files')."
\n"
+ .&Apache::loncommon::start_data_table()
+ .&Apache::loncommon::start_data_table_header_row()
+ .''.&mt('Download').' '
+ .''.&mt('Creation Date').' '
+ .''.&mt('File Size (Bytes)').' '
+ .&Apache::loncommon::end_data_table_header_row()
+ .$zip_result
+ .&Apache::loncommon::end_data_table()
+ );
}
if ($pdf_result) {
- $r->print(''.&mt('Recently generated printouts')."
\n"
- .$pdf_result);
+ $r->print(''.&mt('Recently generated printouts')."
\n"
+ .&Apache::loncommon::start_data_table()
+ .&Apache::loncommon::start_data_table_header_row()
+ .''.&mt('Download').' '
+ .''.&mt('Creation Date').' '
+ .''.&mt('File Size (Bytes)').' '
+ .&Apache::loncommon::end_data_table_header_row()
+ .$pdf_result
+ .&Apache::loncommon::end_data_table()
+ );
}
}
@@ -1378,7 +1472,21 @@ sub print_construction_sequence {
$helper, %form,
$LaTeXwidth);
}
- }
+ }
+ elsif ($urlp =~ /\.pdf$/i) {
+ my $texversion;
+ if ($member != 0) {
+ $texversion .= '\cleardoublepage';
+ }
+
+ $texversion .= &include_pdf($urlp);
+ $texversion = &latex_header_footer_remove($texversion);
+ if ($member != $#order) {
+ $texversion .= '\\ \cleardoublepage';
+ }
+
+ $result .= $texversion;
+ }
}
if ($helper->{VARS}->{'construction'} eq '1') {$result=~s/(\\begin{document})/$1 \\fbox\{RANDOM SEED IS $rndseed\} /;}
return $result;
@@ -1440,7 +1548,7 @@ ENDPART
my ($result,$selectionmade) = ('','');
my $number_of_columns = 1; #used only for pages to determine the width of the cell
my @temporary_array=split /\|/,$format_from_helper;
- my ($laystyle,$numberofcolumns,$papersize)=@temporary_array;
+ my ($laystyle,$numberofcolumns,$papersize,$pdfFormFields)=@temporary_array;
if ($laystyle eq 'L') {
$laystyle='album';
} else {
@@ -1461,6 +1569,7 @@ ENDPART
my %form;
$form{'grade_target'} = 'tex';
$form{'textwidth'} = &get_textwidth($helper, $LaTeXwidth);
+ $form{'pdfFormFields'} = $pdfFormFields;
# If form.showallfoils is set, then request all foils be shown:
# privilege will be enforced both by not allowing the
@@ -1474,10 +1583,10 @@ ENDPART
}
if ($helper->{'VARS'}->{'style_file'}=~/\w/) {
- &Apache::lonnet::appenv('construct.style' =>
- $helper->{'VARS'}->{'style_file'});
+ &Apache::lonnet::appenv({'construct.style' =>
+ $helper->{'VARS'}->{'style_file'}});
} elsif ($env{'construct.style'}) {
- &Apache::lonnet::delenv('construct\\.style');
+ &Apache::lonnet::delenv('construct.style');
}
@@ -1518,7 +1627,7 @@ ENDPART
$rndseed=$helper->{'VARS'}->{'curseed'};
}
$form{'rndseed'}=$rndseed;
- &Apache::lonnet::appenv(%moreenv);
+ &Apache::lonnet::appenv(\%moreenv);
&Apache::lonxml::clear_problem_counter();
@@ -1568,6 +1677,7 @@ ENDPART
+
}
# Print annotations.
@@ -1593,7 +1703,7 @@ ENDPART
&& $currentURL=~/\.sequence$/ && $helper->{'VARS'}->{'construction'} eq '1') {
#printing content of sequence from the construction space
$currentURL=~s|\/~([^\/]+)\/|\/home\/$1\/public_html\/|;
- $result .= &print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
+# $result .= &print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
$result .= &print_construction_sequence($currentURL, $helper, %form,
$LaTeXwidth);
$result .= '\end{document}';
@@ -1611,7 +1721,7 @@ ENDPART
$texversion =~ s/(\\end{document})/$annotation$1/;
}
$result .= $texversion;
- } elsif ($cleanURL =~/.tex$/) {
+ } elsif ($cleanURL =~/\.tex$/) {
# For this sort of print of a single LaTeX file,
# We can just print the LaTeX file as it is uninterpreted in any way:
#
@@ -1624,6 +1734,9 @@ ENDPART
$do_postprocessing = 0; # Don't massage the result.
+ } elsif ($cleanURL =~ /\.pdf$/i) {
+ $result .= &include_pdf($cleanURL);
+ $result .= '\end{document}';
} else {
$result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'},
$helper->{'VARS'}->{'symb'});
@@ -1632,7 +1745,8 @@ ENDPART
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') or
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') or
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_resources') or # BUGBUG
- ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'select_sequences')) {
+ ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'select_sequences')
+ ) {
#-- produce an output string
@@ -1640,7 +1754,8 @@ ENDPART
$selectionmade = 2;
} elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') {
$selectionmade = 3;
- } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') {
+ } elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems')
+ ) {
$selectionmade = 4;
} elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_resources') { #BUGBUG
$selectionmade = 4;
@@ -1666,7 +1781,8 @@ ENDPART
my $pbreakresources = keys %page_breaks;
for (my $i=0;$i<=$#master_seq;$i++) {
- &Apache::lonenc::reset_enc();
+ &Apache::lonenc::reset_enc();
+
# Note due to document structure, not allowed to put \newpage
# prior to the first resource
@@ -1676,10 +1792,11 @@ ENDPART
$result.="\\newpage\n";
}
}
- my ($sequence,$middle_thingy,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]);
+ my ($sequence,$middle_thingy,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]);
$urlp=&Apache::lonnet::clutter($urlp);
$form{'symb'}=$master_seq[$i];
+
my $assignment=&Apache::lonxml::latex_special_symbols(&Apache::lonnet::gettitle($sequence),'header'); #title of the assignment which contains this problem
if ($selectionmade==7) {$helper->{VARS}->{'assignment'}=$assignment;}
@@ -1713,6 +1830,7 @@ ENDPART
} else {
if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
+ $texversion =~ s/\\begin{document}//;
my $title = &Apache::lonnet::gettitle($master_seq[$i]);
$title = &Apache::lonxml::latex_special_symbols($title);
my $body ='\vskip 0 mm \noindent\textbf{'.$title.'}\vskip 0 mm ';
@@ -1742,13 +1860,13 @@ ENDPART
if (($selectionmade == 4) and ($assignment ne $prevassignment)) {
my $name = &get_name();
my $courseidinfo = &get_course();
- if (defined($courseidinfo)) { $courseidinfo=' - '.$courseidinfo }
$prevassignment=$assignment;
my $header_text = $parmhash{'print_header_format'};
$header_text = &format_page_header($textwidth, $header_text,
$assignment,
$courseidinfo,
$name);
+
if ($numberofcolumns eq '1') {
$result .='\newpage \noindent\parbox{\minipagewidth}{\noindent\\lhead{'.$header_text.'}} \vskip 5 mm ';
} else {
@@ -1769,11 +1887,28 @@ ENDPART
if ($flag_latex_header_remove ne 'NO') {
$texversion = &latex_header_footer_remove($texversion);
- } else {
+ } else {
$texversion =~ s/\\end{document}/\\vskip 0\.5mm\\noindent\\makebox\[\\textwidth\/\$number_of_columns\]\[b\]\{\\hrulefill\}/;
}
$result .= $texversion;
$flag_latex_header_remove = 'YES';
+ } elsif ($urlp=~ /\.pdf$/i) {
+ if ($i > 0) {
+ $result .= '\cleardoublepage';
+ }
+ $result .= &include_pdf($urlp);
+ if ($i != $#master_seq) {
+ if ($numberofcolumns eq '1') {
+ $result .= '\newpage';
+ } else {
+ # the \\'s seem to be needed to let LaTeX know there's something
+ # on the page since LaTeX seems to not like to clear an empty page.
+ #
+ $result .= '\\ \cleardoublepage';
+ }
+ }
+ $flag_latex_header_remove = 'YES';
+
} else {
$texversion=&unsupported($urlp,$helper->{'VARS'}->{'LATEX_TYPE'},
$master_seq[$i]);
@@ -1785,7 +1920,9 @@ ENDPART
$result .= $texversion;
$flag_latex_header_remove = 'YES';
}
- if (&Apache::loncommon::connection_aborted($r)) { last; }
+ if (&Apache::loncommon::connection_aborted($r)) {
+ last;
+ }
}
&Apache::lonxml::clear_problem_counter();
if ($flag_page_in_sequence eq 'YES') {
@@ -1793,12 +1930,14 @@ ENDPART
}
$result .= '\end{document}';
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') ||
+ ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems_students') ||
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'resources_for_students')){
#-- prints assignments for whole class or for selected students
my $type;
- if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') {
+ if (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_students') ||
+ ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems_students') ) {
$selectionmade=5;
$type='problems';
} elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'resources_for_students') {
@@ -1837,7 +1976,7 @@ ENDPART
my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};
#loop over students
- my $flag_latex_header_remove = 'NO';
+ my $flag_latex_header_remove = 'NO';
my %moreenv;
$moreenv{'instructor_comments'}='hide';
$moreenv{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);
@@ -1895,9 +2034,9 @@ ENDPART
my $selected_code = $helper->{'VARS'}->{'CODE_SELECTED_FROM_LIST'};
my $code_option=$helper->{'VARS'}->{'CODE_OPTION'};
- open(FH,$Apache::lonnet::perlvar{'lonTabDir'}.'/scantronformat.tab');
+ my @lines = &Apache::grades::get_scantronformat_file();
my ($code_type,$code_length)=('letter',6);
- foreach my $line (
-'.&mt('An unrecoverable error occured:').'
-
-'.$ssi_last_error.'
-
'.
-&mt('If the error persists, please contact the [_1] for assistance.',$helpurl).
-''.&mt('An unrecoverable network error occurred:').'
'.$ssi_last_error_resource.'
'.$ssi_last_error.
+ '
'.
+ &mt('You may be able to reprint the individual resources for which this error occurred, as the issue may be temporary.').
+ '
'.&mt('If the error persists, please contact the [_1] for assistance.',$helpurl).'
");
+ &addMessage(&Apache::lonhtmlcommon::end_pick_box());
}
Apache::lonprintout::page_format_state->new("FORMAT");
@@ -3343,23 +3527,25 @@ sub render {
my $PaperType=&mt('Paper type');
my $landscape=&mt('Landscape');
my $portrait=&mt('Portrait');
- $result .= < ");
+ &addMessage(&Apache::lonhtmlcommon::row_closure());
$startedTable = 1;
}
@@ -3102,10 +3263,12 @@ CHOOSE_FROM_ANY_SEQUENCE
": ".
- ': ");
+ &addMessage('
'
+ .''.&mt('Print Options').'
'
+ .&Apache::lonhtmlcommon::start_pick_box()
+# .&Apache::lonhtmlcommon::row_headline()
+# .''.&mt('Print Options').'
'
+# .&Apache::lonhtmlcommon::row_closure()
+ .&Apache::lonhtmlcommon::row_title(
+ ''
+ )
+ );
$paramHash = Apache::lonhelper::getParamHash();
$paramHash->{'variable'} = 'ANSWER_TYPE';
$helper->declareVar('ANSWER_TYPE');
@@ -3090,7 +3251,7 @@ CHOOSE_FROM_ANY_SEQUENCE
['Only Answers', 'only']
];
Apache::lonhelper::dropdown->new();
- addMessage("");
$startedTable = 1;
} else {
- addMessage(" ".
- ': ");
+ &addMessage(&Apache::lonhtmlcommon::row_title(
+ ''
+ )
+ );
}
$paramHash = Apache::lonhelper::getParamHash();
$paramHash->{'variable'} = 'LATEX_TYPE';
@@ -3121,10 +3284,13 @@ CHOOSE_FROM_ANY_SEQUENCE
}
Apache::lonhelper::dropdown->new();
- addMessage(" ");
+ &addMessage(&Apache::lonhtmlcommon::row_closure());
if (not $helper->{VARS}->{'construction'}) {
- addMessage("".
- ': ");
+ &addMessage(&Apache::lonhtmlcommon::row_closure()
+ .&Apache::lonhtmlcommon::row_title(
+ ''
+ )
+ );
$paramHash = Apache::lonhelper::getParamHash();
$paramHash->{'variable'} = 'TABLE_CONTENTS';
$helper->declareVar('TABLE_CONTENTS');
@@ -3132,13 +3298,15 @@ CHOOSE_FROM_ANY_SEQUENCE
['No', 'no'],
['Yes', 'yes'] ];
Apache::lonhelper::dropdown->new();
- addMessage(" ");
- addMessage("".
- ': ");
+ &addMessage(&Apache::lonhtmlcommon::row_title(
+ ''
+ )
+ );
$paramHash = Apache::lonhelper::getParamHash();
$paramHash->{'variable'} = 'TABLE_INDEX';
$helper->declareVar('TABLE_INDEX');
@@ -3146,11 +3314,13 @@ CHOOSE_FROM_ANY_SEQUENCE
['No', 'no'],
['Yes', 'yes'] ];
Apache::lonhelper::dropdown->new();
- addMessage(" ");
+ &addMessage(&Apache::lonhtmlcommon::row_closure());
# Prompt for printing annotations too.
- addMessage("".
- ': ");
+ &addMessage(&Apache::lonhtmlcommon::row_closure());
+ &addMessage(&Apache::lonhtmlcommon::row_title(
+ ''
+ )
+ );
$paramHash = Apache::lonhelper::getParamHash();
$paramHash->{'variable'} = 'PRINT_DISCUSSIONS';
$helper->declareVar('PRINT_DISCUSSIONS');
@@ -3158,14 +3328,16 @@ CHOOSE_FROM_ANY_SEQUENCE
['No', 'no'],
['Yes', 'yes'] ];
Apache::lonhelper::dropdown->new();
- addMessage(" ");
+ &addMessage(&Apache::lonhtmlcommon::row_closure());
- addMessage("".
- ': ");
+ &addMessage(&Apache::lonhtmlcommon::row_title(
+ ''
+ )
+ );
$paramHash = Apache::lonhelper::getParamHash();
$paramHash->{'variable'} = "PRINT_ANNOTATIONS";
$helper->declareVar("PRINT_ANNOTATIONS");
@@ -3173,16 +3345,16 @@ CHOOSE_FROM_ANY_SEQUENCE
['No', 'no'],
['Yes', 'yes']];
Apache::lonhelper::dropdown->new();
- addMessage(" ");
+ &addMessage(&Apache::lonhtmlcommon::row_closure(1));
}
if ($helper->{'VARS'}->{'construction'}) {
@@ -3191,32 +3363,44 @@ CHOOSE_FROM_ANY_SEQUENCE
my $stylefiletext=&mt("Use style file");
my $selectfiletext=&mt("Select style file");
- my $xmlfrag .= <<"RNDSEED";
- ");
+ &addMessage(&Apache::lonhtmlcommon::row_title(&mt('Foils')));
$paramHash = Apache::lonhelper::getParamHash();
$paramHash->{'multichoice'} = "true";
$paramHash->{'allowempty'} = "true";
$paramHash->{'variable'} = "showallfoils";
$paramHash->{'CHOICES'} = [ ["Show all foils", "1"] ];
Apache::lonhelper::choices->new();
- addMessage("
- :
-
-
- :
-
+ my $xmlfrag .= '
+ ");
+ &addMessage(&Apache::lonhtmlcommon::row_closure(1));
- }
+ }
}
if ($startedTable) {
- addMessage("Problem Type: ");
+ &addMessage(&Apache::lonhtmlcommon::row_title(&mt('Problem Type')));
#
# Initial value from construction space:
#
@@ -3235,16 +3419,16 @@ RNDSEED
PROBTYPE
&Apache::lonxml::xmlparse($r, 'helper', $xmlfrag);
- addMessage(" '.$PageLayout.' '
+ .''.$NumberOfColumns.' '
+ .''.$PaperType.' '
+ .''.$pdfFormLabel.' '
+ .&Apache::loncommon::end_data_table_header_row()
+ .&Apache::loncommon::start_data_table_row()
+ .''
+ .' ';
-
'
+ .''
+ .'
-
-
";
+ $result .= <
+
+
-
- $PageLayout
- $NumberOfColumns
- $PaperType
-
-
-
-
-
-
-
+
+HTML
+ $result.=&Apache::loncommon::end_data_table_row()
+ .&Apache::loncommon::end_data_table();
+
return $result;
}
@@ -3399,7 +3597,7 @@ sub postprocess {
my $helper = Apache::lonhelper->getHelper();
$helper->{VARS}->{$var} =
$env{"form.$var.layout"} . '|' . $env{"form.$var.cols"} . '|' .
- $env{"form.$var.paper"};
+ $env{"form.$var.paper"} . '|' . $env{"form.$var.pdfFormFields"};
return 1;
}
@@ -3511,50 +3709,36 @@ sub render {
} else {
$size{'margin'} += 2.54;
}
- my %text = ('format' => 'How should each column be formatted?',
- 'width' => 'Width:',
- 'height' => 'Height:',
- 'margin' => 'Left Margin:',);
- %text = &Apache::lonlocal::texthash(%text);
-
- $result .= <
$text{'width'} | -- |
- |
-
$text{'height'} | -- |
- |
-
$text{'margin'} | -- |
- |
-
'.$lt{'format'}.'
' + .&Apache::lonhtmlcommon::start_pick_box() + .&Apache::lonhtmlcommon::row_title($lt{'width'}) + .'' + .'Hint: Some instructors like to leave scratch space for the student by + # making the width much smaller than the width of the page.
return $result; }