--- loncom/lonnet/perl/lonnet.pm 2004/12/04 02:14:19 1.572 +++ loncom/lonnet/perl/lonnet.pm 2004/12/06 18:08:39 1.574 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.572 2004/12/04 02:14:19 banghart Exp $ +# $Id: lonnet.pm,v 1.574 2004/12/06 18:08:39 banghart Exp $ # # Copyright Michigan State University Board of Trustees # @@ -3817,20 +3817,51 @@ sub mark_as_readonly { sub save_selected_files { my ($user, $path, @files) = @_; my $filename = $user."savedfiles"; - open OUT, '>'.$Apache::lonnet::perlvar{'lonDaemons'}.'/tmp/'.$filename; + my @other_files = &files_not_in_path($user, $path); + foreach (@other_files) { + &logthis("other dir file $_"); + } foreach (@files) { - print OUT $ENV{'form.currentpath'}.$_."\n"; + &logthis("current dir file $_"); + } + open (OUT, '>'.$Apache::lonnet::perlvar{'lonDaemons'}.'/tmp/'.$filename); + foreach my $file (@files) { + print (OUT $ENV{'form.currentpath'}.$file."\n"); + } + foreach my $file (@other_files) { + print (OUT $file."\n"); } - close OUT; + close (OUT); return 'ok'; } +sub clear_selected_files { + my ($user) = @_; + my $filename = $user."savedfiles"; + open (OUT, '>'.$Apache::lonnet::perlvar{'lonDaemons'}.'/tmp/'.$filename); + print (OUT undef); + close (OUT); + return ("ok"); +} + sub files_in_path { my ($user, $path) = @_; my $filename = $user."savedfiles"; my %return_files; - open IN, '<'.$Apache::lonnet::perlvar{'lonDaemons'}.'/tmp/'.$filename; - return \%return_files; + open (IN, '<'.$Apache::lonnet::perlvar{'lonDaemons'}.'/tmp/'.$filename); + while (my $line_in = ) { + chomp ($line_in); + my @paths_and_file = split (m!/!, $line_in); + my $file_part = pop (@paths_and_file); + my $path_part = join ('/', @paths_and_file); + $path_part.='/'; + my $path_and_file = $path_part.$file_part; + if ($path_part eq $path) { + $return_files{$file_part}= 'selected'; + } + } + close (IN); + return (\%return_files); } # called in portfolio select mode, to show files selected NOT in current directory @@ -3839,23 +3870,21 @@ sub files_not_in_path { my $filename = $user."savedfiles"; my @return_files; my $path_part; - open IN, '<'.$Apache::lonnet::perlvar{'lonDaemons'}.'/tmp/'.$filename; + open (IN, '<'.$Apache::lonnet::perlvar{'lonDaemons'}.'/tmp/'.$filename); while () { #ok, I know it's clunky, but I want it to work my @paths_and_file = split m!/!, $_; - my $file_part = pop @paths_and_file; - my $path_part = join '/', @paths_and_file; + my $file_part = pop (@paths_and_file); + chomp ($file_part); + my $path_part = join ('/', @paths_and_file); $path_part .= '/'; my $path_and_file = $path_part.$file_part; if ($path_part ne $path) { - push @return_files, ($path_and_file); - &logthis("path part is $path_part file is $file_part"); - } else { - &logthis("path part is $path_part file is $file_part"); + push (@return_files, ($path_and_file)); } } - close OUT; - return @return_files; + close (OUT); + return (@return_files); } #--------------------------------------------------------------Get Marked as Read Only