--- loncom/interface/lonprintout.pm 2006/08/14 10:52:04 1.478 +++ loncom/interface/lonprintout.pm 2006/08/21 22:53:19 1.480 @@ -2,7 +2,7 @@ # The LearningOnline Network # Printout # -# $Id: lonprintout.pm,v 1.478 2006/08/14 10:52:04 foxr Exp $ +# $Id: lonprintout.pm,v 1.480 2006/08/21 22:53:19 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1051,16 +1051,20 @@ sub recently_generated { # my $helpervars = Dumper($helper->{'VARS'}); # &Apache::lonnet::logthis("Dump of helper vars:\n $helpervars"); #} +#sub dump_env { +# my $envvars = Dumper(\%env); +# &Apache::lonnet::logthis("Dump of env: \n $envvars"); +#} -sub get_page_breaks { - my ($helper) = @_; - my %page_breaks; - - foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) { - $page_breaks{$break} = 1; - } - return %page_breaks; -} +#sub get_page_breaks { +# my ($helper) = @_; +# my %page_breaks; +# +# foreach my $break (split /\|\|\|/, $helper->{'VARS'}->{'FINISHPAGE'}) { +# $page_breaks{$break} = 1; +# } +# return %page_breaks; +#} # Output a sequence (recursively if neeed) # from construction space. @@ -2154,7 +2158,6 @@ sub printHelper { } } - # This will persistently load in the data we want from the # very first screen. @@ -2193,15 +2196,20 @@ sub printHelper { # Get the resource name from construction space + if ($helper->{VARS}->{'construction'}) { $resourceTitle = substr($helper->{VARS}->{'filename'}, rindex($helper->{VARS}->{'filename'}, '/')+1); $subdir = substr($helper->{VARS}->{'filename'}, 0, rindex($helper->{VARS}->{'filename'}, '/') + 1); - } elsif ($env{'form.postdata'} =~ /^\/res\//) { # Get resource name from res space. - $helper->{VARS}->{'postdata'} = $env{'form.postdata'}; - - } elsif (!$helper->{VARS}->{'postdata'}) { + } elsif ($env{'form.postdata'} =~ /^\/res\// ) { + $subdir = substr($env{'form.postdata'}, + 0, rindex($env{'form.postdata'}, '/') + 1); + } elsif ((defined $helper->{VARS}->{'postdata'}) && + ($helper->{VARS}->{'postdata'} =~ /^\/res\//)){ + $subdir = substr($helper->{VARS}->{'postdata'}, + 0, rindex($helper->{VARS}->{'postdata'}, '/') + 1); + } else { # (!$helper->{VARS}->{'postdata'}) { ($map, $id, $url) = &Apache::lonnet::decode_symb($symb); $helper->{VARS}->{'postdata'} = &Apache::lonenc::check_encrypt(&Apache::lonnet::clutter($url)); @@ -2220,7 +2228,7 @@ sub printHelper { my $userCanSeeHidden = Apache::lonnavmaps::advancedUser(); - Apache::lonhelper::registerHelperTags(); + &Apache::lonhelper::registerHelperTags(); # "Delete everything after the last slash." $subdir =~ s|/[^/]+$||; @@ -2272,6 +2280,7 @@ sub printHelper { if (($helper->{'VARS'}->{'construction'} ne '1') && $helper->{VARS}->{'postdata'} && + ($helper->{VARS}->{'postdata'} !~ /^\/res\//) && $helper->{VARS}->{'assignment'}) { # Allow problems from sequence push @{$printChoices}, [&mt('Selected Problems in folder [_1]',$sequenceTitle), 'map_problems', 'CHOOSE_PROBLEMS']; @@ -2308,8 +2317,8 @@ HELPERFRAGMENT # If the user has pfo (print for otheres) allow them to print all # problems and resources in the entier course, optionally for selected students if ($perm{'pfo'} && - ($helper->{VARS}->{'postdata'}=~/\/res\// || $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|aboutme|bulletinboard)$/)) { - + $helper->{VARS}->{'postdata'} !~/^\/res\// && + $helper->{VARS}->{'postdata'}=~/\/(syllabus|smppg|aboutme|bulletinboard)$/) { push @{$printChoices}, ['Selected Problems from entire course', 'all_problems', 'ALL_PROBLEMS']; push @{$printChoices}, ['Selected Resources from entire course', 'all_resources', 'ALL_RESOURCES']; &Apache::lonxml::xmlparse($r, 'helper', < $resource_selector CHOOSE_ANON2 - } - +} # FIXME: That RE should come from a library somewhere. - if ((((&Apache::lonnet::allowed('bre',$subdir) eq 'F') and ($helper->{VARS}->{'postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) or defined $helper->{'VARS'}->{'construction'}) and $perm{'pav'} and $subdir ne $Apache::lonnet::perlvar{'lonDocRoot'}.'/res/') { + if ((((&Apache::lonnet::allowed('bre',$subdir) eq 'F') and + ($helper->{VARS}->{'postdata'}=~/\.(problem|exam|quiz|assess|survey|form|library|page|xml|html|htm|xhtml|xhtm)/)) or + defined $helper->{'VARS'}->{'construction'}) and $perm{'pav'} and $subdir ne $Apache::lonnet::perlvar{'lonDocRoot'}.'/res/') { push @{$printChoices}, [&mt("Selected Problems from current subdirectory [_1]",$subdir), 'problems_from_directory', 'CHOOSE_FROM_SUBDIR']; my $f = '$filename'; @@ -2646,7 +2656,7 @@ CHOOSE_FROM_SUBDIR # Allow the user to select any sequence in the course, feed it to # another resource selector for that sequence - if (!$helper->{VARS}->{'construction'}) { + if (!$helper->{VARS}->{'construction'} && ($helper->{VARS}->{'postdata'} !~ /^\/res\//)) { push @$printChoices, ["Selected Resources from selected folder in course", 'select_sequences', 'CHOOSE_SEQUENCE']; my $escapedSequenceName = $helper->{VARS}->{'SEQUENCE'}; @@ -2677,7 +2687,6 @@ CHOOSE_FROM_SUBDIR CHOOSE_FROM_ANY_SEQUENCE } - # Generate the first state, to select which resources get printed. Apache::lonhelper::state->new("START", "Select Printing Options:"); $paramHash = Apache::lonhelper::getParamHash();