--- loncom/interface/lonprintout.pm 2002/09/12 15:08:43 1.62 +++ loncom/interface/lonprintout.pm 2002/09/16 14:20:33 1.65 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.62 2002/09/12 15:08:43 sakharuk Exp $ +# $Id: lonprintout.pm,v 1.65 2002/09/16 14:20:33 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -87,19 +87,19 @@ sub menu_for_output { Current document $title_for_single_resource -(you will print what you saw on the screen)
+(prints what you just saw on the screen)
ENDMENUOUT1 if ((not $ENV{'request.role'}=~m/^au\./) and (not $ENV{'request.role'}=~m/^ca\./)) { $r->print(< All problems from the sequence $title_for_sequence
- All problems plus any html/xml files from the sequence $title_for_sequence
+ All problems from $title_for_sequence
+ All problems plus any html/xml files from $title_for_sequence
ENDMENUOUT2 } if ($ENV{'request.role'}=~m/^cc\./ or $ENV{'request.role'}=~m/^in\./ or $ENV{'request.role'}=~m/^ta\./) { $r->print(< All problems in this course (warning: this may be time consuming)

- All problems from the sequence $title_for_sequence for selected students

+ All problems from $title_for_sequence for selected students

ENDMENUOUT6 } my $subdirtoprint = &Apache::lonnet::filelocation("",$ENV{'form.url'}); @@ -358,11 +358,13 @@ ENDPART $moreenv{'request.filename'}=$ENV{'form.url'}; &Apache::lonnet::appenv(%moreenv); my $texversion=&Apache::lonnet::ssi($ENV{'form.url'}); + &Apache::lonnet::logthis(" Got $result"); &Apache::lonnet::delenv('form.grade_target'); $result .= $texversion; - $result = &additional_cleanup($result); if ($ENV{'form.url'}=~m/\.page\s*$/) { ($result,$number_of_columns) = &page_cleanup($result); + } else { + $result = &additional_cleanup($result); } } elsif ($choice eq 'Standard LaTeX output for the primary sequence' or $choice eq 'Standard LaTeX output for whole primary sequence') { @@ -371,9 +373,6 @@ ENDPART my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'}); $symbolic =~ m/([^_]+)_/; my $primary_sequence = '/res/'.$1; - #-- open and analyses the primary sequence - my $sequence_file=&Apache::lonnet::filelocation("",$primary_sequence); - my $sequencefilecontents=&Apache::lonnet::getfile($sequence_file); my @master_seq = &coming_from_hash($primary_sequence); #-- produce an output string for (my $i=0;$i<=$#master_seq;$i++) { @@ -403,51 +402,7 @@ ENDPART # where is the main sequence of the course? $selectionmade = 4; my $main_seq = '/res/'.$ENV{'request.course.uri'}; - my $file=&Apache::lonnet::filelocation("",$main_seq); - my $filecontents=&Apache::lonnet::getfile($file); - my @file_seq = &content_map($filecontents); - for (my $iu=0;$iu<=$#file_seq;$iu++) { - $file_seq[$iu]=~s/^"//; - $file_seq[$iu]=~s/"$//; - if ($file_seq[$iu]=~m/\S+/) { - $file_seq[$iu]=&Apache::lonnet::filelocation("",$file_seq[$iu]); - } else { - $file_seq[$iu]= 'REMOVE IT PLEASE'; - } - } - my $i=0; - my $limit = $#file_seq; - while ($i<=$limit) { - unless ($file_seq[$i]=~m/\.(problem|page)/) { - if ($file_seq[$i]=~m/\.sequence/) { - my $filecontents=&Apache::lonnet::getfile($file_seq[$i]); - my @newfile_seq = &content_map($filecontents); - for (my $iu=0;$iu<=$#newfile_seq;$iu++) { - $newfile_seq[$iu]=~s/^"//; - $newfile_seq[$iu]=~s/"$//; - if ($newfile_seq[$iu]=~m/\S+/) { - $newfile_seq[$iu]=&Apache::lonnet::filelocation("",$newfile_seq[$iu]); - } else { - $newfile_seq[$iu]= 'REMOVE IT PLEASE'; - } - } - splice @file_seq,$i,1,@newfile_seq; - $i=0; - $limit = $#file_seq; - } else { - splice @file_seq,$i,1,'REMOVE IT PLEASE'; - } - } - $i++; - } - for (my $iu=0;$iu<=$#file_seq;$iu++) { - if ($file_seq[$iu]=~m/REMOVE IT PLEASE/) { - splice @file_seq,$iu,1; - } - } - if ($file_seq[-1]=~m/REMOVE IT PLEASE/) { - pop @file_seq; - } + my @file_seq = &coming_from_hash($main_seq); #-- produce an output string for (my $i=0;$i<=$#file_seq;$i++) { my $urlp = $file_seq[$i]; @@ -475,10 +430,7 @@ ENDPART my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'}); $symbolic =~ m/([^_]+)_/; my $primary_sequence = '/res/'.$1; - #opens and analyses the primary sequence file, produces the array of resources - my $sequence_file=&Apache::lonnet::filelocation("",$primary_sequence); - my $sequencefilecontents=&Apache::lonnet::getfile($sequence_file); - my @master_seq = &content_map($sequencefilecontents); + my @master_seq = &coming_from_hash($primary_sequence); #loop over students foreach my $person (@students) { my $current_output = ''; @@ -616,6 +568,12 @@ sub coming_from_hash { } $current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}}; } + #needs if final resource in the map (type=finish) contains something + if (not $hash{'src_'.$current_resource}=~/\.sequence$/) { + push @resourcelist,$hash{'src_'.$current_resource}; + } else { + push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource}); + } return @resourcelist; } @@ -961,86 +919,34 @@ sub additional_cleanup { } sub page_cleanup { my $result = shift; - $_ = $result; - m/\\end{document}(\d*)$/; + + $result =~ m/\\end{document}(\d*)$/; my $number_of_columns = $1; my $insert = '{'; for (my $id=1;$id<=$number_of_columns;$id++) { $insert .='l'; } $insert .= '}'; - $result =~ s/(\\begin{longtable})INSERTTHEHEADOFLONGTABLE/$1$insert/g; + $result =~ s/(\\begin{longtable})INSERTTHEHEADOFLONGTABLE\\endfirsthead\\endhead/$1$insert/g; $result =~ s/&\s*REMOVETHEHEADOFLONGTABLE\\\\/\\\\/g; - $result =~ s/(\\vskip\s*\d+\s*mm)/}\\\\\\parbox{\\minipagewidth}{/g; - $result =~ s/\\parbox{\\minipagewidth}{}\s*\\\\\s*(\\parbox{\\minipagewidth})/$1/g; - $result =~ s/\\parbox{\\minipagewidth}{\s*\\\\\\\\/\\parbox{\\minipagewidth}{/g; return $result,$number_of_columns; } -sub content_map { -#-- find a list of files to print - my $map_string = shift; - my @number_seq = (); - my @file_seq = (); - my $startlink = index($map_string,'',$startlink); - my $chunk = substr($map_string,$startlink,$endlink-$startlink+7); - $_ = $chunk; - m/from=\"(\d+)\"/; - push @number_seq,$1; - while ($startlink != -1) { - $endlink = index($map_string,'',$startlink); - $chunk = substr($map_string,$startlink,$endlink-$startlink+7); - substr($map_string,$startlink,$endlink-$startlink+7) = ''; - $_ = $chunk; - m/to=\"(\d+)\"/; - push @number_seq,$1; - $startlink = index($map_string,'from="'.$1.'"',0); - $startlink = rindex($map_string,'',$startlink); - $chunk = substr($map_string,$startlink,$endlink-$startlink+7); - substr($map_string,$startlink,$endlink-$startlink+7) = ''; - $_ = $chunk; - m/from=\"(\d+)\"/; - unshift @number_seq,$1; - $stalink = index($map_string,' to="'.$number_seq[0].'"',0); - } - for (my $i=0;$i<=$#number_seq;$i++) { - $stalink = index($map_string,' id="'.$number_seq[$i].'"',0); - { - my $ahed1 = index($map_string,'src="',$stalink); - my $ahed2 = index($map_string,'',$stalink); - if ($ahed1 != -1) { - if ($ahed1 < $ahed2) { - $startlink = $ahed1; - } else { - $startlink = rindex($map_string,'src="',$stalink); - } - } else { - $startlink = rindex($map_string,'src="',$stalink); - } - - } - $startlink = index($map_string,'"',$startlink); - $endlink = index($map_string,'"',$startlink+1); - $chunk = substr($map_string,$startlink,$endlink-$startlink+1); - push @file_seq,$chunk; - } - return @file_seq; -} - sub details_for_menu { my $name_of_resourse = $hash{'title_'.$hash{'ids_'.$ENV{'form.postdata'}}}; my $symbolic = &Apache::lonnet::symbread($ENV{'form.postdata'}); - $symbolic =~ m/([^_]+)_/; - my $name_of_sequence = $hash{'title_'.$hash{'ids_/res/'.$1}}; + my ($map,$id,$resource)=split(/___/,$symbolic); + my $name_of_sequence = $hash{'title_'.$hash{'ids_/res/'.$map}}; + if ($name_of_sequence =~ /^\s*$/) { + $map =~ m|([^/]+)$|; + $name_of_sequence = $1; + } my $name_of_map = $hash{'title_'.$hash{'ids_/res/'.$ENV{'request.course.uri'}}}; - - return $name_of_resourse,$name_of_sequence,$name_of_map; + if ($name_of_map =~ /^\s*$/) { + $ENV{'request.course.uri'} =~ m|([^/]+)$|; + $name_of_map = $1; + } + return ($name_of_resourse,$name_of_sequence,$name_of_map); }