--- loncom/interface/lonprintout.pm 2005/12/06 15:01:45 1.402
+++ loncom/interface/lonprintout.pm 2005/12/15 18:36:23 1.406
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.402 2005/12/06 15:01:45 albertel Exp $
+# $Id: lonprintout.pm,v 1.406 2005/12/15 18:36:23 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -844,16 +844,19 @@ sub print_latex_header {
sub path_to_problem {
my ($urlp,$colwidth)=@_;
+ $urlp=&Apache::lonnet::clutter($urlp);
+
my $newurlp = '';
$colwidth=~s/\s*mm\s*$//;
#characters average about 2 mm in width
if (length($urlp)*2 > $colwidth) {
- my @elements = split '/',$urlp;
+ my @elements = split('/',$urlp);
my $curlength=0;
foreach my $element (@elements) {
+ if ($element eq '') { next; }
if ($curlength+(length($element)*2) > $colwidth) {
- $newurlp .= '|\vskip -1 mm \noindent \verb|';
- $curlength=0;
+ $newurlp .= '|\vskip -1 mm \verb|';
+ $curlength=length($element)*2;
} else {
$curlength+=length($element)*2;
}
@@ -1100,6 +1103,7 @@ ENDPART
&Apache::lonnet::appenv(%moreenv);
&Apache::lonnet::delenv('form.counter');
&Apache::lonxml::init_counter();
+ &Apache::lonxml::store_counter();
$resources_printed .= $currentURL.':';
$texversion.=&Apache::lonnet::ssi($currentURL,%form);
&Apache::lonnet::delenv('form.counter');
@@ -1182,7 +1186,7 @@ ENDPART
} else {
$texversion=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
$texversion.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($helper->{'VARS'}->{'symb'}).'}\vskip 0 mm ';
- $texversion.=&path_to_problem ($currentURL,$LaTeXwidth);
+ $texversion.=&path_to_problem($urlp,$LaTeXwidth);
$texversion.='\vskip 1 mm '.$answer.'\end{document}';
}
}
@@ -1242,6 +1246,7 @@ ENDPART
my $prevassignment='';
&Apache::lonnet::delenv('form.counter');
&Apache::lonxml::init_counter();
+ &Apache::lonxml::store_counter();
for (my $i=0;$i<=$#master_seq;$i++) {
# Note due to document structure, not allowed to put \newpage
@@ -1262,6 +1267,7 @@ ENDPART
my $texversion='';
if ($urlp=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
$resources_printed .= $urlp.':';
+ my $pre_counter=$env{'form.counter'};
$texversion.=&Apache::lonnet::ssi($urlp,%form);
if ($urlp=~/\.page$/) {
($texversion,my $number_of_columns_page) = &page_cleanup($texversion);
@@ -1269,11 +1275,9 @@ ENDPART
$texversion =~ s/\\end{document}\d*/\\end{document}/;
$flag_page_in_sequence = 'YES';
}
- my $lonidsdir=$r->dir_config('lonIDsDir');
- my $envfile=$env{'user.environment'};
- $envfile=~/\/([^\/]+)\.id$/;
- $envfile=$1;
- &Apache::lonnet::transfer_profile_to_env($lonidsdir,$envfile);
+ my ($envfile) = ($env{'user.environment'} =~m|/([^/]+)\.id$| );
+ &Apache::lonnet::transfer_profile_to_env($r->dir_config('lonIDsDir'),
+ $envfile);
my $current_counter=$env{'form.counter'};
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
@@ -1282,6 +1286,7 @@ ENDPART
$answerform{'grade_target'}='answer';
$answerform{'answer_output_mode'}='tex';
$resources_printed .= $urlp.':';
+ &Apache::lonnet::appenv(('form.counter' => $pre_counter));
my $answer=&Apache::lonnet::ssi($urlp,%answerform);
&Apache::lonnet::appenv(('form.counter' => $current_counter));
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
@@ -1711,7 +1716,7 @@ sub print_resources {
#current student, and produces output
&Apache::lonnet::delenv('form.counter');
&Apache::lonxml::init_counter();
-
+ &Apache::lonxml::store_counter();
my %page_breaks = &get_page_breaks($helper);
foreach my $curresline (@{$master_seq}) {
@@ -1727,12 +1732,12 @@ sub print_resources {
if (&Apache::lonnet::allowed('bre',$res_url)) {
if ($res_url=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) {
$printed .= $curresline.':';
+ my $pre_counter=$env{'form.counter'};
my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);
- my $lonidsdir=$r->dir_config('lonIDsDir');
- my $envfile=$env{'user.environment'};
- $envfile=~/\/([^\/]+)\.id$/;
- $envfile=$1;
- &Apache::lonnet::transfer_profile_to_env($lonidsdir,$envfile);
+ my ($envfile) =
+ ( $env{'user.environment'} =~ m|/([^/]+)\.id$| );
+ &Apache::lonnet::transfer_profile_to_env($r->dir_config('lonIDsDir'),
+ $envfile);
my $current_counter=$env{'form.counter'};
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
@@ -1740,6 +1745,7 @@ sub print_resources {
my %answerenv = %{$moreenv};
$answerenv{'answer_output_mode'}='tex';
$answerenv{'latex_type'}=$helper->{'VARS'}->{'LATEX_TYPE'};
+ &Apache::lonnet::appenv(('form.counter' => $pre_counter));
my $ansrendered = &Apache::loncommon::get_student_answers($curresline,$username,$userdomain,$env{'request.course.id'},%answerenv);
&Apache::lonnet::appenv(('form.counter' => $current_counter));
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
@@ -1747,7 +1753,7 @@ sub print_resources {
} else {
$rendered=&print_latex_header($helper->{'VARS'}->{'LATEX_TYPE'});
$rendered.='\vskip 0 mm \noindent\textbf{'.&Apache::lonnet::gettitle($curresline).'}\vskip 0 mm ';
- $rendered.=&path_to_problem ($curresline,$LaTeXwidth);
+ $rendered.=&path_to_problem($res_url,$LaTeXwidth);
$rendered.='\vskip 1 mm '.$ansrendered;
}
}
@@ -1760,11 +1766,10 @@ sub print_resources {
} elsif ($res_url=~/\/(smppg|syllabus|aboutme|bulletinboard)$/) {
$printed .= $curresline.':';
my $rendered = &Apache::loncommon::get_student_view($curresline,$username,$userdomain,$env{'request.course.id'},'tex',$moreenv);
- my $lonidsdir=$r->dir_config('lonIDsDir');
- my $envfile=$env{'user.environment'};
- $envfile=~/\/([^\/]+)\.id$/;
- $envfile=$1;
- &Apache::lonnet::transfer_profile_to_env($lonidsdir,$envfile);
+ my ($envfile) =
+ ( $env{'user.environment'} = ~m|/([^/]+)\.id$| );
+ &Apache::lonnet::transfer_profile_to_env($r->dir_config('lonIDsDir'),
+ $envfile);
my $current_counter=$env{'form.counter'};
if ($remove_latex_header eq 'YES') {
$rendered = &latex_header_footer_remove($rendered);
@@ -2167,16 +2172,16 @@ CHOOSE_STUDENTS
my %all_codes = &Apache::lonnet::get('CODEs',
\@names, $cdom,$cnum);
my %code_values;
- my @all_code_array;
- foreach my $key (keys %all_codes) {
+ my %codes_to_print;
+ foreach my $key (keys(%all_codes)) {
%code_values = &Apache::grades::get_codes($key, $cdom, $cnum);
- foreach my $key (keys %code_values) {
- push (@all_code_array, "$key");
+ foreach my $key (keys(%code_values)) {
+ $codes_to_print{$key} = 1;
}
}
my $code_selection = "\n";
- foreach my $code (sort {uc($a) cmp uc($b)} @all_code_array) {
+ foreach my $code (sort {uc($a) cmp uc($b)} (keys(%codes_to_print))) {
my $choice = $code;
if ($code =~ /^[A-Z]+$/) { # Alpha code
$choice = &letters_to_num($code);
@@ -2392,7 +2397,6 @@ CHOOSE_FROM_SUBDIR
return $urlValue;
return \$res->hasResource(\$res,sub { return !\$_[0]->is_sequence() },0,0);
-