version 1.558, 2009/07/03 16:13:13
|
version 1.560, 2009/08/03 11:01:14
|
Line 104 sub fetch_raw_resource {
|
Line 104 sub fetch_raw_resource {
|
sub annotate { |
sub annotate { |
my ($symb) = @_; |
my ($symb) = @_; |
|
|
my $annotation_text = &Apache::admannotations::get_annotation($symb, 1); |
my $annotation_text = &Apache::loncommon::get_annotation($symb, 1); |
|
|
|
|
my $result = ""; |
my $result = ""; |
Line 197 sub include_pdf {
|
Line 197 sub include_pdf {
|
|
|
|
|
# |
# |
# ssi_with_retries - Does the server side include of a resource. |
# ssi_with_retries- Does the server side include of a resource. |
# if the ssi call returns an error we'll retry it up to |
# if the ssi call returns an error we'll retry it up to |
# the number of times requested by the caller. |
# the number of times requested by the caller. |
# If we still have a proble, no text is appended to the |
# If we still have a proble, no text is appended to the |
Line 230 sub include_pdf {
|
Line 230 sub include_pdf {
|
sub ssi_with_retries { |
sub ssi_with_retries { |
my ($resource, $retries, %form) = @_; |
my ($resource, $retries, %form) = @_; |
|
|
|
my $target = $form{'grade_target'}; |
|
my $aom = $form{'answer_output_mode'}; |
|
|
|
|
|
|
my ($content, $response) = &Apache::loncommon::ssi_with_retries($resource, $retries, %form); |
my ($content, $response) = &Apache::loncommon::ssi_with_retries($resource, $retries, %form); |
if (!$response->is_success) { |
if (!$response->is_success) { |
Line 944 sub old_character_chart {
|
Line 948 sub old_character_chart {
|
$result =~ s/&(rdquo|#8221);/\'\'/g; |
$result =~ s/&(rdquo|#8221);/\'\'/g; |
|
|
|
|
|
|
return $result; |
return $result; |
} |
} |
|
|
Line 1305 sub unsupported {
|
Line 1310 sub unsupported {
|
return $result; |
return $result; |
} |
} |
|
|
|
# |
|
# Map from helper layout style to the book/album: |
|
# |
|
sub map_laystyle { |
|
my ($laystyle) = @_; |
|
if ($laystyle eq 'L') { |
|
$laystyle='album'; |
|
} else { |
|
$laystyle='book'; |
|
} |
|
return $laystyle; |
|
} |
|
|
|
sub print_page_in_course { |
|
my ($helper, $rparmhash, $currentURL, $resources) = @_; |
|
my %parmhash = %$rparmhash; |
|
my @page_resources = @$resources; |
|
my $mode = $helper->{'VARS'}->{'LATEX_TYPE'}; |
|
my $symb = $helper->{'VARS'}->{'symb'}; |
|
|
|
|
|
my $format_from_helper = $helper->{'VARS'}->{'FORMAT'}; |
|
|
|
|
|
my @temporary_array=split /\|/,$format_from_helper; |
|
my ($laystyle,$numberofcolumns,$papersize,$pdfFormFields)=@temporary_array; |
|
$laystyle = &map_laystyle($laystyle); |
|
my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$laystyle, |
|
$numberofcolumns); |
|
my $LaTeXwidth=&recalcto_mm($textwidth); |
|
|
|
|
|
if ($mode ne '') {$mode='\\'.$mode} |
|
my $result.= &print_latex_header($mode); |
|
if ($currentURL=~m|^(/adm/wrapper/)?ext/|) { |
|
$currentURL=~s|^(/adm/wrapper/)?ext/|http://|; |
|
my $title=&Apache::lonnet::gettitle($symb); |
|
$title = &Apache::lonxml::latex_special_symbols($title); |
|
} else { |
|
$result.=$currentURL; |
|
} |
|
$result .= '\\\\'; |
|
|
|
if ($helper->{'VARS'}->{'style_file'}=~/\w/) { |
|
&Apache::lonnet::appenv({'construct.style' => |
|
$helper->{'VARS'}->{'style_file'}}); |
|
} elsif ($env{'construct.style'}) { |
|
&Apache::lonnet::delenv('construct.style'); |
|
} |
|
|
|
# First is the overall page description. This is then followed by the |
|
# components of the page. Each of which must be printed independently. |
|
|
|
my $the_page = shift(@page_resources); |
|
|
|
foreach my $resource (@page_resources) { |
|
my $resource_src = $resource->src(); # Essentially the URL of the resource. |
|
$result .= $resource->title() . '\\\\'; |
|
|
|
# Recurse if a .page: |
|
|
|
if ($resource_src =~ /.page$/i) { |
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
my @page_resources = $navmap->retrieveResources($resource_src); |
|
$result .= &print_page_in_course($helper, $rparmhash, |
|
$resource_src, \@page_resources); |
|
} |
|
# these resources go through the XML transformer: |
|
|
|
elsif ($resource_src =~ /\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm\xhtml|xhtm)$/) { |
|
my $urlp = &Apache::lonnet::clutter($resource_src); |
|
my %form; |
|
my %moreenv; |
|
|
|
&Apache::lonxml::remember_problem_counter(); |
|
$moreenv{'request.filename'}=$urlp; |
|
if ($helper->{'VARS'}->{'probstatus'} eq 'exam') {$form{'problemtype'}='exam';} |
|
|
|
$form{'grade_target'} = 'tex'; |
|
$form{'textwidth'} = &get_textwidth($helper, $LaTeXwidth); |
|
$form{'pdfFormFiels'} = $pdfFormFields; # |
|
$form{'showallfoils'} = $helper->{'VARS'}->{'showallfoils'}; |
|
|
|
$form{'problem_split'}=$parmhash{'problem_stream_switch'}; |
|
$form{'suppress_tries'}=$parmhash{'suppress_tries'}; |
|
$form{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'}; |
|
$form{'print_discussions'}=$helper->{'VARS'}->{'PRINT_DISCUSSIONS'}; |
|
$form{'print_annotations'}=$helper->{'VARS'}->{'PRINT_ANNOTATIONS'}; |
|
if (($helper->{'VARS'}->{'PRINT_DISCUSSIONS'} eq 'yes') || |
|
($helper->{'VARS'}->{'PRINT_ANNOTATIONS'} eq 'yes')) { |
|
$form{'problem_split'}='yes'; |
|
} |
|
my $rndseed = time; |
|
if ($helper->{'VARS'}->{'curseed'}) { |
|
$rndseed=$helper->{'VARS'}->{'curseed'}; |
|
} |
|
$form{'rndseed'}=$rndseed; |
|
&Apache::lonnet::appenv(\%moreenv); |
|
|
|
&Apache::lonxml::clear_problem_counter(); |
|
|
|
my $texversion = &ssi_with_retries($urlp, $ssi_retry_count, %form); |
|
|
|
# There seems to be an extraneous \vskip 1mm \\\\ : |
|
|
|
$texversion =~ s/^\\vskip 1mm \\\\\\\\//; |
|
|
|
# current document with answers.. no need to encap in minipage |
|
# since there's only one answer. |
|
|
|
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') || |
|
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) { |
|
my %answerform = %form; |
|
|
|
|
|
$answerform{'problem_split'}=$parmhash{'problem_stream_switch'}; |
|
$answerform{'grade_target'}='answer'; |
|
$answerform{'answer_output_mode'}='tex'; |
|
$answerform{'rndseed'}=$rndseed; |
|
if ($helper->{'VARS'}->{'probstatus'} eq 'exam') { |
|
$answerform{'problemtype'}='exam'; |
|
} |
|
$resources_printed .= $urlp.':'; |
|
my $answer=&ssi_with_retries($urlp,$ssi_retry_count, %answerform); |
|
|
|
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') { |
|
$texversion=~s/(\\keephidden{ENDOFPROBLEM})/$answer$1/; |
|
} else { |
|
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'}); |
|
if ($helper->{'VARS'}->{'construction'} ne '1') { |
|
my $title = &Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}); |
|
$title = &Apache::lonxml::latex_special_symbols($title); |
|
$texversion.='\vskip 0 mm \noindent\textbf{'.$title.'}\vskip 0 mm '; |
|
$texversion.=&path_to_problem($urlp,$LaTeXwidth); |
|
} else { |
|
$texversion.='\vskip 0 mm \noindent\textbf{Prints from construction space - there is no title.}\vskip 0 mm '; |
|
my $URLpath=$urlp; |
|
$URLpath=~s/~([^\/]+)/public_html\/$1\/$1/; |
|
$texversion.=&path_to_problem($URLpath,$LaTeXwidth); |
|
} |
|
$texversion.='\vskip 1 mm '.$answer.'\end{document}'; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
# Print annotations. |
|
|
|
|
|
if ($helper->{'VARS'}->{'PRINT_ANNOTATIONS'} eq 'yes') { |
|
my $annotation .= &annotate($currentURL); |
|
$texversion =~ s/(\\keephidden{ENDOFPROBLEM})/$annotation$1/; |
|
} |
|
|
|
if ($helper->{'VARS'}->{'TABLE_INDEX'} eq 'yes') { |
|
$texversion=&IndexCreation($texversion,$currentURL); |
|
} |
|
if ($helper->{'VARS'}->{'CONSTR_RESOURSE_URL'} eq 'yes') { |
|
$texversion=~s/(\\addcontentsline\{toc\}\{subsection\}\{[^\}]*\})/$1 URL: \\verb|$currentURL| \\strut\\\\\\strut /; |
|
|
|
} |
|
$result .= $texversion; |
|
if ($currentURL=~m/\.page\s*$/) { |
|
($result,$numberofcolumns) = &page_cleanup($result); |
|
} |
|
} |
|
} |
|
|
|
$result.= '\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill} \end{document}'; |
|
return $result; |
|
} |
|
|
|
|
# |
# |
# List of recently generated print files |
# List of recently generated print files |
Line 1580 ENDPART
|
Line 1759 ENDPART
|
my $number_of_columns = 1; #used only for pages to determine the width of the cell |
my $number_of_columns = 1; #used only for pages to determine the width of the cell |
my @temporary_array=split /\|/,$format_from_helper; |
my @temporary_array=split /\|/,$format_from_helper; |
my ($laystyle,$numberofcolumns,$papersize,$pdfFormFields)=@temporary_array; |
my ($laystyle,$numberofcolumns,$papersize,$pdfFormFields)=@temporary_array; |
if ($laystyle eq 'L') { |
|
$laystyle='album'; |
$laystyle = &map_laystyle($laystyle); |
} else { |
|
$laystyle='book'; |
|
} |
|
my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$laystyle,$numberofcolumns); |
my ($textwidth,$textheight,$oddoffset,$evenoffset) = &page_format($papersize,$laystyle,$numberofcolumns); |
my $assignment = $env{'form.assignment'}; |
my $assignment = $env{'form.assignment'}; |
my $LaTeXwidth=&recalcto_mm($textwidth); |
my $LaTeXwidth=&recalcto_mm($textwidth); |
Line 1733 ENDPART
|
Line 1909 ENDPART
|
} elsif ($cleanURL!~m|^/adm/| |
} elsif ($cleanURL!~m|^/adm/| |
&& $currentURL=~/\.(sequence|page)$/ && $helper->{'VARS'}->{'construction'} eq '1') { |
&& $currentURL=~/\.(sequence|page)$/ && $helper->{'VARS'}->{'construction'} eq '1') { |
#printing content of sequence from the construction space |
#printing content of sequence from the construction space |
|
|
|
|
$currentURL=~s|\/~([^\/]+)\/|\/home\/$1\/public_html\/|; |
$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, |
$result .= &print_construction_sequence($currentURL, $helper, %form, |
Line 1768 ENDPART
|
Line 1946 ENDPART
|
} elsif ($cleanURL =~ /\.pdf$/i) { |
} elsif ($cleanURL =~ /\.pdf$/i) { |
$result .= &include_pdf($cleanURL); |
$result .= &include_pdf($cleanURL); |
$result .= '\end{document}'; |
$result .= '\end{document}'; |
|
} elsif ($cleanURL =~ /\.page$/i) { # Print page in non construction space contexts. |
|
|
|
# Determine the set of resources in the map of the page: |
|
|
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
my @page_resources = $navmap->retrieveResources($cleanURL); |
|
$result .= &print_page_in_course($helper, $rparmhash, |
|
$cleanURL, \@page_resources); |
|
|
|
|
} else { |
} else { |
|
&Apache::lonnet::logthis("Unsupported type handler"); |
$result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'}, |
$result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'}, |
$helper->{'VARS'}->{'symb'}); |
$helper->{'VARS'}->{'symb'}); |
} |
} |
Line 1839 ENDPART
|
Line 2028 ENDPART
|
&Apache::lonxml::remember_problem_counter(); |
&Apache::lonxml::remember_problem_counter(); |
$texversion.=&ssi_with_retries($urlp, $ssi_retry_count, %form); |
$texversion.=&ssi_with_retries($urlp, $ssi_retry_count, %form); |
if ($urlp=~/\.page$/) { |
if ($urlp=~/\.page$/) { |
|
|
($texversion,my $number_of_columns_page) = &page_cleanup($texversion); |
($texversion,my $number_of_columns_page) = &page_cleanup($texversion); |
if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;} |
if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;} |
$texversion =~ s/\\end{document}\d*/\\end{document}/; |
$texversion =~ s/\\end{document}\d*/\\end{document}/; |
Line 2427 sub print_resources {
|
Line 2617 sub print_resources {
|
if ($res_url!~m|^ext/| |
if ($res_url!~m|^ext/| |
&& $res_url=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) { |
&& $res_url=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) { |
$printed .= $curresline.':'; |
$printed .= $curresline.':'; |
|
|
&Apache::lonxml::remember_problem_counter(); |
&Apache::lonxml::remember_problem_counter(); |
|
|
my $rendered = &get_student_view_with_retries($curresline,$ssi_retry_count,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv); |
my $rendered = &get_student_view_with_retries($curresline,$ssi_retry_count,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv); |
Line 3194 CHOOSE_ANON2
|
Line 3383 CHOOSE_ANON2
|
)) |
)) |
&& $helper->{VARS}->{'assignment'} eq "" |
&& $helper->{VARS}->{'assignment'} eq "" |
) { |
) { |
|
|
my $pretty_dir = &Apache::lonnet::hreflocation($subdir); |
my $pretty_dir = &Apache::lonnet::hreflocation($subdir); |
push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from current subdirectory [_3]','<b>','</b>','<b><i>'.$pretty_dir.'</i></b>','<b>','</b>'), 'problems_from_directory', 'CHOOSE_FROM_SUBDIR']; |
push @{$printChoices}, [&mt('Selected [_1]Problems[_2] from current subdirectory [_3]','<b>','</b>','<b><i>'.$pretty_dir.'</i></b>','<b>','</b>'), 'problems_from_directory', 'CHOOSE_FROM_SUBDIR']; |
my $xmlfrag = <<CHOOSE_FROM_SUBDIR; |
my $xmlfrag = <<CHOOSE_FROM_SUBDIR; |
Line 3739 sub render {
|
Line 3927 sub render {
|
my ($laystyle, $cols, $papersize) = split(/\|/, $format); |
my ($laystyle, $cols, $papersize) = split(/\|/, $format); |
($papersize) = split(/ /, $papersize); |
($papersize) = split(/ /, $papersize); |
|
|
|
$laystyle = &Apache::lonprintout::map_laystyle($laystyle); |
|
|
if ($laystyle eq 'L') { |
|
$laystyle = 'album'; |
|
} else { |
|
$laystyle = 'book'; |
|
} |
|
|
|
|
|
my %size; |
my %size; |
Line 3825 sub preprocess {
|
Line 4009 sub preprocess {
|
($papersize) = split(/ /, $papersize); |
($papersize) = split(/ /, $papersize); |
|
|
|
|
if ($laystyle eq 'L') { |
$laystyle = &Apache::lonprintout::map_laystyle($laystyle); |
$laystyle = 'album'; |
|
} else { |
|
$laystyle = 'book'; |
|
} |
|
# Figure out some good defaults for the print out and set them: |
# Figure out some good defaults for the print out and set them: |
|
|
my %size; |
my %size; |