--- loncom/interface/lonprintout.pm 2002/09/16 20:38:46 1.67 +++ loncom/interface/lonprintout.pm 2002/09/18 18:47:04 1.68 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.67 2002/09/16 20:38:46 www Exp $ +# $Id: lonprintout.pm,v 1.68 2002/09/18 18:47:04 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -48,6 +48,7 @@ use Apache::inputtags; use Apache::grades; use Apache::edit; use Apache::File(); +use Apache::lonnavmaps; use POSIX qw(strftime); use GDBM_File; @@ -371,18 +372,18 @@ ENDPART #-- where is the primary sequence containing file? my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'}); $symbolic =~ m/([^_]+)_/; - my $primary_sequence = '/res/'.$1; - my @master_seq = &coming_from_hash($primary_sequence); + my $primary_sequence = '/res/'.$1; + my @master_seq = &coming_from_hash($primary_sequence); #-- produce an output string for (my $i=0;$i<=$#master_seq;$i++) { - my $urlp = $master_seq[$i]; + my ($urlp,$symb) = split /&&/, $master_seq[$i]; if ($choice eq 'Standard LaTeX output for the primary sequence') { $selectionmade = 2; if ($urlp =~ m/\.(problem|exam|quiz|assess|survey|form|library)/) { my %moreenv; $moreenv{'form.grade_target'}='tex'; &Apache::lonnet::appenv(%moreenv); - my $texversion=&Apache::lonnet::ssi($urlp); + my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb)); &Apache::lonnet::delenv('form.grade_target'); $result .= $texversion; } @@ -556,25 +557,83 @@ sub coming_from_hash { my $mainsequence = shift; my @resourcelist = (); + my $mapid = $hash{'map_pc_'.$mainsequence}; my $mapstart = $hash{'map_start_'.$mainsequence}; my $mapfinish = $hash{'map_finish_'.$mainsequence}; + my $symb = &Apache::lonnet::symbread($hash{'src_'.$mapstart}); + $symb = m/^([^___]*)___/; + my $presymb = $1.'___'; my $current_resource = $mapstart; while ($current_resource ne $mapfinish) { if (not $hash{'src_'.$current_resource}=~/\.sequence$/) { - push @resourcelist,$hash{'src_'.$current_resource}; + my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}}; + if ($rid=~/,/) { + my @rid = split /,/, $rid; + foreach my $rid_element (@rid) { + if ($rid_element =~ m/^$mapid\.(\d*)/) { + $rid = $1; + last; + } + } + } else { + $rid =~ m/^$mapid\.(\d*)/; + $rid = $1; + } + $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/; + $symb = $presymb.$rid.'___'.$1; + push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$symb; } else { push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource}); } $current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}}; } - #needs if final resource in the map (type=finish) contains something + #needs if final resource in the map (type="finish") contains something if (not $hash{'src_'.$current_resource}=~/\.sequence$/) { - push @resourcelist,$hash{'src_'.$current_resource}; + my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}}; + if ($rid=~/,/) { + my @rid = split /,/, $rid; + foreach my $rid_element (@rid) { + if ($rid_element =~ m/^$mapid\.(\d*)/) { + $rid = $1; + last; + } + } + } else { + $rid =~ m/^$mapid\.(\d*)/; + $rid = $1; + } + $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/; + $symb = $presymb.$rid.'___'.$1; + push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$symb; } else { push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource}); } return @resourcelist; } +#sub coming_from_hash { +# +# my $mainsequence = shift; +# my @resourcelist = (); +# my $mapid = $hash{'map_pc_'.$mainsequence}; +# my $mapstart = $hash{'map_start_'.$mainsequence}; +# my $mapfinish = $hash{'map_finish_'.$mainsequence}; +# my $current_resource = $mapstart; +# while ($current_resource ne $mapfinish) { +# if (not $hash{'src_'.$current_resource}=~/\.sequence$/) { +# push @resourcelist,$hash{'src_'.$current_resource}; +# } else { +# push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource}); +# } +# $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; +#} sub character_chart { @@ -916,6 +975,8 @@ sub additional_cleanup { } return $result; } + + sub page_cleanup { my $result = shift;