--- loncom/interface/portfolio.pm	2004/11/02 14:35:42	1.53
+++ loncom/interface/portfolio.pm	2004/11/22 22:59:32	1.57
@@ -33,8 +33,8 @@ use Apache::lonlocal;
 # receives a file name and path stub from username/userfiles/portfolio/
 # returns an anchor tag consisting encoding filename and currentpath
 sub make_anchor {
-    my ($filename, $current_path) = @_;
-    my $anchor = '<a href="/adm/portfolio?selectfile='.$filename.'&currentpath='.$current_path.'">'.$filename.'</a>';
+    my ($filename, $current_path, $current_mode, $field_name) = @_;
+    my $anchor = '<a href="/adm/portfolio?selectfile='.$filename.'&currentpath='.$current_path.'&mode='.$current_mode.'&fieldname='.$field_name.'">'.$filename.'</a>';
     return $anchor;
 }
 my $dirptr=16384;
@@ -48,6 +48,7 @@ sub display_common {
         '<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="hidden" name="mode" value="'.$ENV{"form.mode"}.'" />'. 
         '<input type="submit" name="storeupl" value="Upload" />'.
         '</form>';
     $r->print($displayOut);
@@ -57,22 +58,22 @@ sub display_common {
         '<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="hidden" name="mode" value="'.$ENV{"form.mode"}.'" />'. 
         '<input type="submit" name="createdir" value="'.&mt("Create Directory").'" />'.
         '</form>';
     $r->print($displayOut);
     $r->print('</td></tr></table>');
     my @tree = split (/\//,$current_path);
-    $r->print('<font size="+2">'.&make_anchor('portfolio','/').'/');
+    $r->print('<font size="+2">'.&make_anchor('portfolio','/',$ENV{"form.mode"},$ENV{"form.fieldname"}).'/');
     if (@tree > 1){
         my $newCurrentPath = '';
         for (my $i = 1; $i< @tree; $i++){
             $newCurrentPath .= $tree[$i].'/';
-            $r->print(&make_anchor($tree[$i],'/'.$newCurrentPath).'/');
+            $r->print(&make_anchor($tree[$i],'/'.$newCurrentPath, $ENV{"form.mode"},$ENV{"form.fieldname"}).'/');
         }
     }
     $r->print('</font>');
     &Apache::lonhtmlcommon::store_recent('portfolio',$current_path,$current_path);
-    #Fixme -- remove from recent those paths that are deleted
     $r->print('<br /><form method=post action="/adm/portfolio">'.
 	      &Apache::lonhtmlcommon::select_recent('portfolio','currentpath',
 						    'this.form.submit();'));
@@ -122,7 +123,7 @@ sub display_directory {
             if ($dirptr&$testdir) {
                 $r->print('<tr bgcolor="#FFAA99"><td><img src="'.$iconpath.'folder_closed.gif"></td>');
                 $r->print('<td>Go to ...</td>');
-                $r->print('<td>'.&make_anchor($filename.'/',$current_path.$filename.'/').'</td>'); 
+                $r->print('<td>'.&make_anchor($filename.'/',$current_path.$filename.'/',$ENV{'form.mode'},$ENV{"form.fieldname"}).'</td>'); 
                 $r->print('</tr>'); 
             } else {
                 $r->print('<tr bgcolor="#CCCCFF">');
@@ -187,7 +188,7 @@ sub display_file_select {
             if ($dirptr&$testdir) {
                 $r->print('<tr bgcolor="#FFAA99"><td><img src="'.$iconpath.'folder_closed.gif"></td>');
                 $r->print('<td>Go to ...</td>');
-                $r->print('<td>'.&make_anchor($filename.'/',$current_path.$filename.'/').'</td>'); 
+                $r->print('<td>'.&make_anchor($filename.'/',$current_path.$filename.'/',$ENV{'form.mode'},$ENV{"form.fieldname"}).'</td>'); 
                 $r->print('</tr>'); 
             } else {
                 $r->print('<tr bgcolor="#CCCCFF">');
@@ -245,14 +246,22 @@ sub done {
     return ('<h3><a href="/adm/portfolio?currentpath='.
 	    $ENV{'form.currentpath'}.
 	    '&fieldname='.$ENV{'form.fieldname'}.
+	    '&mode='.$ENV{'form.mode'}.
 	    '">'.&mt('Done').'</a></h3>');
 }
 
 sub delete {
     my ($r)=@_;
-    &open_form($r);
-    $r->print('<p>'.&mt('Delete').' '.&display_file().'?</p>');
-    &close_form($r);
+    my @check;
+    my $file_name = $ENV{'form.currentpath'}.$ENV{'form.selectfile'};
+    if (&Apache::lonnet::is_locked($file_name,$ENV{'user.domain'},$ENV{'user.name'} ) eq 'true') {
+        $r->print ("The file is locked and cannot be deleted.<br />");
+        $r->print(&done());
+    } else {
+        &open_form($r);
+        $r->print('<p>'.&mt('Delete').' '.&display_file().'?</p>');
+        &close_form($r);
+    }
 } 
 
 sub delete_confirmed {
@@ -305,10 +314,16 @@ sub delete_dir_confirmed {
 
 sub rename {
     my ($r)=@_;
-    &open_form($r);
-    $r->print('<p>'.&mt('Rename').' '.&display_file().' to 
-               <input name="filenewname" type="input" size="50" />?</p>');
-    &close_form($r);
+    my $file_name = $ENV{'form.currentpath'}.$ENV{'form.selectfile'};
+    if (&Apache::lonnet::is_locked($file_name,$ENV{'user.domain'},$ENV{'user.name'}) eq 'true') {
+        $r->print ("The file is locked and cannot be renamed.<br />");
+        $r->print(&done());
+    } else {
+        &open_form($r);
+        $r->print('<p>'.&mt('Rename').' '.&display_file().' to 
+                   <input name="filenewname" type="input" size="50" />?</p>');
+        &close_form($r);
+    }
 }
 
 sub rename_confirmed {
@@ -340,7 +355,7 @@ sub select_files {
             fileList = "";
             for (i=0;i<document.forms.checkselect.length;i++) { 
                 if (document.forms.checkselect[i].checked){
-                    fileList = fileList + document.forms.checkselect[i].value + "," ;
+                    fileList = fileList + document.forms.checkselect.currentpath.value + document.forms.checkselect[i].value + "," ;
                 }
             }
             opener.document.forms.lonhomework.