[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__
+