--- loncom/interface/lonprintout.pm 2003/01/13 21:20:51 1.104 +++ loncom/interface/lonprintout.pm 2003/01/28 20:36:17 1.107 @@ -1,7 +1,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.104 2003/01/13 21:20:51 sakharuk Exp $ +# $Id: lonprintout.pm,v 1.107 2003/01/28 20:36:17 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 @master_seq_view = sort @master_seq; - @master_seq = sort @master_seq; - for (my $i=0;$i<=$#master_seq_view;$i++) { - $master_seq_view[$i]=~/\/([^\/]+)$/; - $master_seq_view[$i]=$1; + 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; + 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 } @@ -496,7 +509,7 @@ ENDPART my $flag_latex_header_remove = 'NO'; my $flag_page_in_sequence = 'NO'; for (my $i=0;$i<=$#master_seq;$i++) { - my ($urlp,$symb) = split /&&/, $master_seq[$i]; + my ($urlp,$symb) = split /&&/, $master_seq[$i]; if ($choice eq 'Standard LaTeX output for the primary sequence') { $selectionmade = 2; } elsif ($choice eq 'Standard LaTeX output for whole primary sequence') { @@ -529,14 +542,20 @@ ENDPART } 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 $main_seq; + if ($ENV{'request.course.uri'}=~/\/?uploaded\//) { + $main_seq = $ENV{'request.course.uri'}; + } else { + $main_seq = '/res/'.$ENV{'request.course.uri'}; + } 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,$symb) = split /&&/, $file_seq[$i]; - $urlp=~s/\/home\/httpd\/html//; - if ($urlp=~m/\.(problem|exam|quiz|assess|survey|form|library)/) { + if (not $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'; $moreenv{'form.textwidth'}=$LaTeXwidth; @@ -550,7 +569,8 @@ ENDPART } $result .= $texversion; $flag_latex_header_remove = 'YES'; - } + } + } } $result .= '\end{document}'; } elsif ($choice eq 'All class print') { @@ -701,10 +721,11 @@ sub coming_from_hash_whole { if ($hash{'src_'.$current_resource}=~/\.sequence$/) { push @resourcelist,&coming_from_hash_whole($hash{'src_'.$current_resource}); } else { - $mainsequence =~ /\/res\/(.*)$/; - my $presymb = $1; + my $presymb; + if ($mainsequence =~ /\/res\/(.*)$/) {$presymb = $1;} + elsif ($mainsequence =~ /\/?(uploaded\/(.*))$/) {$presymb = $1;} my $rid = $hash{'ids_'.$hash{'src_'.$current_resource}}; - if ($rid=~/,/) { + if ($rid=~/,/) { my @rid = split /,/, $rid; foreach my $rid_element (@rid) { if ($rid_element =~ m/^$mapid\.(\d*)/) { @@ -713,7 +734,7 @@ sub coming_from_hash_whole { } } } else { - $rid =~ m/^$mapid\.(\d*)/; + $rid =~ m/^$mapid\.(\d*)/; $rid = $1; } $hash{'src_'.$current_resource} =~ m/\/res\/(.*)$/; @@ -790,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}//;