--- loncom/interface/lonprintout.pm 2003/01/23 20:19:38 1.105 +++ loncom/interface/lonprintout.pm 2003/01/29 15:57:44 1.108 @@ -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.108 2003/01/29 15:57:44 sakharuk Exp $ # # Copyright Michigan State University Board of Trustees # @@ -159,11 +159,18 @@ sub sequence_content_menu { 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 @titles_master_seq = &titles_coming_from_hash($primary_sequence,$sequence[0]); + foreach my $entity (@titles_master_seq) {$entity=~/^(.*)&&/; $entity=$1} 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(< @@ -192,25 +199,28 @@ sub sequence_content_menu { }   - +  +

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 @@ -269,7 +279,8 @@ sub problem_choice_menu { }   - +  +

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

+  +  ENDMENUOUT2 } @@ -798,6 +811,69 @@ sub coming_from_hash { } +sub titles_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=~/,/) { + 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{'title_'.$current_resource}.'&&'.$symb; + } else { + push @resourcelist,&titles_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{'title_'.$current_resource}.'&&'.$symb; + } else { + push @resourcelist,&titles_coming_from_hash($hash{'src_'.$current_resource}); + } + return @resourcelist; +} + sub latex_header_footer_remove { my $text = shift; $text =~ s/\\end{document}//; @@ -1208,17 +1284,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 = &special_character_corrections(&Apache::lonnet::unescape($ENV{'environment.firstname'})); + my $lastname = &special_character_corrections(&Apache::lonnet::unescape($ENV{'environment.lastname'})); + my $courseidinfo = &special_character_corrections(&Apache::lonnet::unescape($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{$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\}\\setlength{\\topmargin}{1cm}\\setlength{\\headheight}{1cm}\\setlength{\\headsep}{0.5cm}\\markboth{}{\\textbf{$firstname $lastname} $courseidinfo - $assignment}\\pagestyle{myheadings}\\begin{document}\\voffset=-1\.8cm\\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; } @@ -1261,6 +1339,15 @@ sub details_for_menu { } +sub special_character_corrections { + my $argument = shift; + $argument =~ s/_/ /g; + $argument =~ s/\^/ /g; + $argument =~ s/&/\\&/g; + return $argument; +} + + sub latex_corrections { my ($number_of_columns,$result) = @_;