--- loncom/publisher/loncfile.pm	2001/06/23 20:09:06	1.3
+++ loncom/publisher/loncfile.pm	2001/06/24 18:09:38	1.5
@@ -13,7 +13,7 @@
 # 03/23 Guy Albertelli
 # 03/24,03/29 Gerd Kortemeyer)
 #
-# 03/31,04/03,05/02,05/09,06/23 Gerd Kortemeyer)
+# 03/31,04/03,05/02,05/09,06/23,06/24 Gerd Kortemeyer)
 #
 # 06/23 Gerd Kortemeyer
 
@@ -52,7 +52,9 @@ sub phaseone {
 		   $r->print(
                     '<p><font color=red>Warning: target file exists!</font>');
                }
-	       $r->print('<p>Rename <tt>'.$fn.'</tt> to <tt>'.
+	       $r->print('<input type=hidden name=newfilename value="'.
+                         $ENV{'form.newfilename'}.
+                         '"><p>Rename <tt>'.$fn.'</tt> to <tt>'.
                          $dir.'/'.$ENV{'form.newfilename'}.'</tt>?');
 	    } else {
 	       $r->print('<p>No new filename specified.</form>');
@@ -82,7 +84,9 @@ sub phaseone {
 		   $r->print(
                     '<p><font color=red>Warning: target file exists!</font>');
                }
-	       $r->print('<p>Copy <tt>'.$fn.'</tt> to <tt>'.
+	       $r->print('<input type=hidden name=newfilename value="'.
+                         $ENV{'form.newfilename'}.
+                         '"><p>Copy <tt>'.$fn.'</tt> to <tt>'.
                          $dir.'/'.$ENV{'form.newfilename'}.'</tt>?');
 	    } else {
 	       $r->print('<p>No new filename specified.</form>');
@@ -93,10 +97,16 @@ sub phaseone {
             return;
         }
     } elsif ($ENV{'form.action'} eq 'newdir') {
-	if (-e $conspace) {
+        my $newdir='/home/'.$uname.'/public_html/'.
+                   $fn.$ENV{'form.newfilename'};
+	if (-e $newdir) {
             $r->print('<p>Directory exists.</form>');
             return;
         }
+	$r->print('<input type=hidden name=newfilename value="'.
+                  $ENV{'form.newfilename'}.
+                  '"><p>Make new directory <tt>'.
+                  $fn.$ENV{'form.newfilename'}.'</tt>?');
        
     }
     $r->print('<p><input type=submit value=Continue></form>'); 
@@ -104,11 +114,58 @@ sub phaseone {
 
 sub phasetwo {
     my ($r,$fn,$uname,$udom)=@_;
+
+    $fn=~/(.*)\/([^\/]+)\.(\w+)$/;
+    my $dir=$1;
+    my $main=$2;
+    my $suffix=$3;
+
+    my $conspace='/home/'.$uname.'/public_html'.$fn;
+
     if ($ENV{'form.action'} eq 'rename') {
+	if (-e $conspace) {
+	    if ($ENV{'form.newfilename'}) {
+               unless (rename('/home/'.$uname.'/public_html'.$fn,
+          '/home/'.$uname.'/public_html'.$dir.'/'.$ENV{'form.newfilename'})) {
+	    $r->print('<font color=red>Error: '.$!.'</font>');
+               }
+            }
+        } else {
+	    $r->print('<p>No such file.</form>');
+            return;
+        }
     } elsif ($ENV{'form.action'} eq 'delete') { 
+	if (-e $conspace) {
+            unless (unlink('/home/'.$uname.'/public_html'.$fn)) {
+	       $r->print('<font color=red>Error: '.$!.'</font>');
+            }
+        } else {
+	    $r->print('<p>No such file.</form>');
+            return;
+        }
     } elsif ($ENV{'form.action'} eq 'copy') { 
+	if (-e $conspace) {
+	    if ($ENV{'form.newfilename'}) {
+               unless (copy('/home/'.$uname.'/public_html'.$fn,
+           '/home/'.$uname.'/public_html'.$dir.'/'.$ENV{'form.newfilename'})) {
+	          $r->print('<font color=red>Error: '.$!.'</font>');
+               }
+	    } else {
+	       $r->print('<p>No new filename specified.</form>');
+               return;
+	    }
+        } else {
+	    $r->print('<p>No such file.</form>');
+            return;
+        }
     } elsif ($ENV{'form.action'} eq 'newdir') {
-    } 
+        my $newdir='/home/'.$uname.'/public_html/'.
+                   $fn.$ENV{'form.newfilename'};
+        unless (mkdir($newdir,0770)) {
+	    $r->print('<font color=red>Error: '.$!.'</font>');
+        }
+    }
+    $r->print('<h3><a href="/priv/'.$uname.$dir.'/">Done</a></h3>');
 }
 
 sub handler {
@@ -140,7 +197,7 @@ sub handler {
     &Apache::loncacc::constructaccess($fn,$r->dir_config('lonDefDomain'));
   unless (($uname) && ($udom)) {
      $r->log_reason($uname.' at '.$udom.
-         ' trying to publish file '.$ENV{'form.filename'}.
+         ' trying to manipulate file '.$ENV{'form.filename'}.
          ' ('.$fn.') - not authorized', 
          $r->filename); 
      return HTTP_NOT_ACCEPTABLE;
@@ -177,7 +234,7 @@ sub handler {
      return OK;  
   }
   if ($ENV{'form.phase'} eq 'two') {
-#      &phasetwo($r,$fn,$uname,$udom);
+      &phasetwo($r,$fn,$uname,$udom);
   } else {
       &phaseone($r,$fn,$uname,$udom);
   }