--- loncom/publisher/loncfile.pm 2002/09/02 16:39:15 1.16
+++ loncom/publisher/loncfile.pm 2009/04/04 21:45:57 1.95
@@ -7,10 +7,9 @@
# 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.16 2002/09/02 16:39:15 harris41 Exp $
+#
+# $Id: loncfile.pm,v 1.95 2009/04/04 21:45:57 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -34,27 +33,6 @@
#
# http://www.lon-capa.org/
#
-#
-# (Handler to retrieve an old version of a file
-#
-# (Publication Handler
-#
-# (TeX Content Handler
-#
-# 05/29/00,05/30,10/11 Gerd Kortemeyer)
-#
-# 11/28,11/29,11/30,12/01,12/02,12/04,12/23 Gerd Kortemeyer
-# 03/23 Guy Albertelli
-# 03/24,03/29 Gerd Kortemeyer)
-#
-# 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.
-# 05/28/02 Ron Fox:
-# - Started putting in pod in standard format.
=pod
=head1 NAME
@@ -69,7 +47,7 @@ directory.
=head1 INTRODUCTION
loncfile is invoked when buttons in the top frame of the construction
-space directory listing are clicked. All operations procede in two phases.
+space directory listing are clicked. All operations proceed in two phases.
The first phase describes to the user exactly what will be done. If the user
confirms the operation, the second phase commits the operation and indicates
completion. When the user dismisses the output of phase2, they are returned to
@@ -88,10 +66,14 @@ use strict;
use Apache::File;
use File::Basename;
use File::Copy;
+use HTML::Entities();
use Apache::Constants qw(:common :http :methods);
use Apache::loncacc;
-use Apache::Log ();
use Apache::lonnet;
+use Apache::loncommon();
+use Apache::lonlocal;
+use LONCAPA qw(:DEFAULT :match);
+
my $DEBUG=0;
my $r; # Needs to be global for some stuff RF.
@@ -100,17 +82,17 @@ my $r; # Needs to be global for some
=item Debug($request, $message)
- If debugging is enabled puts out a debuggin message determined by the
+ If debugging is enabled puts out a debugging message determined by the
caller. The debug message goes to the Apache error log file. Debugging
- is enabled by ssetting the module global DEBUG variable to nonzero (TRUE).
+ is enabled by setting the module global DEBUG variable to nonzero (TRUE).
Parameters:
=over 4
-=item $request - The curretn request operation.
+=item $request - The current request operation.
-=item $message - The message to put inthe log file.
+=item $message - The message to put in the log file.
=back
@@ -120,18 +102,22 @@ my $r; # Needs to be global for some
=cut
sub Debug {
-
- # Marshall the parameters.
-
- my $r = shift;
- my $log = $r->log;
- my $message = shift;
-
- # Put out the indicated message butonly if DEBUG is false.
-
- if ($DEBUG) {
- $log->debug($message);
- }
+ # Put out the indicated message butonly if DEBUG is true.
+ if ($DEBUG) {
+ my ($r,$message) = @_;
+ $r->log_reason($message);
+ }
+}
+
+sub done {
+ my ($url)=@_;
+ my $done=&mt("Done");
+ return(< '.&mt('Error: destination for operation is an existing directory.').' Warning: target file exists, and has been published! Warning: target file exists! '.&mt('Warning: target file exists, and has been published!').' '.&mt("Warning: a published $published_type of this name exists.").' '.&mt("Error: a published $published_type of this name exists.").' '.&mt('Warning: target file exists!').' Warning: change of MIME type! '.&mt('Warning: change of MIME type!').' '
+ .&mt("You have requested to create file in directory [_1] which doesn't exist. The requested directory path has been removed from the requested file name."
+ ,'"'.&display($newpath).'"')
+ .' ".&mt('Invalid characters in requested name have been removed.')." Rename '.$filename.' to '.
- $dir.'/'.$newfilename.'? '.$action.' '.&display($fn).
+ '
'
+ .&mt('[_1](name).(number).(extension)[_2] not allowed.','','')
+ .'
'
+ .&mt('Removing the [_1].number.[_2] from requested filename.','','')
+ .'');
+ $dest =~ s/\.(\d+)(\.\w+)$/$2/;
+ }
+ if ($foundbad) {
+ $request->print("Done
');
+ my ($request, $user, $fn) = @_;
+ $request->print(&done(&url($fn)));
}
=pod
@@ -479,34 +492,73 @@ new filename relative to the current dir
=cut
sub Rename1 {
- my ($request, $filename, $user, $domain, $dir) = @_;
- &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'}) {
- my $newfilename = $ENV{'form.newfilename'};
- $request->print(&checksuffix($filename, $newfilename));
- $request->print(&exists($user, $domain, $dir, $newfilename));
- $request->print(''.
+ &mt('Cannot change MIME type of a directory').
+ ''.
+ '
'.&mt('Cancel').'');
+ return;
+ }
+ $newfilename=~s/\/[^\/]+\/([^\/]+)$/\/$1/;
+ }
+ $newfilename=~s://+:/:g; # remove duplicate /
+ while ($newfilename=~m:/\.\./:) {
+ $newfilename=~ s:/[^/]+/\.\./:/:g; #remove dir/..
+ }
+ my ($type, $return)=&exists($user, $domain, $newfilename);
+ $request->print($return);
+ if ($type eq 'error') {
+ $request->print('
'.&mt('Cancel').'');
+ return;
+ }
+ unless (&obsolete_unpub($user,$domain,$fn)) {
+ $request->print(''.&mt('Cannot rename or move non-obsolete published file').'
'.
+ '
'.&mt('Cancel').'');
+ return;
+ }
+ my $action;
+ if ($style eq 'rename') {
+ $action=&mt('Rename');
+ } else {
+ $action=&mt('Move');
+ }
+ $request->print('
to '.&display($newfilename).'?
No new filename specified
'); + $request->print(''.&mt('No new filename specified.').'
'); return; } } else { - $request->print('No such File
'); + $request->print(''.&mt('No such file').': '.&display($fn).'
'); return; } } + =pod =item Delete1 @@ -518,35 +570,44 @@ Parameters: =over 4 -=item $request - Apache Request Object [in] request object for the current +=item $request - Apache Request Object [in] request object for the current request. -=item $user - string [in] Name of session user. +=item $user - string [in] Name of the user initiating the request. +=item $domain - string [in] Domain the initiating user is logged in as -=item $filename - string [in] Name fo the file to be deleted: - Filename is the full filesystem path to the file. +=item $filename - string [in] Source filename. =back =cut sub Delete1 { - my ($request, $user, $filename) = @_; - - my $cancelurl = '/priv/'.$filename; - $cancelurl =~ s/\/home\///; - $cancelurl =~ s/\/public_html//; - + my ($request, $user, $domain, $fn) = @_; - if( -e $filename) { - $request->print(''); - $request->print('Delete '.$filename.'?
'); - &CloseForm1($request, $cancelurl); - } else { - $request->print('No Such file: '.$filename.'
'); - } + if( -e $fn) { + $request->print(''); + if (-d $fn) { + unless (&empty_directory($fn,'Delete1')) { + $request->print(''.&mt('Delete').' '.&display($fn).'?
'); + &CloseForm1($request, $fn); + } else { + $request->print(''.&mt('No such file').': '.&display($fn).'
'); + } } =pod @@ -554,8 +615,8 @@ sub Delete1 { =item Copy1($request, $user, $domain, $filename, $newfilename) Performs phase 1 processing of the construction space copy command. - Ensure that the source fil eexists. Ensure that a destination exists, - also warn if the detination already exists. + Ensure that the source file exists. Ensure that a destination exists, + also warn if the destination already exists. Parameters: @@ -568,9 +629,7 @@ Parameters: =item $domain - string [in] Domain the initiating user is logged in as -=item $dir - string [in] Directory path. - -=item $filename - string [in] Source filename. +=item $fn - string [in] Source filename. =item $newfilename-string [in] Destination filename. @@ -579,25 +638,36 @@ Parameters: =cut sub Copy1 { - my ($request, $user, $domain, $dir, $filename, $newfilename) = @_; - - my $cancelurl = "/priv/".$filename; - $cancelurl =~ s/\/home\///; - $cancelurl =~ s/\/public_html//; - + my ($request, $user, $domain, $fn, $newfilename) = @_; - - if(-e $filename) { - $request->print(&checksuffix($filename,$newfilename)); - $request->print(&exists($user, $domain, $dir, $newfilename)); - $request->print('Copy '.$filename.' to'. - ''.$dir.'/'.$newfilename.'/?
'); - &CloseForm1($request, $cancelurl); - } else { - $request->print('No such file '.$filename.'
'); - } + if(-e $fn) { + # is dest a dir + if (-d $newfilename) { + if ($fn =~ m|/([^/]*)$|) { $newfilename .= '/'.$1; } + } + if ($newfilename =~ m|/[^\.]+$|) { + #no extension add on original extension + if ($fn =~ m|/[^\.]*\.([^\.]+)$|) { $newfilename.='.'.$1; } + } + $newfilename=~s://+:/:g; # remove duplicate / + while ($newfilename=~m:/\.\./:) { + $newfilename=~ s:/[^/]+/\.\./:/:g; #remove dir/.. + } + $request->print(&checksuffix($fn,$newfilename)); + my ($type,$return)=&exists($user, $domain, $newfilename); + $request->print($return); + if ($type eq 'error') { + $request->print(''.&mt('Copy').' '.&display($fn).'
to '.
+ &display($newfilename).'?
'.&mt('No such file').': '.&display($fn).'
'); + } } =pod @@ -613,11 +683,13 @@ Parameters: =over 4 =item $request - Apache Request Object [in] - Server request object for the - current url.. + current url. =item $username - Name of the user that is requesting the directory creation. -=item $path - current directory relative to construction spacee. +=item $domain - Domain user is in + +=item $fn - source file. =item $newdir - Name of the directory to be created; path relative to the top level of construction space. @@ -637,27 +709,118 @@ causes the newdir operation to transitio =cut -sub NewDir1 -{ - my ($request, $username, $path, $newdir) = @_; - - my $fullpath = '/home/'.$username.'/public_html/'. - $path.'/'.$newdir; - - my $cancelurl = '/priv/'.$username.'/'.$path; - - &Debug($request, "Full path is : ".$fullpath); - - if(-e $fullpath) { - $request->print('Directory exists.
'); - } - else { - $request->print('Make new directory '. - $path."/".$newdir.'?
'); - &CloseForm1($request, $cancelurl); +sub NewDir1 { + my ($request, $username, $domain, $fn, $newfilename, $mode) = @_; + + my ($type, $result)=&exists($username,$domain,$newfilename,'directory'); + $request->print($result); + if ($type eq 'error') { + $request->print(''); + } else { + if ($mode eq 'testbank') { + $request->print(''); + } elsif ($mode eq 'imsimport') { + $request->print(''); + } + $request->print(''.&mt('Make new directory').' '. + &display($newfilename).'?
'); + &CloseForm1($request, $fn); + } +} + + +sub Decompress1 { + my ($request, $user, $domain, $fn) = @_; + if( -e $fn) { + $request->print(''); + $request->print(''.&mt('Decompress').' '.&display($fn).'?
'); + &CloseForm1($request, $fn); + } else { + $request->print(''.&mt('No such file').': '.&display($fn).'
'); + } +} + +=pod + +=item NewFile1 + + Does all phase 1 processing of file creation: + Ensures that the user provides a new filename, adds proper extension + if needed and that the file does not already exist, if it is a html, + problem, page, or sequence, it then creates a form link to hand the + actual creation off to the proper handler. + +Parameters: + +=over 4 + +=item $request - Apache Request Object [in] - Server request object for the + current url. + +=item $username - Name of the user that is requesting the directory creation. + +=item $domain - Name of the domain of the user + +=item $fn - Source file name + +=item $newfilename + - Name of the file to be created; no path information +=back + +Side Effects: + +=over 4 + +=item 2 new forms are displayed. Clicking on the confirmation button +causes the browser to attempt to load the specfied URL, allowing the +proper handler to take care of file creation. There is also a Cancel +button which returns you to the driectory listing you came from + +=back + +=cut + +sub NewFile1 { + my ($request, $user, $domain, $fn, $newfilename) = @_; + + if ($env{'form.action'} =~ /new(.+)file/) { + my $extension=$1; - } + ##Informs User (name).(number).(extension) not allowed + if($newfilename =~ /\.(\d+)\.(\w+)$/){ + $r->print(''.$newfilename. + ' - '.&mt('Bad Filename').''.&mt('Make new file').' '.&display($newfilename).'?
'); + $request->print(''); + $request->print(''); + $request->print(''); + } } =pod @@ -682,54 +845,68 @@ performed and reported to the user. =item $uname - string [in] Name of user logged in and doing this action. -=item $udom - string [in] Domain nmae under which the user logged in. +=item $udom - string [in] Domain name under which the user logged in. =back =cut sub phaseone { - my ($r,$fn,$uname,$udom)=@_; - - $fn=~m:(.*)/([^/]+)\.(\w+)$:; - my $dir=$1; - my $main=$2; - my $suffix=$3; - - # my $conspace=ConstructionPathFromRelative($uname, $fn); - - - $r->print(''); - } - } elsif ($ENV{'form.action'} eq 'newdir') { - &NewDir1($r, $uname, $dir, $ENV{'form.newfilename'}); - } + my $doingdir=0; + if ($env{'form.action'} eq 'newdir') { $doingdir=1; } + my $newfilename=&cleanDest($r,$env{'form.newfilename'},$doingdir,$fn,$uname); + $newfilename=&relativeDest($fn,$newfilename,$uname); + $r->print(''); + } + } elsif ($env{'form.action'} eq 'newdir') { + my $mode = ''; + if (exists($env{'form.callingmode'}) ) { + $mode = $env{'form.callingmode'}; + } + &NewDir1($r, $uname, $udom, $fn, $newfilename, $mode); + } elsif ($env{'form.action'} eq 'newfile' || + $env{'form.action'} eq 'newhtmlfile' || + $env{'form.action'} eq 'newproblemfile' || + $env{'form.action'} eq 'newpagefile' || + $env{'form.action'} eq 'newsequencefile' || + $env{'form.action'} eq 'newrightsfile' || + $env{'form.action'} eq 'newstyfile' || + $env{'form.action'} eq 'newtaskfile' || + $env{'form.action'} eq 'newlibraryfile' || + $env{'form.action'} eq 'Select Action') { + my $empty=&mt('Type Name Here'); + if (($newfilename!~/\/$/) && ($newfilename!~/$empty$/)) { + &NewFile1($r, $uname, $udom, $fn, $newfilename); + } else { + $r->print(''.&mt('No new filename specified.').'
'); + } + } } =pod =item Rename2($request, $user, $directory, $oldfile, $newfile) -Performs phase 2 procesing of a rename reequest. This is where the +Performs phase 2 processing of a rename reequest. This is where the actual rename is performed. Parameters @@ -761,26 +938,58 @@ Returns: sub Rename2 { - my ($request, $user, $directory, $oldfile, $newfile) = @_; + my ($request, $user, $directory, $oldfile, $newfile) = @_; - &Debug($request, "Rename2 directory: ".$directory." old file: ".$oldfile. - " new file ".$newfile."\n"); - &Debug($request, "Target is: ".$directory.'/'. - $newfile); - - if(-e $oldfile) { - unless(rename($oldfile, - $directory.'/'.$newfile)) { - $request->print('Error: '.$!.''); - return 0; - } else {} - } else { - $request->print("No such file: /home".$user.'/public_html'. - $oldfile.'
'); - return 0; - } - return 1; + &Debug($request, "Rename2 directory: ".$directory." old file: ".$oldfile. + " new file ".$newfile."\n"); + &Debug($request, "Target is: ".$directory.'/'. + $newfile); + if (-e $oldfile) { + + my $oRN=$oldfile; + my $nRN=$newfile; + unless (rename($oldfile,$newfile)) { + $request->print(''.&mt('Error').': '.$!.''); + return 0; + } + ## If old name.(extension) exits, move under new name. + ## If it doesn't exist and a new.(extension) exists + ## delete it (only concern when renaming over files) + my $tmp1=$oRN.'.meta'; + my $tmp2=$nRN.'.meta'; + if(-e $tmp1){ + unless(rename($tmp1,$tmp2)){ } + } elsif(-e $tmp2){ + unlink $tmp2; + } + $tmp1=$oRN.'.save'; + $tmp2=$nRN.'.save'; + if(-e $tmp1){ + unless(rename($tmp1,$tmp2)){ } + } elsif(-e $tmp2){ + unlink $tmp2; + } + $tmp1=$oRN.'.log'; + $tmp2=$nRN.'.log'; + if(-e $tmp1){ + unless(rename($tmp1,$tmp2)){ } + } elsif(-e $tmp2){ + unlink $tmp2; + } + $tmp1=$oRN.'.bak'; + $tmp2=$nRN.'.bak'; + if(-e $tmp1){ + unless(rename($tmp1,$tmp2)){ } + } elsif(-e $tmp2){ + unlink $tmp2; + } + } else { + $request->print("".&mt('No such file').": ".&display($oldfile).'
'); + return 0; + } + return 1; } + =pod =item Delete2($request, $user, $filename) @@ -799,8 +1008,8 @@ Parameters: =item $user - string [in] The name of the user initiating the delete request. -=item $filename - string [in] The name of the file, relative to construction space, - to delete. +=item $filename - string [in] The name of the file, relative to construction + space, to delete. =back @@ -811,18 +1020,34 @@ Returns: =cut sub Delete2 { - my ($request, $user, $filename) = @_; - - if(-e $filename) { - unless(unlink($filename)) { - $request->print('Error: '.$!.''); - return 0; + my ($request, $user, $filename) = @_; + if (-d $filename) { + unless (&empty_directory($filename,'Delete2')) { + $request->print(''.&mt('Error: Directory Non Empty').''); + return 0; + } else { + if(-e $filename) { + unless(rmdir($filename)) { + $request->print(''.&mt('Error').': '.$!.''); + return 0; + } + } else { + $request->print(''.&mt('No such file').'.
'); + return 0; + } + } + } else { + if(-e $filename) { + unless(unlink($filename)) { + $request->print(''.&mt('Error').': '.$!.''); + return 0; + } + } else { + $request->print(''.&mt('No such file').'.
'); + return 0; + } } - } else { - $request->print('No such file. print(''.&mt('Warning').': '.&mt('Name of new file is the same as name of old file').' - '.&mt('no action taken').'.'); + return 1; + } unless (copy($oldfile, $newfile)) { - $request->print(' copy Error: '.$!.''); + $request->print(''.&mt('copy Error').': '.$!.''); + return 0; + } elsif (!chmod(0660, $newfile)) { + $request->print(''.&mt('chmod error').': '.$!.''); + return 0; + } elsif (-e $oldfile.'.meta' && + !copy($oldfile.'.meta', $newfile.'.meta') && + !chmod(0660, $newfile.'.meta')) { + $request->print(''.&mt('copy metadata error'). + ': '.$!.''); return 0; } else { - unless (chmod(0660, $newfile)) { - $request->print(' chmod error: '.$!.''); - return 0; - } return 1; } } else { - $request->print('
No such file
'); + $request->print(''.&mt('No such file').'
'); return 0; } return 1; } + =pod =item NewDir2($request, $user, $newdirectory) @@ -896,17 +1131,28 @@ Returns 0 - failure 1 - success. =cut sub NewDir2 { - my ($request, $user, $newdirectory) = @_; + my ($request, $user, $newdirectory) = @_; - unless(mkdir($newdirectory, 02770)) { - $request->print('Error: '.$!.''); - return 0; - } - unless(chmod(02770, ($newdirectory))) { - $request->print(' Error: '.$!.''); - return 0; - } - return 1; + unless(mkdir($newdirectory, 02770)) { + $request->print(''.&mt('Error').': '.$!.''); + return 0; + } + unless(chmod(02770, ($newdirectory))) { + $request->print(''.&mt('Error').': '.$!.''); + return 0; + } + return 1; +} + +sub decompress2 { + my ($r, $user, $dir, $file) = @_; + &Apache::lonnet::appenv({'cgi.file' => $file}); + &Apache::lonnet::appenv({'cgi.dir' => $dir}); + my $result=&Apache::lonnet::ssi_body('/cgi-bin/decompress.pl'); + $r->print($result); + &Apache::lonnet::delenv('cgi.file'); + &Apache::lonnet::delenv('cgi.dir'); + return 1; } =pod @@ -946,182 +1192,224 @@ sub phasetwo { &Debug($r, "loncfile - Entering phase 2 for $fn"); - # Break down the file into it's component pieces. - - $fn=~/(.*)\/([^\/]+)\.(\w+)$/; - my $dir=$1; # Directory path - my $main=$2; # Filename. - my $suffix=$3; # Extension. - - my $dest; # On success this is where we'll go. + # Break down the file into its component pieces. - &Debug($r, - "loncfile::phase2 dir = $dir main = $main suffix = $suffix"); - &Debug($r, - " newfilename = ".$ENV{'form.newfilename'}); + my $dir; # Directory path + my $main; # Filename. + my $suffix; # Extension. + if ($fn=~m:(.*)/([^/]+):) { + $dir=$1; # Directory path + $main=$2; # Filename. + } + if($main=~m:\.(\w+)$:){ # Fixes problems with filenames with no extensions + $suffix=$1; #This is the actually filename extension if it exists + $main=~s/\.\w+$//; #strip the extension + } + my $dest; # + my $dest_dir; # On success this is where we'll go. + my $disp_newname; # + my $dest_newname; # + &Debug($r,"loncfile::phase2 dir = $dir main = $main suffix = $suffix"); + &Debug($r," newfilename = ".$env{'form.newfilename'}); my $conspace=$fn; - &Debug($r, - "loncfile::phase2 Full construction space name: $conspace"); + &Debug($r,"loncfile::phase2 Full construction space name: $conspace"); - &Debug($r, - "loncfie::phase2 action is $ENV{'form.action'}"); + &Debug($r,"loncfie::phase2 action is $env{'form.action'}"); # Select the appropriate processing sub. - - if ($ENV{'form.action'} eq 'rename') { # Rename. - if($ENV{'form.newfilename'}) { - if(!&Rename2($r, $uname, $dir, $fn, $ENV{'form.newfilename'})) { + if ($env{'form.action'} eq 'decompress') { + $main .= '.'.$suffix; + if(!&decompress2($r, $uname, $dir, $main)) { + return ; + } + $dest = $dir."/."; + } elsif ($env{'form.action'} eq 'rename' || + $env{'form.action'} eq 'move') { + if($env{'form.newfilename'}) { + if (!defined($dir)) { + $fn=~m:^(.*)/:; + $dir=$1; + } + if(!&Rename2($r, $uname, $dir, $fn, $env{'form.newfilename'})) { return; } - # Prepend the directory to the new name to form the basis of the - # url of the new resource. - # - $dest = $dir."/".$ENV{'form.newfilename'}; + $dest = $dir."/"; + $dest_newname = $env{'form.newfilename'}; + $env{'form.newfilename'} =~ /.+(\/.+$)/; + $disp_newname = $1; + $disp_newname =~ s/\///; } - } elsif ($ENV{'form.action'} eq 'delete') { - if(!&Delete2($r, $uname, $ENV{'form.newfilename'})) { + } elsif ($env{'form.action'} eq 'delete') { + if(!&Delete2($r, $uname, $env{'form.newfilename'})) { return ; } # Once a resource is deleted, we just list the directory that # previously held it. # - $dest = $dir."/"; # Parent dir. - } elsif ($ENV{'form.action'} eq 'copy') { - if($ENV{'form.newfilename'}) { - if(!&Copy2($r, $uname, $dir, $fn, $ENV{'form.newfilename'})) { - return - } - $dest = $ENV{'form.newfilename'}; - - } else { - $r->print('No New filename specified'); + $dest = $dir."/."; # Parent dir. + } elsif ($env{'form.action'} eq 'copy') { + if($env{'form.newfilename'}) { + if(!&Copy2($r, $uname, $dir, $fn, $env{'form.newfilename'})) { + return ; + } + $dest = $env{'form.newfilename'}; + } else { + $r->print('
'.&mt('No New filename specified').'
'); return; } - } elsif ($ENV{'form.action'} eq 'newdir') { - # - # Since the newfilename form field is construction space - # relative, ew need to prepend the current path; now in $fn. - # - my $newdir= $fn.$ENV{'form.newfilename'}; + } elsif ($env{'form.action'} eq 'newdir') { + my $newdir= $env{'form.newfilename'}; if(!&NewDir2($r, $uname, $newdir)) { return; } - $dest = $newdir."/" + $dest = $newdir."/"; + } + if ( ($env{'form.action'} eq 'newdir') && ($env{'form.phase'} eq 'two') && ( ($env{'form.callingmode'} eq 'testbank') || ($env{'form.callingmode'} eq 'imsimport') ) ) { + $r->print('Unknown Action'); - 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); - } + if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { + $r->print('
' + .&mt('Co-Author [_1]:[_2]',$uname,$udom) + .'
' + ); + } + + + &Debug($r, "loncfile::handler Form action is $env{'form.action'} "); + if ($env{'form.action'} eq 'delete') { + $r->print(''.&mt('Unknown Action').' '.$env{'form.action'}.'
'. + &Apache::loncommon::end_page()); + 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); + } - $r->print('