--- loncom/interface/portfolio.pm	2004/10/18 20:37:30	1.49
+++ loncom/interface/portfolio.pm	2004/10/19 19:13:04	1.50
@@ -44,8 +44,10 @@ sub display_common {
     $r->print('<table border="0" cellspacing="2" cellpadding="2"><tr valign="middle">');
     $r->print('<td bgcolor="#ccddaa" align="center">');
     my $displayOut = '<form method="post" enctype="multipart/form-data">';
-    $displayOut = $displayOut.'<input name="uploaddoc" type="file" />'.
+    $displayOut .= '<input name="uploaddoc" type="file" />'.
         '<input type="hidden" name="currentpath" value="'.$current_path.'" />'.
+        '<input type="hidden" name="action" value="'.$ENV{"form.action"}.'" />'.
+        '<input type="hidden" name="fieldname" value="'.$ENV{"form.fieldname"}.'" />'.
         '<input type="submit" name="storeupl" value="Upload" />'.
         '</form>';
     $r->print($displayOut);
@@ -53,6 +55,8 @@ sub display_common {
     $displayOut = '<form method="post">';
     $displayOut .= '<input name="newdir" type="input" />'.
         '<input type="hidden" name="currentpath" value="'.$current_path.'" />'.
+        '<input type="hidden" name="action" value="'.$ENV{"form.action"}.'" />'.
+        '<input type="hidden" name="fieldname" value="'.$ENV{"form.fieldname"}.'" />'.
         '<input type="submit" name="createdir" value="'.&mt("Create Directory").'" />'.
         '</form>';
     $r->print($displayOut);
@@ -226,7 +230,9 @@ sub display_file {
 
 sub done {
     return ('<h3><a href="/adm/portfolio?currentpath='.
-	    $ENV{'form.currentpath'}.'">'.&mt('Done').'</a></h3>');
+	    $ENV{'form.currentpath'}.
+	    '&fieldname='.$ENV{'form.fieldname'}.
+	    '">'.&mt('Done').'</a></h3>');
 }
 
 sub delete {
@@ -336,41 +342,6 @@ ENDSMP
     $r->print($java_script);
     $r->print("<h1>Select portfolio files</h1>
                 Check as many as you wish in response to the essay problem.<br />");
-    my $portfolio_root = &Apache::loncommon::propath($ENV{'user.domain'},
-						 $ENV{'user.name'}).
-						'/userfiles/portfolio';
-    my $current_path='/';
-    if ($ENV{'form.currentpath'}) {
-	$current_path = $ENV{'form.currentpath'};
-    }
-    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_common($r,$current_path,$is_empty,\@dir_list);
-    &display_file_select($r,$current_path,$is_empty,\@dir_list);
-    $r->print("</body>\n</html>\n");
-    return OK;
 }
 sub upload {
     my ($r)=@_;
@@ -473,8 +444,6 @@ sub handler {
 	}
     if ($ENV{'form.uploaddoc.filename'}) {
 	&upload($r);
-    } elsif ($ENV{'form.action'} eq 'selectfile') {
-        &select_files($r);
     } elsif ($ENV{'form.action'} eq 'delete' && $ENV{'form.confirmed'}) {
 	&delete_confirmed($r);
     } elsif ($ENV{'form.action'} eq 'delete') {
@@ -519,7 +488,12 @@ sub handler {
 	# need to know if directory is empty so it can be removed if desired
 	my $is_empty=(@dir_list == 2);
 	&display_common($r,$current_path,$is_empty,\@dir_list);
-	&display_directory($r,$current_path,$is_empty,\@dir_list);
+	if ($ENV{"form.mode"}='selectfile'){
+	    &select_files($r);
+            &display_file_select($r,$current_path,$is_empty,\@dir_list);
+	} else {
+	    &display_directory($r,$current_path,$is_empty,\@dir_list);
+	}
 	$r->print("</body>\n</html>\n");
 	return OK;
     }