--- loncom/interface/lonprintout.pm 2003/01/23 20:19:38 1.105 +++ loncom/interface/lonprintout.pm 2003/02/12 20:44:38 1.113 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.105 2003/01/23 20:19:38 sakharuk Exp $ +# $Id: lonprintout.pm,v 1.113 2003/02/12 20:44:38 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -144,6 +144,7 @@ ENDMENUOUT4 +
@@ -158,12 +159,23 @@ sub sequence_content_menu { my @sequence = split('___',$symbolic); if ($sequence[0]=~/^uploaded/) {$primary_sequence = '/'.$sequence[0];} else {$primary_sequence = '/res/'.$sequence[0];} - my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]); + my @master_seq = &coming_from_hash($primary_sequence); + my @titles_master_seq = (); + for (my $i=0;$i<=$#master_seq;$i++) { + my ($path,$title,$symb) = split /&&/,$master_seq[$i]; + $master_seq[$i] = $path.'&&'.$symb; + push @titles_master_seq, $title; + } my @master_seq_view = @master_seq; - @master_seq = @master_seq; - for (my $i=0;$i<=$#master_seq_view;$i++) { - $master_seq_view[$i]=~/\/([^\/]+)$/; - $master_seq_view[$i]=$1; + if ($ENV{'user.adv'}) { + for (my $i=0;$i<=$#master_seq_view;$i++) { + $master_seq_view[$i]=~/___\d+___(.+)$/; + $master_seq_view[$i]='/'.$1; + } + } else { + for (my $i=0;$i<=$#master_seq_view;$i++) { + $master_seq_view[$i]=' '; + } } $r->print(< @@ -176,8 +188,7 @@ sub sequence_content_menu { +DDD=$#titles_master_seq $titles_master_seq[0]
  - +  +

ENDMENUOUT1 my $inc=0; for (my $i=0;$i<=$#master_seq_view;$i++) { - if ($key_to==1 && $master_seq_view[$i]=~/\.(problem|exam|quiz|assess|survey|form|library)$/) { - $r->print('
'."\n". - $master_seq_view[$i]); + if ($key_to==1 && $master_seq[$i]=~/\.(problem|exam|quiz|assess|survey|form|library)$/) { + $r->print('
'."\n".''. + $titles_master_seq[$i].'   '.$master_seq_view[$i].''); $inc++; - } elsif ($key_to==0 && $master_seq_view[$i]=~/\.(problem|exam|quiz|assess|survey|form|library|xml|htm|html|page)$/) { - $r->print('
'. - $master_seq_view[$i]); + } elsif ($key_to==0 && $master_seq[$i]=~/\.(problem|exam|quiz|assess|survey|form|library|xml|htm|html|page)$/) { + $r->print('
'."\n".''. + $titles_master_seq[$i].'   '.$master_seq_view[$i].''); $inc++; } } $r->print(< +

+  +  ENDMENUOUT2 @@ -230,7 +245,8 @@ sub problem_choice_menu { @content_directory = &Apache::lonnet::dirlist($subdirtoprint, $domain, $user,''); } else { - @content_directory = &Apache::lonnet::dirlist($subdirtoprint); + #local library server res space (allows to print only from the own library server) + @content_directory = &Apache::lonnet::dirlist($subdirtoprint,$ENV{'user.domain'}, $ENV{'user.name'},''); } for (my $iy=0;$iy<=$#content_directory;$iy++) { my @tempo_array = split(/&/,$content_directory[$iy]); @@ -269,7 +285,8 @@ sub problem_choice_menu { }   - +  +

ENDMENUOUT1 my $i=0; @@ -279,10 +296,12 @@ ENDMENUOUT1 $i++; } $r->print(< +

+  +  ENDMENUOUT2 } @@ -456,7 +475,7 @@ ENDPART $LaTeXwidth = $1; } if ($choice eq 'Standard LaTeX output for current document') { - #-- single document - problem, page, html, xml + #-- single document - problem, page, html, xml, ... $selectionmade = 1; if ($ENV{'form.url'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)$/) { my %moreenv; @@ -535,7 +554,11 @@ ENDPART } else { $main_seq = '/res/'.$ENV{'request.course.uri'}; } - my @file_seq = &coming_from_hash_whole($main_seq); + my @file_seq = &coming_from_hash($main_seq); + for (my $i=0;$i<=$#file_seq;$i++) { + my ($path,$title,$symb) = split /&&/,$file_seq[$i]; + $file_seq[$i] = $path.'&&'.$symb; + } my $flag_latex_header_remove = 'NO'; #-- produce an output string for (my $i=0;$i<=$#file_seq;$i++) { @@ -572,8 +595,14 @@ ENDPART #where is the primary sequence containing current resource (the same for all students)? my $symbolic = &Apache::lonnet::symbread($ENV{'form.url'}); my @sequence = split('___',$symbolic); - my $primary_sequence = '/res/'.$sequence[0]; - my @master_seq = &coming_from_hash($primary_sequence,$sequence[0]); + my $primary_sequence; + if ($sequence[0]=~/^uploaded/) {$primary_sequence = '/'.$sequence[0];} + else {$primary_sequence = '/res/'.$sequence[0];} + my @master_seq = &coming_from_hash($primary_sequence); + for (my $i=0;$i<=$#master_seq;$i++) { + my ($path,$title,$symb) = split /&&/,$master_seq[$i]; + $master_seq[$i] = $path.'&&'.$symb; + } #loop over students my $flag_latex_header_remove = 'NO'; my %moreenv; @@ -603,7 +632,7 @@ ENDPART } if ($current_output=~/\\documentclass/) { my $courseidinfo = $ENV{'course.'.$ENV{'request.course.id'}.'.description'}; - $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm}\\setlength{\\headheight}{1cm}\\setlength{\\headsep}{0.5cm}\\pagestyle{myheadings}\\markboth{}{{$courseidinfo - $assignment}}\\begin{document}\\noindent\\textit{\\textbf{$fullname}}\\vskip 3 mm /; + $current_output =~ s/\\begin{document}/\\setlength{\\topmargin}{1cm}\\usepackage{fancyhdr}\\pagestyle{fancy}\\rhead{}\\chead{}\\lhead{$courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}} \\begin{document}\\noindent\\textit{\\textbf{$fullname}}\\vskip 3 mm /; } else { my $blanspages = ''; for (my $j=0;$j<$ENV{'form.addedpages'};$j++) {$blanspages.='\clearpage\strut\clearpage';} @@ -633,6 +662,8 @@ ENDPART &Apache::lonnet::appenv(%moreenv); if ($urlp =~ m|/home/([^/]+)/public_html|) { $urlp =~ s|/home/([^/]*)/public_html|/~$1|; + } else { + $urlp =~ s|^/home/httpd/html||; } my $texversion=&Apache::lonnet::ssi($urlp); &Apache::lonnet::delenv('form.grade_target','form.textwidth'); @@ -696,7 +727,7 @@ FINALEND } -sub coming_from_hash_whole { +sub coming_from_hash { my $mainsequence = shift; my @resourcelist = (); @@ -706,12 +737,12 @@ sub coming_from_hash_whole { 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}); + push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource}); } else { my $presymb; if ($mainsequence =~ /\/res\/(.*)$/) {$presymb = $1;} elsif ($mainsequence =~ /\/?(uploaded\/(.*))$/) {$presymb = $1;} - my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}}; + my $rid = $current_resource; if ($rid=~/,/) { my @rid = split /,/, $rid; foreach my $rid_element (@rid) { @@ -726,34 +757,19 @@ sub coming_from_hash_whole { } $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/; my $symb = $presymb.'___'.$rid.'___'.$1; - push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$symb; + push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$hash{'title_'.$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); - if ($symb) { - ($presymb)=split(/___/,$symb); - } else { - $presymb=$mainsequence; - $presymb=~s|^/res/||; - } - $presymb = $presymb.'___'; - my $current_resource = $mapstart; - while ($current_resource ne $mapfinish) { - if (not $hash{'src_'.$current_resource}=~/\.sequence$/) { - my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}}; - if ($rid=~/,/) { + } + #needs if final resource in the map (type="finish") contains something + if ($hash{'src_'.$current_resource}=~/\.sequence$/) { + push @resourcelist,&coming_from_hash($hash{'src_'.$current_resource}); + } else { + my $presymb; + if ($mainsequence =~ /\/res\/(.*)$/) {$presymb = $1;} + elsif ($mainsequence =~ /\/?(uploaded\/(.*))$/) {$presymb = $1;} + my $rid = $current_resource; + if ($rid=~/,/) { my @rid = split /,/, $rid; foreach my $rid_element (@rid) { if ($rid_element =~ m/^$mapid\.(\d*)/) { @@ -762,38 +778,14 @@ sub coming_from_hash { } } } else { - $rid =~ m/^$mapid\.(\d*)/; + $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}); + my $symb = $presymb.'___'.$rid.'___'.$1; + push @resourcelist,$hash{'src_'.$current_resource}.'&&'.$hash{'title_'.$current_resource}.'&&'.$symb; } $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; } @@ -1208,17 +1200,19 @@ sub page_format_transformation { } else { ($textwidth,$textheight,$oddoffset,$evenoffset) = ($ENV{'form.width'},$ENV{'form.height'},$ENV{'form.leftmargin'},$ENV{'form.leftmargin'}); } - my $courseidinfo = $ENV{'course.'.$ENV{'request.course.id'}.'.description'}; - if ($layout eq 'CBI') { - $text =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{$oddoffset}\\setlength{\\evensidemargin}{$evenoffset}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{$textwidth}\\setlength{\\textheight}{$textheight}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt}\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm} \\begin{document}\\setcounter{page}{1}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$ENV{'environment.firstname'} $ENV{'environment.lastname'}}} \\hfill $courseidinfo} \\vskip 5 mm /; - } elsif ($layout eq 'CAPA') { - if ($choice ne 'All class print') { - $text =~ s/\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\setlength{\\topmargin}{1cm}\\setlength{\\headheight}{1cm}\\setlength{\\headsep}{0.5cm}\\markboth{}{\\textbf{$ENV{'environment.firstname'} $ENV{'environment.lastname'}} $courseidinfo - $assignment}\\pagestyle{myheadings}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1}/; - } else { + my $firstname = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($ENV{'environment.firstname'}),'','','header'); + my $lastname = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($ENV{'environment.lastname'}),'','','header'); + my $courseidinfo = &Apache::lonxml::latex_special_symbols(&Apache::lonnet::unescape($ENV{'course.'.$ENV{'request.course.id'}.'.description'}),'','','header'); + if ($layout eq 'CBI') { + $text =~ s/\\begin{document}/\\setlength{\\oddsidemargin}{$oddoffset}\\setlength{\\evensidemargin}{$evenoffset}\\setlength{\\topmargin}{200pt}\\setlength{\\textwidth}{$textwidth}\\setlength{\\textheight}{$textheight}\\setlength{\\parindent}{20pt}\\setlength{\\marginparwidth}{90pt}\\setlength{\\textfloatsep}{8pt plus 2\.0pt minus 4\.0pt}\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm} \\begin{document}\\setcounter{page}{1}\\noindent\\parbox{\\minipagewidth}{\\noindent\\fbox{\\textbf{$firstname $lastname}} \\hfill $courseidinfo} \\vskip 5 mm /; + } elsif ($layout eq 'CAPA') { + if ($choice ne 'All class print') { + $text =~ s/\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\usepackage{fancyhdr}\\pagestyle{fancy}\\rhead{}\\chead{}\\lhead{\\textbf{$firstname $lastname} - $courseidinfo \\hfill \\thepage \\\\ \\textit{$assignment}}\\begin{document}\\voffset=-0\.8 cm\\setcounter{page}{1}/; + } else { $text =~ s/\\begin{document}/\\textheight $textheight\\oddsidemargin = $evenoffset\\evensidemargin = $evenoffset\\textwidth= $textwidth\\newlength{\\minipagewidth}\\setlength{\\minipagewidth}{\\textwidth\/\$number_of_columns-0\.2cm}\\renewcommand{\\ref}{\\keephidden\}\\begin{document}\\voffset=-1\.8cm\\setcounter{page}{1} \\vskip 5 mm /; - } } - return $text; + } + return $text; }