version 1.358, 2005/02/07 17:12:46
|
version 1.363, 2005/02/22 11:43:05
|
Line 42 use Apache::lonratedt;
|
Line 42 use Apache::lonratedt;
|
use POSIX qw(strftime); |
use POSIX qw(strftime); |
use Apache::lonlocal; |
use Apache::lonlocal; |
|
|
my $LaTeXwidth = 0; |
|
|
|
|
|
# Compare two students by name. The students are in the form |
# Compare two students by name. The students are in the form |
# returned by the helper: |
# returned by the helper: |
# user:domain:section:last, first:status |
# user:domain:section:last, first:status |
Line 698 sub IndexCreation {
|
Line 695 sub IndexCreation {
|
sub print_latex_header { |
sub print_latex_header { |
my $mode=shift; |
my $mode=shift; |
my $output='\documentclass[letterpaper]{article}'; |
my $output='\documentclass[letterpaper]{article}'; |
if ($mode eq 'batchmode') { |
if (($mode eq 'batchmode') || (!$ENV{'request.role.adv'})) { |
$output.='\batchmode'; |
$output.='\batchmode'; |
} |
} |
$output.='\newcommand{\keephidden}[1]{}\renewcommand{\deg}{$^{\circ}$}'."\n". |
$output.='\newcommand{\keephidden}[1]{}\renewcommand{\deg}{$^{\circ}$}'."\n". |
Line 726 sub path_to_problem {
|
Line 723 sub path_to_problem {
|
my $newurlp = ''; |
my $newurlp = ''; |
$colwidth=~s/\s*mm\s*$//; |
$colwidth=~s/\s*mm\s*$//; |
#characters average about 2 mm in width |
#characters average about 2 mm in width |
if (length($urlp)*2 > $LaTeXwidth) { |
if (length($urlp)*2 > $colwidth) { |
my @elements = split '/',$urlp; |
my @elements = split '/',$urlp; |
my $curlength=0; |
my $curlength=0; |
foreach my $element (@elements) { |
foreach my $element (@elements) { |
Line 784 sub unsupported {
|
Line 781 sub unsupported {
|
} |
} |
|
|
|
|
|
# |
|
# Retrieve the hash of page breaks. |
|
# |
|
# Inputs: |
|
# helper - reference to helper object. |
|
# Outputs |
|
# A reference to a page break hash. |
|
# |
|
# |
|
|
|
sub get_page_breaks { |
|
my ($helper) = @_; |
|
my %page_breaks; |
|
|
|
|
|
|
|
foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) { |
|
$page_breaks{$break} = 1; |
|
} |
|
|
|
return \%page_breaks; |
|
} |
|
|
sub output_data { |
sub output_data { |
my ($r,$helper,$rparmhash) = @_; |
my ($r,$helper,$rparmhash) = @_; |
my %parmhash = %$rparmhash; |
my %parmhash = %$rparmhash; |
|
my $html=&Apache::lonxml::xmlbegin(); |
my $bodytag=&Apache::loncommon::bodytag('Preparing Printout'); |
my $bodytag=&Apache::loncommon::bodytag('Preparing Printout'); |
$r->print(<<ENDPART); |
$r->print(<<ENDPART); |
|
$html |
|
<head> |
|
<script type="text/javascript" language="Javascript"> |
<html> |
|
<script type="text/javascript" language="Javascript" > |
|
var editbrowser; |
var editbrowser; |
function openbrowser(formname,elementname,only,omit) { |
function openbrowser(formname,elementname,only,omit) { |
var url = '/res/?'; |
var url = '/res/?'; |
Line 817 sub output_data {
|
Line 836 sub output_data {
|
editbrowser.focus(); |
editbrowser.focus(); |
} |
} |
</script> |
</script> |
<head> |
|
<title>LON-CAPA output for printing</title> |
<title>LON-CAPA output for printing</title> |
</head> |
</head> |
$bodytag |
$bodytag |
Please stand by while processing your print request, this may take some time ... |
Please stand by while processing your print request, this may take some time ... |
ENDPART |
ENDPART |
|
|
# Common settings for the %form has: |
|
# In some cases these settings get overriddent by specific cases, but the |
# fetch the pagebreaks and store them in the course environment |
# settings are common enough to make it worthwhile factoring them out |
# The page breaks will be pulled into the hash %page_breaks which is |
# here. |
# indexed by symb and contains 1's for each break. |
# |
|
my %form; |
$ENV{'form.pagebreaks'} = $helper->{'VARS'}->{'FINISHPAGE'}; |
$form{'grade_target'} = 'tex'; |
&Apache::loncommon::store_course_settings('print', |
$form{'textwidth'} = &get_textwidth($helper, $LaTeXwidth); |
{'pagebreaks' => 'scalar'}); |
|
|
|
my $page_hashref = &get_page_breaks($helper); |
|
my %page_breaks = %$page_hashref; |
|
|
|
|
|
|
my $format_from_helper = $helper->{'VARS'}->{'FORMAT'}; |
my $format_from_helper = $helper->{'VARS'}->{'FORMAT'}; |
my ($result,$selectionmade) = ('',''); |
my ($result,$selectionmade) = ('',''); |
Line 848 ENDPART
|
Line 871 ENDPART
|
my $LaTeXwidth=&recalcto_mm($textwidth); |
my $LaTeXwidth=&recalcto_mm($textwidth); |
my @print_array=(); |
my @print_array=(); |
my @student_names=(); |
my @student_names=(); |
|
|
|
# Common settings for the %form has: |
|
# In some cases these settings get overriddent by specific cases, but the |
|
# settings are common enough to make it worthwhile factoring them out |
|
# here. |
|
# |
|
my %form; |
|
$form{'grade_target'} = 'tex'; |
|
$form{'textwidth'} = &get_textwidth($helper, $LaTeXwidth); |
|
|
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, ... |
Line 1017 ENDPART
|
Line 1049 ENDPART
|
my $flag_latex_header_remove = 'NO'; |
my $flag_latex_header_remove = 'NO'; |
my $flag_page_in_sequence = 'NO'; |
my $flag_page_in_sequence = 'NO'; |
my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'}; |
my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'}; |
my %page_breaks; |
|
foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) { |
|
$page_breaks{$break} = 1; |
|
} |
|
my $prevassignment=''; |
my $prevassignment=''; |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonxml::init_counter(); |
&Apache::lonxml::init_counter(); |
Line 1172 ENDPART
|
Line 1200 ENDPART
|
my ($output,$fullname)=&print_resources($r,$helper, |
my ($output,$fullname)=&print_resources($r,$helper, |
$person,$type, |
$person,$type, |
\%moreenv,\@master_seq, |
\%moreenv,\@master_seq, |
$flag_latex_header_remove); |
$flag_latex_header_remove, |
|
$LaTeXwidth); |
$print_array[$i].=$output; |
$print_array[$i].=$output; |
$student_names[$i].=$person.':'.$fullname.'_END_'; |
$student_names[$i].=$person.':'.$fullname.'_END_'; |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,&mt('last student').' '.$fullname); |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,&mt('last student').' '.$fullname); |
Line 1223 ENDPART
|
Line 1252 ENDPART
|
$moreenv{'CODE'}=&num_to_letters($code); |
$moreenv{'CODE'}=&num_to_letters($code); |
my ($output,$fullname)= |
my ($output,$fullname)= |
&print_resources($r,$helper,'anonymous',$type,\%moreenv, |
&print_resources($r,$helper,'anonymous',$type,\%moreenv, |
\@master_seq,$flag_latex_header_remove); |
\@master_seq,$flag_latex_header_remove, |
|
$LaTeXwidth); |
$print_array[$file_num].=$output; |
$print_array[$file_num].=$output; |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, |
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state, |
&mt('last assignment').' '.$fullname); |
&mt('last assignment').' '.$fullname); |
Line 1420 sub get_CODE {
|
Line 1450 sub get_CODE {
|
} |
} |
|
|
sub print_resources { |
sub print_resources { |
my ($r,$helper,$person,$type,$moreenv,$master_seq,$remove_latex_header)=@_; |
my ($r,$helper,$person,$type,$moreenv,$master_seq,$remove_latex_header, |
|
$LaTeXwidth)=@_; |
my $current_output = ''; |
my $current_output = ''; |
my ($username,$userdomain,$usersection) = split /:/,$person; |
my ($username,$userdomain,$usersection) = split /:/,$person; |
my $fullname = &get_name($username,$userdomain); |
my $fullname = &get_name($username,$userdomain); |
Line 1429 sub print_resources {
|
Line 1460 sub print_resources {
|
$namepostfix="\\\\Name: "; |
$namepostfix="\\\\Name: "; |
$fullname = "CODE - ".$moreenv->{'CODE'}; |
$fullname = "CODE - ".$moreenv->{'CODE'}; |
} |
} |
my %page_breaks; |
|
foreach my $break (split /\|\|\|/,$helper->{'VARS'}->{'FINISHPAGE'}) { |
|
$page_breaks{$break} = 1; |
|
} |
|
my $i = 0; |
my $i = 0; |
#goes through all resources, checks if they are available for |
#goes through all resources, checks if they are available for |
#current student, and produces output |
#current student, and produces output |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonnet::delenv('form.counter'); |
&Apache::lonxml::init_counter(); |
&Apache::lonxml::init_counter(); |
|
|
|
my $page_hashref = &get_page_breaks($helper); |
|
my %page_breaks = %$page_hashref; |
|
|
foreach my $curresline (@{$master_seq}) { |
foreach my $curresline (@{$master_seq}) { |
if (defined $page_breaks{$curresline}) { |
if (defined $page_breaks{$curresline}) { |
if($i != 0) { |
if($i != 0) { |
Line 1611 sub printHelper {
|
Line 1642 sub printHelper {
|
$helper->declareVar('assignment'); |
$helper->declareVar('assignment'); |
$helper->declareVar('style_file'); |
$helper->declareVar('style_file'); |
$helper->declareVar('student_sort'); |
$helper->declareVar('student_sort'); |
|
$helper->declareVar('FINISHPAGE'); |
|
|
|
# The page breaks can get loaded initially from the course environment: |
|
|
|
&Apache::loncommon::restore_course_settings('print', |
|
{'pagebreaks' => 'scalar'}); |
|
|
|
$helper->{VARS}->{FINISHPAGE} = $ENV{'form.pagebreaks'}; |
|
|
# This will persistently load in the data we want from the |
# This will persistently load in the data we want from the |
# very first screen. |
# very first screen. |
Line 1839 CHOOSE_STUDENTS
|
Line 1878 CHOOSE_STUDENTS
|
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON1); |
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON1); |
<state name="CHOOSE_ANON1" title="Select Students and Resources"> |
<state name="CHOOSE_ANON1" title="Select Students and Resources"> |
<nextstate>PAGESIZE</nextstate> |
<nextstate>PAGESIZE</nextstate> |
<message><hr width='33%' /><b>Number of anonymous assignments to print?</b></message> |
<message><hr width='33%' /></message> |
<string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5"></string> |
<message><table><tr><td><b>Number of anonymous assignments to print?</b></td><td></message> |
<message><br /><b>Names to store the CODEs under for later:</b></message> |
<string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5"> |
|
<validator> |
|
if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) && |
|
!\$helper->{'VARS'}{'REUSE_OLD_CODES'}) { |
|
return "You need to specify the number of assignments to print"; |
|
} |
|
return undef; |
|
</validator> |
|
</string> |
|
<message></td></tr><tr><td></message> |
|
<message><b>Names to store the CODEs under for later:</b></message> |
|
<message></td><td></message> |
<string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" /> |
<string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" /> |
|
<message></td></tr></table></message> |
<message><hr width='33%' /></message> |
<message><hr width='33%' /></message> |
<message><b>Reprint a set of saved CODEs:</b></message> |
<message><b>Reprint a set of saved CODEs:</b></message> |
<dropdown variable="REUSE_OLD_CODES"> |
<dropdown variable="REUSE_OLD_CODES"> |
Line 1895 CHOOSE_STUDENTS1
|
Line 1946 CHOOSE_STUDENTS1
|
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON2); |
&Apache::lonxml::xmlparse($r, 'helper', <<CHOOSE_ANON2); |
<state name="CHOOSE_ANON2" title="Select Students and Resources"> |
<state name="CHOOSE_ANON2" title="Select Students and Resources"> |
<nextstate>PAGESIZE</nextstate> |
<nextstate>PAGESIZE</nextstate> |
<message><hr width='33%' /><b>Number of anonymous assignments to print?</b></message> |
<message><table><tr><td><b>Number of anonymous assignments to print?</b></td><td></message> |
<string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5"></string> |
<string variable="NUMBER_TO_PRINT_TOTAL" maxlength="5" size="5"> |
<message><br /><b>Names to store the CODEs under for later:</b></message> |
<validator> |
|
if (((\$helper->{'VARS'}{'NUMBER_TO_PRINT_TOTAL'}+0) < 1) && |
|
!\$helper->{'VARS'}{'REUSE_OLD_CODES'}) { |
|
return "You need to specify the number of assignments to print"; |
|
} |
|
return undef; |
|
</validator> |
|
</string> |
|
<message></td></tr><tr><td></message> |
|
<message><b>Names to store the CODEs under for later:</b></message> |
|
<message></td><td></message> |
<string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" /> |
<string variable="ANON_CODE_STORAGE_NAME" maxlength="50" size="20" /> |
|
<message></td></tr></table></message> |
<message><hr width='33%' /></message> |
<message><hr width='33%' /></message> |
<message><b>Reprint a set of saved CODEs:</b></message> |
<message><b>Reprint a set of saved CODEs:</b></message> |
<dropdown variable="REUSE_OLD_CODES"> |
<dropdown variable="REUSE_OLD_CODES"> |