--- loncom/interface/lonprintout.pm 2002/09/12 18:28:45 1.64 +++ 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.64 2002/09/12 18:28:45 sakharuk 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; @@ -87,7 +88,7 @@ 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(<$symb)); &Apache::lonnet::delenv('form.grade_target'); $result .= $texversion; } @@ -555,19 +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 + if (not $hash{'src_'.$current_resource}=~/\.sequence$/) { + 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 { @@ -909,19 +975,18 @@ sub additional_cleanup { } return $result; } + + 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; } @@ -949,6 +1014,14 @@ sub details_for_menu { sub handler { my $r = shift; + + my $loaderror=&Apache::lonnet::overloaderror($r); + if ($loaderror) { return $loaderror; } + $loaderror= + &Apache::lonnet::overloaderror($r, + $ENV{'course.'.$ENV{'request.course.id'}.'.home'}); + if ($loaderror) { return $loaderror; } + $r->content_type('text/html'); $r->send_http_header; $r->print(&Apache::loncommon::bodytag("Printing"));