version 1.568.4.4, 2010/12/05 19:46:04
|
version 1.572, 2010/02/28 22:38:45
|
Line 1757 sub recently_generated {
|
Line 1757 sub recently_generated {
|
# |
# |
# |
# |
# use Data::Dumper; |
# use Data::Dumper; |
#sub dump_helper_vars { |
# sub dump_helper_vars { |
# my ($helper) = @_; |
# my ($helper) = @_; |
# my $helpervars = Dumper($helper->{'VARS'}); |
# my $helpervars = Dumper($helper->{'VARS'}); |
# &Apache::lonnet::logthis("Dump of helper vars:\n $helpervars"); |
# &Apache::lonnet::logthis("Dump of helper vars:\n $helpervars"); |
Line 1772 sub get_page_breaks {
|
Line 1772 sub get_page_breaks {
|
} |
} |
return %page_breaks; |
return %page_breaks; |
} |
} |
|
# |
|
# Returns text to insert for any extra vskip prior to the resource. |
|
# Parameters: |
|
# helper - Reference to the helper object driving the printout. |
|
# resource - Identifies the resource about to be printed. |
|
# |
|
# This is done as follows: |
|
# POSSIBLE_RESOURCES has the list of possible resources. |
|
# EXTRASPACE has the list of extra space values. |
|
# EXTRASPACE_UNITS is the set of resources for which the units are |
|
# mm. All others are 'in'. |
|
# |
|
# The resource is found in the POSSIBLE_RESOURCES to get the index |
|
# of the EXTRASPACE value. |
|
# |
|
# In order to speed this up for lengthy printouts, the first time, |
|
# POSSIBLE_RESOURCES is turned into a look up hash and |
|
# EXTRASPACE is turned into an array. |
|
# |
|
|
|
|
|
my %possible_resources; |
|
my %extraspace_mm; |
|
my @extraspace; |
|
my $skips_loaded = 0; |
|
|
|
# Function to load the skips hash and array |
|
|
|
sub load_skips { |
|
|
|
my ($helper) = @_; |
|
|
|
# If this is the first time, unrap the resources and extra spaces: |
|
|
|
if (!$skips_loaded) { |
|
@extraspace = (split(/\|\|\|/, $helper->{'VARS'}->{'EXTRASPACE'})); |
|
my @resource_list = (split(/\|\|\|/, $helper->{'VARS'}->{'POSSIBLE_RESOURCES'})); |
|
my $i = 0; |
|
foreach my $resource (@resource_list) { |
|
$possible_resources{$resource} = $i; |
|
$i++; |
|
} |
|
foreach my $mm_resource (split(/\|\|\|/, $helper->{'VARS'}->{'EXTRASPACE_UNITS'})) { |
|
$extraspace_mm{$mm_resource} = 1; |
|
} |
|
$skips_loaded = 1; |
|
} |
|
} |
|
|
|
sub get_extra_vspaces { |
|
my ($helper, $resource) = @_; |
|
|
|
&load_skips($helper); |
|
|
|
# Lookup the resource in the possible resources hash.. that is the index |
|
# into the extraspace array that gives us either an empty string or |
|
# the number of mm to skip: |
|
|
|
my $index = $possible_resources{$resource}; |
|
my $skip = $extraspace[$index]; |
|
|
|
my $result = ''; |
|
if ($skip ne '') { |
|
my $units = 'in'; |
|
if (defined($extraspace_mm{$resource})) { |
|
$units = 'mm'; |
|
} |
|
$result = '\vskip '.$skip.' '.$units; |
|
} |
|
|
|
|
|
return $result; |
|
|
|
|
|
} |
|
|
|
# |
|
# The resource chooser part of the helper needs more than just |
|
# the value of the extraspaces var to recover the value into a text |
|
# field option. This sub produces the required format for the saved var: |
|
# specifically |
|
# ||| separated fields of the form resourcename=value |
|
# |
|
# Parameters: |
|
# $helper - Refers to the helper we are configuring |
|
# Implicit input: |
|
# $helper->{'VARS'}->{'EXTRASPACE'} - the spaces helper var has the text field |
|
# value. |
|
# $helper->{'VARS'}->{'EXTRASPACE_UNITS'} - units for the skips (checkboxes). |
|
# $helper->{'VARS'}->{'POSSIBLE_RESOURCES'} - has the list of resources. ||| |
|
# separated of course. |
|
# Implicit outputs: |
|
# $env{'form.extraspace'} |
|
# $env{'form.extraspace_units'} |
|
# |
|
sub set_form_extraspace { |
|
my ($helper) = @_; |
|
|
|
# the most convenient way to do this is to drive from the skips arrays/hash. |
|
# may not be the fastest, but this is once per print request so it's not so |
|
# speed critical: |
|
|
|
&load_skips($helper); |
|
|
|
my $result = ''; |
|
|
|
foreach my $resource (keys(%possible_resources)) { |
|
my $vskip = $extraspace[$possible_resources{$resource}]; |
|
$result .= $resource .'=' . $vskip . '|||'; |
|
} |
|
|
|
$env{'form.extraspace'} = $result; |
|
$env{'form.extraspace_units'} = $helper->{'VARS'}->{'EXTRASPACE_UNITS'}; |
|
return $result; |
|
|
|
} |
|
|
# Output a sequence (recursively if neeed) |
# Output a sequence (recursively if neeed) |
# from construction space. |
# from construction space. |
Line 1890 sub print_construction_sequence {
|
Line 2006 sub print_construction_sequence {
|
} |
} |
|
|
sub output_data { |
sub output_data { |
my ($r,$helper,$rparmhash,$is_custom) = @_; |
my ($r,$helper,$rparmhash) = @_; |
my %parmhash = %$rparmhash; |
my %parmhash = %$rparmhash; |
$ssi_error = 0; # This will be set nonzero by failing ssi's. |
$ssi_error = 0; # This will be set nonzero by failing ssi's. |
$resources_printed = ''; |
$resources_printed = ''; |
Line 1931 ENDPART
|
Line 2047 ENDPART
|
{'href' => '', |
{'href' => '', |
'text' => 'Preparing Printout'}]; |
'text' => 'Preparing Printout'}]; |
|
|
if ($is_custom) { |
|
$brcrum = [{'href' => '', |
|
'text' => 'Preparing Printout'}]; |
|
} |
|
|
|
my $start_page = &Apache::loncommon::start_page('Preparing Printout', |
my $start_page = &Apache::loncommon::start_page('Preparing Printout', |
$js, |
$js, |
{'bread_crumbs' => $brcrum,}); |
{'bread_crumbs' => $brcrum,}); |
Line 1948 ENDPART
|
Line 2059 ENDPART
|
# indexed by symb and contains 1's for each break. |
# indexed by symb and contains 1's for each break. |
|
|
$env{'form.pagebreaks'} = $helper->{'VARS'}->{'FINISHPAGE'}; |
$env{'form.pagebreaks'} = $helper->{'VARS'}->{'FINISHPAGE'}; |
|
&set_form_extraspace($helper); |
$env{'form.lastprinttype'} = $helper->{'VARS'}->{'PRINT_TYPE'}; |
$env{'form.lastprinttype'} = $helper->{'VARS'}->{'PRINT_TYPE'}; |
&Apache::loncommon::store_course_settings('print', |
&Apache::loncommon::store_course_settings('print', |
{'pagebreaks' => 'scalar', |
{'pagebreaks' => 'scalar', |
|
'extraspace' => 'scalar', |
|
'extraspace_units' => 'scalar', |
'lastprinttype' => 'scalar'}); |
'lastprinttype' => 'scalar'}); |
|
|
my %page_breaks = &get_page_breaks($helper); |
my %page_breaks = &get_page_breaks($helper); |
|
|
my $format_from_helper = $helper->{'VARS'}->{'FORMAT'}; |
my $format_from_helper = $helper->{'VARS'}->{'FORMAT'}; |
Line 1997 ENDPART
|
Line 2110 ENDPART
|
&Apache::lonnet::delenv('construct.style'); |
&Apache::lonnet::delenv('construct.style'); |
} |
} |
|
|
|
|
if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'current_document') { |
if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'current_document') { |
#-- single document - problem, page, html, xml, ... |
#-- single document - problem, page, html, xml, ... |
my ($currentURL,$cleanURL); |
my ($currentURL,$cleanURL); |
Line 2215 ENDPART
|
Line 2329 ENDPART
|
$result.="\\newpage\n"; |
$result.="\\newpage\n"; |
} |
} |
} |
} |
|
$result .= &get_extra_vspaces($helper, $master_seq[$i]); |
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); |
$urlp=&Apache::lonnet::clutter($urlp); |
$form{'symb'}=$master_seq[$i]; |
$form{'symb'}=$master_seq[$i]; |
Line 2816 sub print_resources {
|
Line 2931 sub print_resources {
|
$current_output.= "\\newpage\n"; |
$current_output.= "\\newpage\n"; |
} |
} |
} |
} |
|
$current_output .= &get_extra_vspaces($helper, $curresline); |
$i++; |
$i++; |
|
|
if ( !($type eq 'problems' && |
if ( !($type eq 'problems' && |
Line 2942 sub handler {
|
Line 3058 sub handler {
|
|
|
&init_perm(); |
&init_perm(); |
|
|
my ($helper,$is_custom); |
|
if ((&Apache::loncommon::needs_gci_custom()) && |
|
($env{'request.role.domain'} =~ /^\w+citest$/)) { |
|
if ($r->header_only) { |
|
if ($env{'browser.mathml'}) { |
|
&Apache::loncommon::content_type($r,'text/xml'); |
|
} else { |
|
&Apache::loncommon::content_type($r,'text/html'); |
|
} |
|
$r->send_http_header; |
|
return OK; |
|
} |
|
# Send header, nocache |
|
if ($env{'browser.mathml'}) { |
|
&Apache::loncommon::content_type($r,'text/xml'); |
|
} else { |
|
&Apache::loncommon::content_type($r,'text/html'); |
|
} |
|
&Apache::loncommon::no_cache($r); |
|
$r->send_http_header; |
|
$r->rflush(); |
|
|
|
my ($navmap_error,$resources,@master_seq); |
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
my $helper = printHelper($r); |
if (!defined($navmap)) { |
if (!ref($helper)) { |
my $brcrum = [{'href' => '', |
return $helper; |
'text' => 'Preparing Printout'}]; |
|
|
|
my $start_page = |
|
&Apache::loncommon::start_page('Preparing Printout','', |
|
{'bread_crumbs' => $brcrum,}); |
|
my $endpage = &Apache::loncommon::end_page(); |
|
|
|
my $navmap_error = '<span class="LC_error">'.&mt('An error occurred retrieving information about the course.').'<br />'.&mt('It is recommended that you re-select the concept test by clicking on the "Review Questions" tab and then clicking on the "Manage Tests" tab again.').'</span>'; |
|
$r->print($start_page.$navmap_error.$endpage); |
|
return OK; |
|
} else { |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
my $sequence = &Apache::loncommon::get_citest_map($cdom); |
|
my @allres; |
|
if ($sequence) { |
|
@allres=$navmap->retrieveResources('/uploaded/'.$cdom.'/'.$cnum.'/'.$sequence); |
|
} |
|
foreach my $resource (@allres) { |
|
next if ($resource->is_map()); |
|
my $symb = $resource->symb(); |
|
push(@master_seq,$symb); |
|
} |
|
$resources = join('|||',@master_seq); |
|
my ($sequence,$middle_thingy,$urlp) = |
|
&Apache::lonnet::decode_symb($master_seq[0]); |
|
|
|
my $assignment = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::gettitle($sequence),'header'); |
|
|
|
$helper = { |
|
VARS => { |
|
ANON_CODE_STORAGE_NAME => '', |
|
ANSWER_TYPE => 'yes', |
|
CODE_OPTION => '', |
|
EMPTY_PAGES => '', |
|
FINISHPAGE => '', |
|
FORMAT => 'P|1|letter|no', |
|
LATEX_TYPE => 'batchmode', |
|
NUMBER_TO_PRINT_TOTAL => '', |
|
PRINT_ANNOTATIONS => 'no', |
|
PRINT_DISCUSSIONS => 'no', |
|
PRINT_TYPE => 'map_problems', |
|
RESOURCES => $resources, |
|
REUSE_OLD_CODES => '', |
|
SEQUENCE => '', |
|
SINGLE_CODE => '', |
|
SPLIT_PDFS => '', |
|
STUDENTS => '', |
|
TABLE_CONTENTS => 'no', |
|
TABLE_INDEX => 'no', |
|
assignment => $assignment, |
|
construction => '', |
|
curseed => '', |
|
filename => '', |
|
fontsize => 'normalsize', |
|
pagesize => '', |
|
'pagesize.height' => '9.8', |
|
'pagesize.heightunit' => 'in', |
|
'pagesize.lmargin' => '-0.57', |
|
'pagesize.lmarginunit' => 'in', |
|
'pagesize.width' => '7.1', |
|
'pagesize.widthunit' => 'in', |
|
postdata => $urlp, |
|
probstatus => '', |
|
showallfoils => '', |
|
student_sort => '', |
|
style_file => '', |
|
symb => $master_seq[0], |
|
} |
|
}; |
|
$env{'form.assignment'} = $assignment; |
|
$is_custom = 1; |
|
} |
|
} else { |
|
$helper = printHelper($r); |
|
if (!ref($helper)) { |
|
return $helper; |
|
} |
|
} |
} |
|
|
|
|
%parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'}); |
%parmhash=&Apache::lonnet::coursedescription($env{'request.course.id'}); |
|
|
|
|
|
|
|
|
# If a figure conversion queue file exists for this user.domain |
# If a figure conversion queue file exists for this user.domain |
Line 3057 sub handler {
|
Line 3077 sub handler {
|
|
|
my $conversion_queuefile = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout.dat"; |
my $conversion_queuefile = "/home/httpd/prtspool/$env{'user.name'}_$env{'user.domain'}_printout.dat"; |
if(-e $conversion_queuefile) { |
if(-e $conversion_queuefile) { |
unlink $conversion_queuefile; |
unlink $conversion_queuefile; |
} |
} |
|
|
|
|
|
&output_data($r,$helper,\%parmhash); |
&output_data($r,$helper,\%parmhash,$is_custom); |
|
return OK; |
return OK; |
} |
} |
|
|
use Apache::lonhelper; |
use Apache::lonhelper; |
|
|
Line 3159 sub printHelper {
|
Line 3179 sub printHelper {
|
$helper->declareVar('PRINT_TYPE'); |
$helper->declareVar('PRINT_TYPE'); |
$helper->declareVar("showallfoils"); |
$helper->declareVar("showallfoils"); |
$helper->declareVar("STUDENTS"); |
$helper->declareVar("STUDENTS"); |
|
$helper->declareVar("EXTRASPACE"); |
|
|
|
|
|
|
|
|
# The page breaks can get loaded initially from the course environment: |
# The page breaks and extra spaces |
|
# can get loaded initially from the course environment: |
# But we only do this in the initial state so that they are allowed to change. |
# But we only do this in the initial state so that they are allowed to change. |
# |
# |
|
|
# $helper->{VARS}->{FINISHPAGE} = ''; |
|
|
|
&Apache::loncommon::restore_course_settings('print', |
&Apache::loncommon::restore_course_settings('print', |
{'pagebreaks' => 'scalar', |
{'pagebreaks' => 'scalar', |
|
'extraspace' => 'scalar', |
|
'extraspace_units' => 'scalar', |
'lastprinttype' => 'scalar'}); |
'lastprinttype' => 'scalar'}); |
|
|
# This will persistently load in the data we want from the |
# This will persistently load in the data we want from the |
Line 3181 sub printHelper {
|
Line 3203 sub printHelper {
|
if (!defined ($env{"form.CURRENT_STATE"})) { |
if (!defined ($env{"form.CURRENT_STATE"})) { |
|
|
$helper->{VARS}->{FINISHPAGE} = $env{'form.pagebreaks'}; |
$helper->{VARS}->{FINISHPAGE} = $env{'form.pagebreaks'}; |
|
$helper->{VARS}->{EXTRASPACE} = $env{'form.extraspace'}; |
|
$helper->{VARS}->{EXTRASPACE_UNITS} = $env{'form.extraspace_units'}; |
} else { |
} else { |
my $state = $env{"form.CURRENT_STATE"}; |
my $state = $env{"form.CURRENT_STATE"}; |
if ($state eq "START") { |
if ($state eq "START") { |
$helper->{VARS}->{FINISHPAGE} = $env{'form.pagebreaks'}; |
$helper->{VARS}->{FINISHPAGE} = $env{'form.pagebreaks'}; |
|
$helper->{VARS}->{EXTRASPACE} = $env{'form.extraspace'}; |
|
$helper->{VARS}->{EXTRASPACE_UNITS} = $env{'form.extraspace_units'}; |
|
|
} |
} |
} |
} |
|
|
Line 3303 sub printHelper {
|
Line 3330 sub printHelper {
|
if ($perm{'pav'}) { |
if ($perm{'pav'}) { |
$start_new_option = |
$start_new_option = |
"<option text='".&mt('Start new page<br />before selected'). |
"<option text='".&mt('Start new page<br />before selected'). |
"' variable='FINISHPAGE' />"; |
"' variable='FINISHPAGE' />". |
|
"<option text='".&mt('Extra space<br />before selected'). |
|
"' variable='EXTRASPACE' type='text' />" . |
|
"<option " . |
|
"' variable='POSSIBLE_RESOURCES' type='hidden' />". |
|
"<option text='".&mt('Space units<br />check for mm'). |
|
"' variable='EXTRASPACE_UNITS' type='checkbox' />" |
|
; |
|
|
|
|
} |
} |
|
|
# If not construction space user can print the components of a page: |
# If not construction space user can print the components of a page: |
Line 4017 FONT_SELECTION
|
Line 4053 FONT_SELECTION
|
<choice computer="problem">Homework Problem</choice> |
<choice computer="problem">Homework Problem</choice> |
<choice computer="exam">Exam Problem</choice> |
<choice computer="exam">Exam Problem</choice> |
<choice computer="survey">Survey question</choice> |
<choice computer="survey">Survey question</choice> |
|
,choice computer="anonsurvey"Anonymous survey question</choice> |
</dropdown> |
</dropdown> |
PROBTYPE |
PROBTYPE |
&Apache::lonxml::xmlparse($r, 'helper', $xmlfrag); |
&Apache::lonxml::xmlparse($r, 'helper', $xmlfrag); |