--- loncom/interface/lonprintout.pm 2005/01/04 21:59:22 1.349
+++ loncom/interface/lonprintout.pm 2005/01/31 12:03:08 1.354
@@ -1,7 +1,7 @@
-# The LearningOnline Network
+# The LearningOnline Network
# Printout
#
-# $Id: lonprintout.pm,v 1.349 2005/01/04 21:59:22 albertel Exp $
+# $Id: lonprintout.pm,v 1.354 2005/01/31 12:03:08 foxr Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -886,6 +886,7 @@ ENDPART
if(($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') ||
($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'only')) {
my %form;
+ $form{'problem_split'}=$parmhash{'problem_stream_switch'};
$form{'grade_target'}='answer';
$form{'answer_output_mode'}='tex';
$form{'rndseed'}=$rndseed;
@@ -948,6 +949,7 @@ ENDPART
$form{'grade_target'}='answer';
$form{'answer_output_mode'}='tex';
$form{'rndseed'}=$rndseed;
+ $form{'problem_split'}=$parmhash{'problem_stream_switch'};
if ($urlp=~/\/res\//) {$ENV{'request.state'}='published';}
my $answer=&Apache::lonnet::ssi($urlp,%form);
if ($helper->{'VARS'}->{'ANSWER_TYPE'} eq 'no') {
@@ -989,9 +991,10 @@ ENDPART
} else {
$result.=&unsupported($currentURL,$helper->{'VARS'}->{'LATEX_TYPE'});
}
- } elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') or
+ } elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') or
($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems_pages') or
- ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') 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')) {
#-- produce an output string
if ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'map_problems') {
@@ -1000,6 +1003,8 @@ ENDPART
$selectionmade = 3;
} elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_problems') {
$selectionmade = 4;
+ } elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'all_resources') { #BUGBUG
+ $selectionmade = 4;
} elsif ($helper->{'VARS'}->{'PRINT_TYPE'} eq 'select_sequences') {
$selectionmade = 7;
}
@@ -1014,10 +1019,23 @@ ENDPART
my $flag_latex_header_remove = 'NO';
my $flag_page_in_sequence = 'NO';
my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};
+ my %page_breaks;
+ foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) {
+ $page_breaks{$break} = 1;
+ }
my $prevassignment='';
&Apache::lonnet::delenv('form.counter');
&Apache::lonxml::init_counter();
for (my $i=0;$i<=$#master_seq;$i++) {
+
+ # Note due to document structure, not allowed to put \newpage
+ # prior to the first resource
+
+ if (defined $page_breaks{$master_seq[$i]}) {
+ if($i != 0) {
+ $result.="\\newpage\n";
+ }
+ }
my (undef,undef,$urlp)=&Apache::lonnet::decode_symb($master_seq[$i]);
$urlp=&Apache::lonnet::clutter($urlp);
$form{'symb'}=$master_seq[$i];
@@ -1110,6 +1128,8 @@ ENDPART
$result .= '\end{document}';
} elsif (($helper->{'VARS'}->{'PRINT_TYPE'} eq 'problems_for_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') {
@@ -1135,16 +1155,19 @@ ENDPART
$helper->{'VARS'}->{'NUMBER_TO_PRINT'}=$#students+1;
}
my @master_seq=split /\|\|\|/, $helper->{'VARS'}->{'RESOURCES'};
+
#loop over students
my $flag_latex_header_remove = 'NO';
my %moreenv;
$moreenv{'instructor_comments'}='hide';
$moreenv{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);
$moreenv{'print_discussions'}=$helper->{'VARS'}->{'PRINT_DISCUSSIONS'};
+ $moreenv{'problem_split'} = $parmhash{'problem_stream_switch'};
if ($helper->{'VARS'}->{'PRINT_DISCUSSIONS'} eq 'yes') {$moreenv{'problem_split'}='yes';}
my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,'Print Status','Class Print Status',$#students+1,'inline','75');
my $student_counter=-1;
foreach my $person (@students) {
+
my $duefile="/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.due";
if (-e $duefile) {
my $temp_file = Apache::File->new('>>'.$duefile);
@@ -1152,7 +1175,10 @@ ENDPART
}
$student_counter++;
my $i=int($student_counter/$helper->{'VARS'}{'NUMBER_TO_PRINT'});
- my ($output,$fullname)=&print_resources($r,$helper,$person,$type,\%moreenv,\@master_seq,$flag_latex_header_remove);
+ my ($output,$fullname)=&print_resources($r,$helper,
+ $person,$type,
+ \%moreenv,\@master_seq,
+ $flag_latex_header_remove);
$print_array[$i].=$output;
$student_names[$i].=$person.':'.$fullname.'_END_';
&Apache::lonhtmlcommon::Increment_PrgWin($r,\%prog_state,&mt('last student').' '.$fullname);
@@ -1169,6 +1195,7 @@ ENDPART
my $code_name=$helper->{'VARS'}->{'ANON_CODE_STORAGE_NAME'};
my $old_name=$helper->{'VARS'}->{'REUSE_OLD_CODES'};
my %moreenv = ('textwidth' => &get_textwidth($helper,$LaTeXwidth));
+ $moreenv{'problem_split'} = $parmhash{'problem_stream_switch'};
my $seed=time+($$<<16)+($$);
my @allcodes;
if ($old_name) {
@@ -1227,6 +1254,7 @@ ENDPART
$urlp=~s|//|/|;
if ($urlp=~/\//) {
my %form;
+ $form{'problem_split'}=$parmhash{'problem_stream_switch'};
$form{'grade_target'}='tex';
$form{'textwidth'}=&get_textwidth($helper,$LaTeXwidth);
$form{'rndseed'}=$rndseed;
@@ -1411,11 +1439,22 @@ sub print_resources {
$namepostfix="\\\\Name: ";
$fullname = "CODE - ".$moreenv->{'CODE'};
}
+ my %page_breaks;
+ foreach my $break (split /\|\|\|/,$helper->{'VARS'}->{'FINISHPAGE'}) {
+ $page_breaks{$break} = 1;
+ }
+ my $i = 0;
#goes through all resources, checks if they are available for
#current student, and produces output
&Apache::lonnet::delenv('form.counter');
&Apache::lonxml::init_counter();
foreach my $curresline (@{$master_seq}) {
+ if (defined $page_breaks{$curresline}) {
+ if($i != 0) {
+ $current_output.= "\\newpage\n";
+ }
+ }
+ $i++;
if ( !($type eq 'problems' &&
($curresline!~ m/\.(problem|exam|quiz|assess|survey|form|library)$/)) ) {
my ($map,$id,$res_url) = &Apache::lonnet::decode_symb($curresline);
@@ -1520,13 +1559,15 @@ sub handler {
# return OK;
my %parmhash=&Apache::lonnet::coursedescription($ENV{'request.course.id'});
-
+
# my $key;
# foreach $key (keys %parmhash) {
# $r->print(' '.$key.'->'.$parmhash{$key}.'<-
');
# }
-# return OK;
+#
+
+
&output_data($r,$helper,\%parmhash);
return OK;
}
@@ -1692,6 +1733,7 @@ sub printHelper {
# If we're in a sequence...
if (($helper->{'VARS'}->{'construction'} ne '1') &&
+
$helper->{VARS}->{'postdata'} &&
$helper->{VARS}->{'assignment'}) {
# Allow problems from sequence
@@ -1708,7 +1750,7 @@ sub printHelper {
return $isProblem;
$map
return $symbFilter;
-
+
@@ -1720,7 +1762,7 @@ sub printHelper {
return $isNotMap;
$map
return $symbFilter;
-
+
HELPERFRAGMENT
@@ -1728,11 +1770,13 @@ HELPERFRAGMENT
&Apache::lonxml::xmlparse($r, 'helper', $helperFragment);
}
- # If the user is priviledged, allow them to print all
- # problems in the course, optionally for selected students
+ # If the user is privileged, allow them to print all
+ # problems and resources in the entier course, optionally for selected students
if ($userPriviledged &&
($helper->{VARS}->{'postdata'}=~/\/res\// || $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) {
+
push @{$printChoices}, ['Problems from entire course', 'all_problems', 'ALL_PROBLEMS'];
+ push @{$printChoices}, ['Resources from entire course', 'all_resources', 'ALL_RESOURCES'];
&Apache::lonxml::xmlparse($r, 'helper', <
(mark them then click "next" button)
@@ -1742,7 +1786,18 @@ HELPERFRAGMENT
return $isProblemOrMap;
return $isNotMap;
return $symbFilter;
-
+
+
+
+
+ (Mark them then click "next" button)
+
+ PAGESIZE
+ return $isNotMap;
+ $map
+ return $symbFilter;
+
ALL_PROBLEMS
@@ -1758,7 +1813,7 @@ ALL_PROBLEMS
return $isProblem;
$map
return $symbFilter;
-
+
How should the results be printed?
@@ -1774,6 +1829,7 @@ RESOURCE_SELECTOR
&Apache::lonxml::xmlparse($r, 'helper', <
+ Select sort order
Sort by section then student
Sort by students across sections.
@@ -1821,7 +1877,7 @@ CHOOSE_ANON1
return $isNotMap;
$map
return $symbFilter;
-
+
How should the results be printed?
@@ -1905,7 +1961,7 @@ CHOOSE_FROM_SUBDIR
CHOOSE_FROM_ANY_SEQUENCE
return \$res->is_sequence;
return $urlValue;
-
+
@@ -1916,7 +1972,7 @@ CHOOSE_FROM_SUBDIR
return $isProblem
return '$escapedSequenceName';
return $symbFilter;
-
+
CHOOSE_FROM_ANY_SEQUENCE