[LON-CAPA-cvs] cvs: loncom /publisher loncfile.pm

foxr lon-capa-cvs@mail.lon-capa.org
Fri, 24 May 2002 05:11:40 -0000


foxr		Fri May 24 01:11:40 2002 EDT

  Modified files:              
    /loncom/publisher	loncfile.pm 
  Log:
  (Bug 259).
  Correct directory mapping in construction space:
  - Generation of names for creational operations was wrong for internally
    authenticated users.
  - Stage 2 Create directory: Done left us in a bad directory.
  
  
  
Index: loncom/publisher/loncfile.pm
diff -u loncom/publisher/loncfile.pm:1.8 loncom/publisher/loncfile.pm:1.9
--- loncom/publisher/loncfile.pm:1.8	Mon Jan 21 12:13:49 2002
+++ loncom/publisher/loncfile.pm	Fri May 24 01:11:40 2002
@@ -1,7 +1,16 @@
 # The LearningOnline Network with CAPA
 # Handler to rename files, etc, in construction space
 #
-# $Id: loncfile.pm,v 1.8 2002/01/21 17:13:49 albertel Exp $
+#  This file responds to the various buttons and events
+#  in the top frame of the construction space directory.
+#  Each event is processed in two phases.  The first phase
+#  presents a page that describes the proposed action to the user
+#  and requests confirmation.  The second phase commits the action
+#  and displays a page showing the results of the action.
+#
+
+#
+# $Id: loncfile.pm,v 1.9 2002/05/24 05:11:40 foxr Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -41,6 +50,9 @@
 # 03/31,04/03,05/02,05/09,06/23,06/24 Gerd Kortemeyer)
 #
 # 06/23 Gerd Kortemeyer
+# 05/07/02 Ron Fox:
+#           - Added Debug log output so that I can trace what the heck this
+#             undocumented thingy does.
 
 package Apache::loncfile;
 
@@ -49,6 +61,28 @@
 use File::Copy;
 use Apache::Constants qw(:common :http :methods);
 use Apache::loncacc;
+use Apache::Log ();
+
+my $DEBUG=1;
+
+#
+#  Debug
+#    If debugging is enabled puts out a debuggin message determined by the
+#    caller.  The debug message goes to the Apache error log file.
+#
+#  Parameters:
+#     r       - Apache request [in]
+#     message - String [in] 
+# Returns:
+#    nothing.
+sub Debug {
+    my $r       = shift;
+    my $log     = $r->log;
+    my $message = shift;
+    if ($DEBUG) {
+	$log->debug($message);    
+    }
+}
 
 sub exists {
     my ($uname,$udom,$dir,$newfile)=@_;
@@ -156,12 +190,21 @@
 sub phasetwo {
     my ($r,$fn,$uname,$udom)=@_;
 
+    &Debug($r, "loncfile - Entering phase 2 for $fn");
+
     $fn=~/(.*)\/([^\/]+)\.(\w+)$/;
     my $dir=$1;
     my $main=$2;
     my $suffix=$3;
+    
+    
+    &Debug($r, "loncfile::phase2 dir = $dir main = $main suffix = $suffix");
 
-    my $conspace='/home/'.$uname.'/public_html'.$fn;
+    my $conspace=$fn;
+
+    &Debug($r, "loncfile::phase2 Full construction space name: $conspace");
+
+    &Debug($r, "loncfie::phase2 action is $ENV{'form.action'}");
 
     if ($ENV{'form.action'} eq 'rename') {
 	if (-e $conspace) {
@@ -200,12 +243,21 @@
             return;
         }
     } elsif ($ENV{'form.action'} eq 'newdir') {
-        my $newdir='/home/'.$uname.'/public_html/'.
-                   $fn.$ENV{'form.newfilename'};
+        my $newdir= $fn.$ENV{'form.newfilename'};
+
+	&Debug($r, "loncfile::phasetwo - new directory name: $newdir");
+
         unless (mkdir($newdir,0770)) {
 	    $r->print('<font color=red>Error: '.$!.'</font>');
+	    &Debug($r, "loncfile::phasetwo - mkdir failed $!");
         }
-        $r->print('<h3><a href="/priv/'.$uname.$fn.'/">Done</a></h3>');
+	&Debug($r, "Done button: uname = $uname, dir = $dir, fn = $fn");
+	my $url = '/priv/'.$uname.$newdir.'/';
+	&Debug($r, "URL[1] = ".$url);
+	$url =~ s/\/home\/$uname\/public_html//o;
+        &Debug($r, "URL = ".$url);
+
+        $r->print('<h3><a href="'.$url.'">Done</a></h3>');
         return;
     }
     $r->print('<h3><a href="/priv/'.$uname.$dir.'/">Done</a></h3>');
@@ -215,18 +267,27 @@
 
   my $r=shift;
 
+
+  &Debug($r, "loncfile.pm - handler entered");
+
   my $fn;
 
   if ($ENV{'form.filename'}) {
       $fn=$ENV{'form.filename'};
+      &Debug($r, "loncfile::handler - raw url: $fn");
+      $fn=~s/^http\:\/\/[^\/]+\/\~(\w+)/\/home\/$1\/public_html/;
       $fn=~s/^http\:\/\/[^\/]+//;
+      &Debug($r, "loncfile::handler - doctored url: $fn");
+
   } else {
+      &Debug($r, "loncfile::handler - no form.filename");
      $r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}.
          ' unspecified filename for cfile', $r->filename); 
      return HTTP_NOT_FOUND;
   }
 
   unless ($fn) { 
+      &Debug($r, "loncfile::handler - doctored url is empty");
      $r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}.
          ' trying to cfile non-existing file', $r->filename); 
      return HTTP_NOT_FOUND;
@@ -238,6 +299,8 @@
 
   ($uname,$udom)=
     &Apache::loncacc::constructaccess($fn,$r->dir_config('lonDefDomain'));
+  &Debug($r, 
+	 "loncfile::handler constructaccess uname = $uname domain = $udom");
   unless (($uname) && ($udom)) {
      $r->log_reason($uname.' at '.$udom.
          ' trying to manipulate file '.$ENV{'form.filename'}.
@@ -247,6 +310,7 @@
   }
 
   $fn=~s/\/\~(\w+)//;
+  &Debug($r, "loncfile::handler ~ removed filename: $fn");
 
   $r->content_type('text/html');
   $r->send_http_header;
@@ -264,7 +328,10 @@
                '</font></h3>');
   }
 
+
+  &Debug($r, "loncfile::handler Form action is $ENV{'form.action'} ");
   if ($ENV{'form.action'} eq 'delete') {
+      
       $r->print('<h3>Delete</h3>');
   } elsif ($ENV{'form.action'} eq 'rename') {
       $r->print('<h3>Rename</h3>');
@@ -277,8 +344,10 @@
      return OK;  
   }
   if ($ENV{'form.phase'} eq 'two') {
+      &Debug($r, "loncfile::handler  entering phase2");
       &phasetwo($r,$fn,$uname,$udom);
   } else {
+      &Debug($r, "loncfile::handler  entering phase1");
       &phaseone($r,$fn,$uname,$udom);
   }
 
@@ -288,3 +357,4 @@
 
 1;
 __END__
+