--- loncom/publisher/loncfile.pm 2002/07/28 02:16:59 1.12 +++ loncom/publisher/loncfile.pm 2002/08/24 03:56:58 1.15 @@ -7,10 +7,10 @@ # 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.12 2002/07/28 02:16:59 foxr Exp $ +# $Id: loncfile.pm,v 1.15 2002/08/24 03:56:58 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -86,10 +86,12 @@ package Apache::loncfile; use strict; use Apache::File; +use File::Basename; use File::Copy; use Apache::Constants qw(:common :http :methods); use Apache::loncacc; use Apache::Log (); +use Apache::lonnet; my $DEBUG=0; my $r; # Needs to be global for some stuff RF. @@ -393,25 +395,19 @@ Parameters: =item $request - Apache Request Object [in] - Apache server request object. -=item $user - string [in] - Name of the user initiating the request. - -=item $file - A filename. +=item $cancelurl - the url to go to on cancel. =back =cut sub CloseForm1 { - my ($request, $user, $file) = @_; - my $url = "/priv/".$file; - - - $url =~ s/public_html\///; - $url =~ s/\/home//; - $url =~ s/\/\//\//; + my ($request, $cancelurl) = @_; + + &Debug($request, "Cancel url is: ".$cancelurl); $request->print('

'); - $request->print('

'); } @@ -487,6 +483,9 @@ sub Rename1 { &Debug($request, "Username - ".$user." filename: ".$filename."\n"); my $conspace = $filename; + my $cancelurl = "/priv/".$filename; + $cancelurl =~ s/\/home\///; + $cancelurl =~ s/\/public_html//; if(-e $conspace) { if($ENV{'form.newfilename'}) { @@ -497,7 +496,7 @@ sub Rename1 { $newfilename. '">

Rename '.$filename.' to '. $dir.'/'.$newfilename.'?

'); - &CloseForm1($request, $user, $filename); + &CloseForm1($request, $cancelurl); } else { $request->print('

No new filename specified

'); return; @@ -524,6 +523,7 @@ Parameters: =item $user - string [in] Name of session user. + =item $filename - string [in] Name fo the file to be deleted: Filename is the full filesystem path to the file. @@ -532,13 +532,18 @@ Parameters: =cut sub Delete1 { - my ($request, $user, $filename) = @_; + my ($request, $user, $filename) = @_; + + my $cancelurl = '/priv/'.$filename; + $cancelurl =~ s/\/home\///; + $cancelurl =~ s/\/public_html//; + if( -e $filename) { $request->print(''); $request->print('

Delete '.$filename.'?

'); - &CloseForm1($request, $user, $filename); + &CloseForm1($request, $cancelurl); } else { $request->print('

No Such file: '.$filename.'

'); } @@ -576,6 +581,11 @@ Parameters: sub Copy1 { my ($request, $user, $domain, $dir, $filename, $newfilename) = @_; + my $cancelurl = "/priv/".$filename; + $cancelurl =~ s/\/home\///; + $cancelurl =~ s/\/public_html//; + + if(-e $filename) { $request->print(&checksuffix($filename,$newfilename)); @@ -584,7 +594,7 @@ sub Copy1 { $dir.'/'.$newfilename. '">

Copy '.$filename.' to'. ''.$dir.'/'.$newfilename.'/?

'); - &CloseForm1($request, $user, $filename); + &CloseForm1($request, $cancelurl); } else { $request->print('

No such file '.$filename.'

'); } @@ -633,7 +643,10 @@ sub NewDir1 my $fullpath = '/home/'.$username.'/public_html/'. $path.'/'.$newdir; - Debug($request, "Full path is : ".$fullpath); + + my $cancelurl = '/priv/'.$username.'/'.$path; + + &Debug($request, "Full path is : ".$fullpath); if(-e $fullpath) { $request->print('

Directory exists.

'); @@ -642,7 +655,7 @@ sub NewDir1 $request->print('

Make new directory '. $path."/".$newdir.'?

'); - &CloseForm1($request, $username, $newdir); + &CloseForm1($request, $cancelurl); } } @@ -845,9 +858,13 @@ sub Copy2 { &Debug($request ,"Will try to copy $oldfile to $newfile"); if(-e $oldfile) { unless (copy($oldfile, $newfile)) { - $request->print(' Error: '.$!.''); + $request->print(' copy Error: '.$!.''); return 0; } else { + unless (chmod(0660, $newfile)) { + $request->print(' chmod error: '.$!.''); + return 0; + } return 1; } } else { @@ -1001,6 +1018,12 @@ sub phasetwo { &Debug($r, "Final url is: $dest"); $dest =~ s/\/home\//\/priv\//; $dest =~ s/\/public_html//; + + my $base = &Apache::lonnet::escape(&File::Basename::basename($dest)); + my $dpath= &File::Basename::dirname($dest); + $dest = $dpath.'/'.$base; + + &Debug($r, "Final url after rewrite: $dest"); $r->print('

Done

');