--- loncom/interface/lonprintout.pm 2002/09/12 15:08:43 1.62 +++ loncom/interface/lonprintout.pm 2002/09/24 13:52:24 1.75 @@ -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.75 2002/09/24 13:52:24 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,19 +88,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 pages or 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'}); @@ -315,7 +316,7 @@ sub additional_print_menu { -Define page layout parameters:
+Define one column layout parameters:
Width:
Height:
Left margin:
@@ -341,10 +342,11 @@ ENDPART my $choice = $ENV{'form.choice'}; my $layout = $ENV{'form.layout'}; - my $numberofcolumns = $ENV{'form.numberofcolumns'}; + my $numberofcolumns = $ENV{'form.numberofcolumns'}; + my $papersize = $ENV{'form.papersize'}; my $laystyle = 'book'; my $result = ''; - my $number_of_columns = 1; + my $number_of_columns = 1; #used only for pages to determine the width of the cell my $selectionmade = ''; if ($choice eq 'Standard LaTeX output for current document') { @@ -360,7 +362,6 @@ ENDPART my $texversion=&Apache::lonnet::ssi($ENV{'form.url'}); &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); } @@ -369,103 +370,87 @@ ENDPART #-- minimal sequence to which the current document belongs #-- where is the primary sequence containing file? 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); + my @sequence = split('___',$symbolic); + my $primary_sequence = '/res/'.$sequence[0]; + my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]); #-- produce an output string + my $flag_latex_header_remove = 'NO'; + my $flag_page_in_sequence = 'NO'; 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') { + #prints only problems $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); + &Apache::lonnet::logthis("Trying to get $urlp with symb $symb"); + my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb)); &Apache::lonnet::delenv('form.grade_target'); + if ($flag_latex_header_remove ne 'NO') { + $texversion = &latex_header_footer_remove($texversion); + } else { + $texversion =~ s/\\end{document}//; + } $result .= $texversion; + $flag_latex_header_remove = 'YES'; } } elsif ($urlp =~ /\S+/) { + #prints problems, pages and any html/xml files $selectionmade = 3; 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; + if ($urlp =~ m/\.page/) { + ($texversion,my $number_of_columns_page) = &page_cleanup($texversion); + if ($number_of_columns_page > $number_of_columns) {$number_of_columns=$number_of_columns_page;} + $texversion =~ s/\\end{document}\d*/\\end{document}/; + $flag_page_in_sequence = 'YES'; + } + if ($flag_latex_header_remove ne 'NO') { + $texversion = &latex_header_footer_remove($texversion); + } else { + $texversion =~ s/\\end{document}//; + } + $result .= $texversion; + $flag_latex_header_remove = 'YES'; } - } - $result = &additional_cleanup($result); + } + if ($flag_page_in_sequence eq 'YES') {$result =~ s/\\usepackage{calc}/\\usepackage{calc}\\usepackage{longtable}/;} + $result .= '\end{document}'; } elsif ($choice eq 'Standard LaTeX output for the top level sequence') { # 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_whole($main_seq); + my $flag_latex_header_remove = 'NO'; #-- produce an output string for (my $i=0;$i<=$#file_seq;$i++) { - my $urlp = $file_seq[$i]; + my ($urlp,$symb) = split /&&/, $file_seq[$i]; $urlp=~s/\/home\/httpd\/html//; 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); - &Apache::lonnet::delenv('form.grade_target'); - $result .= $texversion; - } + my $texversion=&Apache::lonnet::ssi($urlp,('symb'=>$symb)); + &Apache::lonnet::delenv('form.grade_target'); + if ($flag_latex_header_remove ne 'NO') { + $texversion = &latex_header_footer_remove($texversion); + } else { + $texversion =~ s/\\end{document}//; + } + $result .= $texversion; + $flag_latex_header_remove = 'YES'; + } } - $result = &additional_cleanup($result); + $result .= '\end{document}'; } elsif ($choice eq 'All class print') { #-- prints assignments for whole class or for selected students $selectionmade = 5; - my (@students,@st_output) = ((),()); + my @students = (); for (my $i=0; $i<$ENV{'form.numberofstudents'};$i++) { if ($ENV{'form.whomtoprint'.$i}=~/:/) { push @students,$ENV{'form.whomtoprint'.$i}; @@ -473,35 +458,41 @@ ENDPART } #where is the primary sequence containing current resource (the same for all students)? 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); - #loop over students + my @sequence = split('___',$symbolic); + my $primary_sequence = '/res/'.$sequence[0]; + my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]); + #loop over students + my $flag_latex_header_remove = 'NO'; foreach my $person (@students) { my $current_output = ''; my ($usersection,$username,$userdomain) = split /:/,$person; my $fullname = &Apache::grades::get_fullname($username,$userdomain); - #goes through all resources, checks if they are available for current student, and produces output - foreach my $curres (@master_seq) { - $curres =~ s/^"//; - $curres =~ s/"$//; - if ($curres=~/\w+/) { - my $symb = &Apache::lonnet::symbread($curres); + #goes through all resources, checks if they are available for current student, and produces output + foreach my $curresline (@master_seq) { + my ($curres,$symb) = split /&&/, $curresline; + if ($curres=~ m/\.(problem|exam|quiz|assess|survey|form|library)/) { my ($map,$id,$res_url) = split(/___/,$symb); if (&Apache::lonnet::allowed('bre',$res_url)) { my $rendered = &Apache::loncommon::get_student_view($symb,$username,$userdomain, $ENV{'request.course.id'},'tex'); + if ($flag_latex_header_remove eq 'YES') { + $rendered = &latex_header_footer_remove($rendered); + } else { + $rendered =~ s/\\end{document}//; + } $current_output .= $rendered; } + $flag_latex_header_remove = 'YES'; } } - $current_output =~ s/\\begin{document}/\\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$fullname}}\\hskip 1\.4in } \\vskip 5 mm /; + if ($current_output=~/\\documentclass/) { + $current_output =~ s/\\begin{document}/\\begin{document}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$fullname}}\\hskip 1\.4in } \\vskip 5 mm /; + } else { + $current_output = '\\vskip 3mm\noindent\parbox{\minipagewidth}{\noindent\fbox{\textbf{'.$fullname.'}}\hskip 1.4in } \vskip 5 mm '.$current_output; + } $result .= $current_output; } - $result = &additional_cleanup($result); + $result .= '\end{document}'; } elsif ($choice eq 'Subdirectory print') { #prints selected problems from the subdirectory $selectionmade = 6; @@ -510,7 +501,8 @@ ENDPART if ($ENV{'form.whattoprint'.$i}=~/^\//) { push @list_of_files,$ENV{'form.whattoprint'.$i}; } - } + } + my $flag_latex_header_remove = 'NO'; for (my $i=0;$i<=$#list_of_files;$i++) { my $urlp = $list_of_files[$i]; if ($urlp=~/\//) { @@ -523,12 +515,89 @@ ENDPART my $texversion=&Apache::lonnet::ssi($urlp); &Apache::lonnet::delenv('form.grade_target'); $texversion =~ s/(\\begin{document})/$1 {\\tiny\\begin{verbatim}$urlp\\end{verbatim}}/; + if ($flag_latex_header_remove ne 'NO') { + $texversion = &latex_header_footer_remove($texversion); + } else { + $texversion =~ s/\\end{document}//; + } $result .= $texversion; - } + } + $flag_latex_header_remove = 'YES'; + } + $result .= '\end{document}'; + } +#-------------------------------------------------------- corrections for the different page formats + my ($textwidth,$textheight,$oddoffset,$evenoffset) = (0,0,0,0); + if ($papersize=~/Letter/) { + if ($layout eq 'CAPA') { + if ($numberofcolumns == 1) { + $textwidth = '18 cm'; + $textheight = '25.9 cm'; + $oddoffset = '-0.57 in'; + $evenoffset = '-0.57 in'; + } elsif ($numberofcolumns == 2) { + $textwidth = '9 cm'; + $textheight = '25.9 cm'; + $oddoffset = '-0.57 in'; + $evenoffset = '-0.57 in'; + } + } elsif ($layout eq 'CBI') { + if ($numberofcolumns == 1) { + $textwidth = '8.8 in'; + $textheight = '6.8 in'; + $oddoffset = '-40 pt'; + $evenoffset = '-60 pt'; + } elsif ($numberofcolumns == 2) { + $textwidth = '4.4 in'; + $textheight = '6.8 in'; + $oddoffset = '-40 pt'; + $evenoffset = '-60 pt'; + } } - $result = &additional_cleanup($result); +# } elsif($papersize=~/Legal/) { +# $textwidth = ; +# $textheight = ; +# $offset = ; +# } elsif($papersize=~/Ledger/) { +# $textwidth = ; +# $textheight = ; +# $offset = ; +# } elsif($papersize=~/Executive/) { +# $textwidth = ; +# $textheight = ; +# $offset = ; +# } elsif($papersize=~/A4/) { +# $textwidth = ; +# $textheight = ; +# $offset = ; +# } elsif($papersize=~/A3/) { +# $textwidth = ; +# $textheight = ; +# $offset = ; +# } elsif($papersize=~/A2/) { +# $textwidth = ; +# $textheight = ; +# $offset = ; +# } elsif($papersize=~/A5/) { +# $textwidth = ; +# $textheight = ; +# $offset = ; +# } elsif($papersize=~/A6/) { +# $textwidth = ; +# $textheight = ; +# $offset = ; +# +# +# +# +# +# +# +# +# +# } -#-- corrections for the different page formats + if ($layout eq 'CBI' and $numberofcolumns eq '1') { $result =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{-40pt}\\setlength{\\evensidemargin}{-60pt}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{4\.4in}\\setlength{\\textheight}{6\.8in}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt} \\begin{document}/; $result =~ s/\$number_of_columns/$number_of_columns/g; @@ -577,7 +646,6 @@ ENDPART $result =~ s/\\\\\s*\\noindent\s*(\\\\)+/\\\\\\noindent /g; $result =~ s/{\\par }\s*\\\\/\\\\/gm; $result =~ s/\\\\\s+\[/ \[/g; - $result =~ s/θ/\$\\theta\$/g; #converts theta from html into tex $result =~ s/\b__+\b/\\makebox\[1 cm\]\[b\]{\\hrulefill}/g; #conversion of html characters to LaTeX equivalents if ($result =~ m/&(\w+|#\d+);/) { @@ -601,25 +669,109 @@ FINALEND } -sub coming_from_hash { +sub coming_from_hash_whole { 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 ($hash{'src_'.$current_resource}=~/\.sequence$/) { + push @resourcelist,&coming_from_hash_whole($hash{'src_'.$current_resource}); + } else { + $mainsequence =~ /\/res\/(.*)$/; + my $presymb = $1; + 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\/(.*)$/; + my $symb = $presymb.'___'.$rid.'___'.$1; + push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$symb; + } + $current_resource = $hash{'goesto_'.$hash{'to_'.$current_resource}}; + } + return @resourcelist; +} + + +sub coming_from_hash { + + my ($mainsequence,$symb) = @_; + my @resourcelist = (); + my $mapid = $hash{'map_pc_'.$mainsequence}; my $mapstart = $hash{'map_start_'.$mainsequence}; my $mapfinish = $hash{'map_finish_'.$mainsequence}; + my ($presymb) = split(/___/,$symb); + $presymb = $presymb.'___'; 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 latex_header_footer_remove { + my $text = shift; + $text =~ s/\\end{document}//; + $text =~ s/\\documentclass([^&]*)\\begin{document}//; + return $text; +} + + sub character_chart { my $result = shift; $result =~ s/�?0?7;//g; @@ -940,107 +1092,45 @@ sub character_chart { # $result =~ s/þ//g; # $result =~ s/þ//g; $result =~ s/ÿ/\\"{y}/g; - $result =~ s/ÿ/\\"{y}/g; + $result =~ s/ÿ/\\"{y}/g; + $result =~ s/θ/\$\\theta\$/g; #converts theta from html into tex return $result; } #'"` -sub additional_cleanup { - my $result = shift; - my $first_app = index($result,'\documentclass',0); - $first_app = index($result,'\documentclass',$first_app+5); - while ($first_app != -1) { - my $second_app = index($result,'begin{document}',$first_app); - $first_app = rindex($result,'\end{document}',$first_app); - substr($result,$first_app,$second_app-$first_app+15) = '\vskip 3 mm'; - $first_app = index($result,'\documentclass',$first_app+5); - } - 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; } -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); } @@ -1048,6 +1138,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")); @@ -1094,12 +1192,3 @@ sub handler { 1; __END__ - - - -#### Test block -# my $ere; -# foreach $ere (%ENV) { -# $result .= ' SS '.$ere.' => '.$ENV{$ere}.' FF '."\n\n"; -# } -####