--- loncom/interface/portfolio.pm 2004/08/24 06:51:11 1.26 +++ loncom/interface/portfolio.pm 2004/08/24 07:26:04 1.27 @@ -269,7 +269,10 @@ sub close_form { } sub display_file { - return $ENV{'form.currentpath'}.$ENV{'form.selectfile'}; + my ($path,$filename)=@_; + if (!defined($path)) { $path=$ENV{'form.currentpath'}; } + if (!defined($filename)) { $filename=$ENV{'form.selectfile'}; } + return ''.$path.$filename.''; } sub done { @@ -300,14 +303,32 @@ sub delete_confirmed { sub rename { my ($r)=@_; &open_form($r); - $r->print('

'.&mt('Rename').' '.&display_file().'?

'); + $r->print('

'.&mt('Rename').' '.&display_file().' to + ?

'); &close_form($r); } sub rename_confirmed { my ($r)=@_; - &Apache::lonnet::renameuserfile($ENV{'form.currentpath'}.$ENV{'form.selectfile'}, 'rename', $ENV{'form.currentpath'}.$ENV{'form.filenewname'} ); -} + my $filenewname=&Apache::lonnet::clean_filename($ENV{'form.filenewname'}); + if ($filenewname eq '') { + $r->print(''. + &mt("Error: no valid filename was provided to rename to."). + '
'); + $r->print(&done()); + return; + } + my $result= + &Apache::lonnet::renameuserfile($ENV{'user.name'},$ENV{'user.domain'}, + 'portfolio'.$ENV{'form.currentpath'}.$ENV{'form.selectfile'}, + 'portfolio'.$ENV{'form.currentpath'}.$ENV{'form.filenewname'}); + if ($result ne 'ok') { + $r->print(' An errror occured ('.$result. + ') while trying to rename '.&display_file().' to '. + &display_file(undef,$filenewname).'
'); + } + $r->print(&done()); +} sub upload { my ($r)=@_; @@ -338,12 +359,6 @@ sub createdir { sub handler { # this handles file management my $r = shift; - my @dir_list; # will hold directory listing as array - my $udir; # returned from home server - my $currentFile; # directory or file contained in $pathToRoot.$current_path - my $action; # delete, rename, makedirectory, removedirectory, - my $filenewname; # for rename action (guess what we do with it!) - my $isFile; &Apache::loncommon::no_cache($r); &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; @@ -357,20 +372,15 @@ sub handler { ['selectfile','currentpath', 'currentfile']); - # if we're uploading a file, we need to do it early so it will - # show in the directory list - if ($ENV{'form.uploaddoc.filename'}) { &upload($r); + } elsif ($ENV{'form.action'} eq 'delete' && $ENV{'form.confirmed'}) { + &delete_confirmed($r); } elsif ($ENV{'form.action'} eq 'delete') { - if ($ENV{'form.confirmed'}) { - &delete_confirmed($r); - } else { - &delete($r); - } + &delete($r); + } elsif ($ENV{'form.action'} eq 'rename' && $ENV{'form.confirmed'}) { + &rename_confirmed($r); } elsif ($ENV{'form.action'} eq 'rename') { - # similarly, we need to delete or rename files before getting - # directory list &rename($r); } elsif ($ENV{'form.createdir'}) { &createdir($r); @@ -383,8 +393,9 @@ sub handler { my $portfolio_root = &Apache::loncommon::propath($ENV{'user.domain'}, $ENV{'user.name'}). '/userfiles/portfolio'; - @dir_list=&Apache::lonnet::dirlist($current_path,$ENV{'user.domain'}, - $ENV{'user.name'},$portfolio_root); + my @dir_list=&Apache::lonnet::dirlist($current_path, + $ENV{'user.domain'}, + $ENV{'user.name'},$portfolio_root); # need to know if directory is empty so it can be removed if desired my $is_empty=(@dir_list == 2);