--- loncom/interface/portfolio.pm 2004/09/10 17:59:13 1.41
+++ loncom/interface/portfolio.pm 2004/09/10 20:14:45 1.43
@@ -213,8 +213,7 @@ sub delete_dir_confirmed {
} else {
# now remove from recent
# $r->print('
removing '.$directory_name.'
print(' No file was selected to upload.'.
'To upload a file, click Browse...'.
@@ -386,10 +376,26 @@ sub handler {
if ($ENV{'form.currentpath'}) {
$current_path = $ENV{'form.currentpath'};
}
- @dir_list=&Apache::lonnet::dirlist($current_path,
+ my @dir_list=&Apache::lonnet::dirlist($current_path,
$ENV{'user.domain'},
$ENV{'user.name'},$portfolio_root);
-
+ if (@dir_list[0] eq 'no_such_dir'){
+ # two main reasons for this: 1) never been here, so directory structure not created
+ # 2) back-button navigation after deleting a directory
+ if ($current_path eq '/'){
+ &Apache::lonnet::mkdiruserfile($ENV{'user.name'},
+ $ENV{'user.domain'},'portfolio');
+ }else{ # some directory that snuck in
+ # get rid of the directory from the recent pulldown, just in case
+ &Apache::lonhtmlcommon::remove_recent('portfolio',[$current_path]);
+ $current_path = '/'; # force it back to the root
+ }
+ # now grab the directory list again, for the first time
+ @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);
&display_directory($r,$current_path,$is_empty,\@dir_list);