--- loncom/interface/portfolio.pm 2004/08/24 07:26:04 1.27
+++ loncom/interface/portfolio.pm 2004/08/24 20:57:12 1.30
@@ -161,7 +161,7 @@ sub displayActions {
my $dirptr=16384;
sub display_directory {
- my ($r,$current_path,$dir_list)=@_;
+ my ($r,$current_path,$is_empty,$dir_list)=@_;
my $iconpath= $r->dir_config('lonIconsURL') . "/";
$r->print('
');
$r->print('');
@@ -180,7 +180,7 @@ sub display_directory {
$r->print($displayOut);
$r->print(' |
');
my @tree = split (/\//,$current_path);
- $r->print(''.&make_anchor('/','/'));
+ $r->print(''.&make_anchor('portfolio','/').'/');
if (@tree > 1){
my $newCurrentPath = '';
for (my $i = 1; $i< @tree; $i++){
@@ -194,6 +194,16 @@ sub display_directory {
&Apache::lonhtmlcommon::select_recent('portfolio','currentpath',
'this.form.submit();'));
$r->print("");
+ if ($is_empty){
+ $displayOut = '';
+
+ $r->print($displayOut);
+ }else{
$r->print(''.
'Actions | | Name | Size | Last Modified |
');
my $href_location="/uploaded/$ENV{'user.domain'}/$ENV{'user.name'}/portfolio/$current_path/";
@@ -241,6 +251,7 @@ sub display_directory {
# $r->print('>');
# $r->print(&display_actions($current_path, $currentFile, $isEmpty));
$r->print(' |
');
+ }
}
sub open_form {
@@ -294,12 +305,36 @@ sub delete_confirmed {
$ENV{'form.currentpath'}.
$ENV{'form.selectfile'});
if ($result ne 'ok') {
- $r->print(' An errror occured ('.$result.
+ $r->print(' An error occured ('.$result.
') while trying to delete '.&display_file().'
');
}
$r->print(&done());
}
+sub delete_dir {
+ my ($r)=@_;
+ &open_form($r);
+ $r->print(''.&mt('Delete').' '.&display_file().'?
');
+ &close_form($r);
+}
+
+sub delete_dir_confirmed {
+ my ($r)=@_;
+ my $directory_name = $ENV{'form.currentpath'};
+ $r->print('
'.$directory_name.'
');
+ $directory_name =~ m/\/$/;
+ $directory_name = $`;
+ my $result=&Apache::lonnet::removeuserfile($ENV{'user.name'},
+ $ENV{'user.domain'},'portfolio'.
+ $directory_name);
+ if ($result ne 'ok') {
+ $r->print(' An error occured (dir) ('.$result.
+# ') while trying to delete '.&display_file().'
');
+ ') while trying to delete '.$directory_name.'
');
+ }
+ $r->print(&done());
+}
+
sub rename {
my ($r)=@_;
&open_form($r);
@@ -345,10 +380,17 @@ sub upload {
sub createdir {
my ($r)=@_;
- #FIXME 1) bad dirnames ( '/' etc)
- # 2) file exists in place of dir (errormessage needs improvement)
+ #FIXME 1) file exists in place of dir (errormessage needs improvement)
+ my $newdir=&Apache::lonnet::clean_filename($ENV{'form.newdir'});
+ if ($newdir eq '') {
+ $r->print(''.
+ &mt("Error: no valid directory name was provided.").
+ '
');
+ $r->print(&done());
+ return;
+ }
my $result=&Apache::lonnet::mkdiruserfile($ENV{'user.name'},
- $ENV{'user.domain'},'portfolio'.$ENV{'form.currentpath'}.$ENV{'form.newdir'});
+ $ENV{'user.domain'},'portfolio'.$ENV{'form.currentpath'}.$newdir);
if ($result ne 'ok') {
$r->print(' An errror occured ('.$result.
') while trying to create a new directory '.&display_file().'
');
@@ -378,6 +420,10 @@ sub handler {
&delete_confirmed($r);
} elsif ($ENV{'form.action'} eq 'delete') {
&delete($r);
+ } elsif ($ENV{'form.action'} eq 'deletedir' && $ENV{'form.confirmed'}) {
+ &delete_dir_confirmed($r);
+ } elsif ($ENV{'form.action'} eq 'deletedir'){
+ &delete_dir($r);
} elsif ($ENV{'form.action'} eq 'rename' && $ENV{'form.confirmed'}) {
&rename_confirmed($r);
} elsif ($ENV{'form.action'} eq 'rename') {
@@ -399,15 +445,11 @@ sub handler {
# need to know if directory is empty so it can be removed if desired
my $is_empty=(@dir_list == 2);
-
- &display_directory($r,$current_path,\@dir_list);
-
- }
-
+ &display_directory($r,$current_path,$is_empty,\@dir_list);
$r->print("