--- 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);