--- loncom/publisher/loncfile.pm 2003/11/08 10:48:33 1.43 +++ loncom/publisher/loncfile.pm 2003/12/13 19:54:16 1.46 @@ -9,7 +9,7 @@ # and displays a page showing the results of the action. # # -# $Id: loncfile.pm,v 1.43 2003/11/08 10:48:33 albertel Exp $ +# $Id: loncfile.pm,v 1.46 2003/12/13 19:54:16 taceyjo1 Exp $ # # Copyright Michigan State University Board of Trustees # @@ -110,7 +110,7 @@ sub Debug { # Put out the indicated message butonly if DEBUG is true. if ($DEBUG) { - $log->debug($message); + $r->log_reason($message); } } @@ -579,6 +579,17 @@ sub NewDir1 } } + +sub Decompress1 { + my ($request, $user, $domain, $fn) = @_; + if( -e $fn) { + $request->print(''); + $request->print('

Decompress '.&display($fn).'?

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

No such file: '.&display($fn).'

'); + } +} =pod =item NewFile1 @@ -687,7 +698,6 @@ sub phaseone { my $newfilename=&cleanDest($r,$ENV{'form.newfilename'}); $newfilename=&relativeDest($fn,$newfilename,$uname); - $r->print('
'. ''. ''. @@ -697,6 +707,8 @@ sub phaseone { &Rename1($r, $uname, $udom, $fn, $newfilename); } elsif ($ENV{'form.action'} eq 'delete') { &Delete1($r, $uname, $udom, $fn); + } elsif ($ENV{'form.action'} eq 'decompress') { + &Decompress1($r, $uname, $udom, $fn); } elsif ($ENV{'form.action'} eq 'copy') { if($newfilename) { &Copy1($r, $uname, $udom, $fn, $newfilename); @@ -839,16 +851,40 @@ Returns: sub Delete2 { my ($request, $user, $filename) = @_; - - if(-e $filename) { - unless(unlink($filename)) { - $request->print('Error: '.$!.''); + if(opendir DIR, $filename) { + my @files=readdir(DIR); + shift @files; shift @files; # takes off . and .. + if(@files) { + $request->print(' Error: Directory Non Empty'); return 0; } - } else { - $request->print('

No such file.

print('Error: '.$!.''); + return 0; + } + } + else { + $request->print('

No such file.

print('Error: '.$!.''); + return 0; + } + } + else { + $request->print('

No such 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 =item phasetwo($r, $fn, $uname, $udom) @@ -978,13 +1023,14 @@ sub phasetwo { my $dir; # Directory path my $main; # Filename. my $suffix; # Extension. - - if ($fn=~m:(.*)/([^/]+)\.(\w+)$:) { + if ($fn=~m:(.*)/([^/]+):) { $dir=$1; # Directory path $main=$2; # Filename. - $suffix=$3; # Extension. - } - + } + if($main=~m:\.(\w+)$:){ # Fixes problems with filenames with no extensions + $main=$`; + $suffix=$1; + } my $dest; # On success this is where we'll go. &Debug($r, @@ -1001,8 +1047,16 @@ sub phasetwo { "loncfie::phase2 action is $ENV{'form.action'}"); # Select the appropriate processing sub. - - if ($ENV{'form.action'} eq 'rename') { # Rename. + if ($ENV{'form.action'} eq 'decompress') { + $main .= '.'; + $main .= $suffix; + if(!&decompress2($r, $uname, $dir, $main)) { + return ; + } + $dest = $dir."/."; + + + } elsif ($ENV{'form.action'} eq 'rename') { # Rename. if($ENV{'form.newfilename'}) { if (!defined($dir)) { $fn=~m:^(.*)/:; @@ -1024,7 +1078,7 @@ sub phasetwo { } elsif ($ENV{'form.action'} eq 'copy') { if($ENV{'form.newfilename'}) { if(!&Copy2($r, $uname, $dir, $fn, $ENV{'form.newfilename'})) { - return + return ; } $dest = $ENV{'form.newfilename'}; @@ -1059,9 +1113,20 @@ sub handler { my $fn; if ($ENV{'form.filename'}) { + + &Debug($r, "test: $ENV{'form.filename'}"); $fn=&Apache::lonnet::unescape($ENV{'form.filename'}); $fn=&URLToPath($fn); - } elsif ($ENV{'form.qualifiedfilename'}) { + } + #Just hijack the script only the first time around to inject the correct information for further processing + elsif($ENV{'QUERY_STRING'} && $ENV{'form.phase'} ne 'two') { + &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['decompress']); + $fn=&Apache::lonnet::unescape($ENV{'form.decompress'}); + $fn=&URLToPath($fn); + $ENV{'form.action'}="decompress"; + } + + elsif ($ENV{'form.qualifiedfilename'}) { $fn=$ENV{'form.qualifiedfilename'}; } else { &Debug($r, "loncfile::handler - no form.filename"); @@ -1118,6 +1183,8 @@ sub handler { $r->print('

Rename

'); } elsif ($ENV{'form.action'} eq 'newdir') { $r->print('

New Directory

'); + } elsif ($ENV{'form.action'} eq 'decompress') { + $r->print('

Decompress

'); } elsif ($ENV{'form.action'} eq 'copy') { $r->print('

Copy

'); } elsif ($ENV{'form.action'} eq 'newfile' ||