Diff for /loncom/publisher/loncfile.pm between versions 1.12 and 1.17

version 1.12, 2002/07/28 02:16:59 version 1.17, 2002/09/02 20:06:57
Line 7 Line 7
 #  presents a page that describes the proposed action to the user  #  presents a page that describes the proposed action to the user
 #  and requests confirmation.  The second phase commits the action  #  and requests confirmation.  The second phase commits the action
 #  and displays a page showing the results of the action.  #  and displays a page showing the results of the action.
 #  # 
   
 #  #
 # $Id$  # $Id$
Line 69  directory. Line 69  directory.
 =head1 INTRODUCTION  =head1 INTRODUCTION
   
   loncfile is invoked when buttons in the top frame of the construction     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  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  confirms the operation, the second phase commits the operation and indicates
 completion.  When the user dismisses the output of phase2, they are returned to  completion.  When the user dismisses the output of phase2, they are returned to
Line 86  package Apache::loncfile; Line 86  package Apache::loncfile;
   
 use strict;  use strict;
 use Apache::File;  use Apache::File;
   use File::Basename;
 use File::Copy;  use File::Copy;
 use Apache::Constants qw(:common :http :methods);  use Apache::Constants qw(:common :http :methods);
 use Apache::loncacc;  use Apache::loncacc;
 use Apache::Log ();  use Apache::Log ();
   use Apache::lonnet;
   
 my $DEBUG=0;  my $DEBUG=0;
 my $r; # Needs to be global for some stuff RF.  my $r; # Needs to be global for some stuff RF.
Line 98  my $r;    # Needs to be global for some Line 100  my $r;    # Needs to be global for some
   
 =item Debug($request, $message)  =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    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:   Parameters:
   
 =over 4  =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  =back
       
Line 153  sub Debug { Line 155  sub Debug {
   
 =over 4  =over 4
   
 =item  The corresponing file system path.   =item  The corresponding file system path. 
   
 =back  =back
   
Line 180  sub URLToPath { Line 182  sub URLToPath {
   
 =item PublicationPath($domain, $user, $dir, $file)  =item PublicationPath($domain, $user, $dir, $file)
   
    Determines the filesystem path corersponding to a published resource     Determines the filesystem path corresponding to a published resource
    specification.  The returned value is the path.     specification.  The returned value is the path.
 Parameters:  Parameters:
   
Line 191  Parameters: Line 193  Parameters:
   
 =item   $user   - string [in] Name of the user asking about the resource.  =item   $user   - string [in] Name of the user asking about the resource.
   
 =item   $dir    - Directory pathr elatvie to the top of the resource space0  =item   $dir    - Directory path relative to the top of the resource space.
   
 =item   $file   - name of the resource file itself without path info.  =item   $file   - name of the resource file itself without path info.
   
Line 219  sub PublicationPath Line 221  sub PublicationPath
   
 =item ConstructionPath($domain, $user, $dir, $file)  =item ConstructionPath($domain, $user, $dir, $file)
   
    Determines the filesystem path corersponding to a construction space     Determines the filesystem path corresponding to a construction space
    resource specification.  The returned value is the path     resource specification.  The returned value is the path
 Parameters:  Parameters:
   
Line 227  Parameters: Line 229  Parameters:
   
 =item   $user   - string [in] Name of the user asking about the resource.  =item   $user   - string [in] Name of the user asking about the resource.
   
 =item   $dir    - Directory path relatvie to the top of the resource space  =item   $dir    - Directory path relative to the top of the resource space.
   
 =item   $file   - name of the resource file itself without path info.  =item   $file   - name of the resource file itself without path info.
   
Line 285  sub ConstructionPathFromRelative { Line 287  sub ConstructionPathFromRelative {
   
 =item exists($user, $domain, $directory, $file)  =item exists($user, $domain, $directory, $file)
   
    Determine if a resource file name has been publisehd or exists     Determine if a resource file name has been published or exists
    in the construction space.     in the construction space.
   
  Parameters:   Parameters:
Line 360  as a result of this operation. Line 362  as a result of this operation.
   
 =over 4  =over 4
   
 =item    Empty string if everythikng worked.  =item    Empty string if everything worked.
   
 =item    String containing an error message if there was a problem.  =item    String containing an error message if there was a problem.
   
Line 393  Parameters: Line 395  Parameters:
   
 =item  $request - Apache Request Object [in] - Apache server request object.  =item  $request - Apache Request Object [in] - Apache server request object.
   
 =item  $user    - string [in] - Name of the user initiating the request.  =item  $cancelurl - the url to go to on cancel.
   
 =item  $file    - A filename.  
   
 =back  =back
   
 =cut  =cut
   
 sub CloseForm1 {  sub CloseForm1 {
    my ($request, $user, $file) = @_;     my ($request,  $cancelurl) = @_;
    my $url = "/priv/".$file;  
      
      
    $url =~ s/public_html\///;  
    $url =~ s/\/home//;  
    $url =~ s/\/\//\//;  
   
      &Debug($request, "Cancel url is: ".$cancelurl);
    $request->print('<p><input type=submit value=Continue></p></form>');     $request->print('<p><input type=submit value=Continue></p></form>');
    $request->print('<form action="'.$url.     $request->print('<form action="'.$cancelurl.
    '" method=GET"><p><input type=submit value=Cancel><p></form>');     '" method=GET"><p><input type=submit value=Cancel><p></form>');
   
 }  }
Line 487  sub Rename1 { Line 483  sub Rename1 {
     &Debug($request, "Username - ".$user." filename: ".$filename."\n");      &Debug($request, "Username - ".$user." filename: ".$filename."\n");
     my $conspace = $filename;      my $conspace = $filename;
   
       my $cancelurl = "/priv/".$filename;
       $cancelurl    =~ s/\/home\///;
       $cancelurl    =~ s/\/public_html//;
           
     if(-e $conspace) {      if(-e $conspace) {
  if($ENV{'form.newfilename'}) {   if($ENV{'form.newfilename'}) {
Line 497  sub Rename1 { Line 496  sub Rename1 {
     $newfilename.      $newfilename.
     '"><p>Rename <tt>'.$filename.'</tt> to <tt>'.      '"><p>Rename <tt>'.$filename.'</tt> to <tt>'.
     $dir.'/'.$newfilename.'</tt>?</p>');      $dir.'/'.$newfilename.'</tt>?</p>');
     &CloseForm1($request, $user, $filename);      &CloseForm1($request, $cancelurl);
  } else {   } else {
     $request->print('<p>No new filename specified</p></form>');      $request->print('<p>No new filename specified</p></form>');
     return;      return;
Line 524  Parameters: Line 523  Parameters:
   
 =item   $user      - string [in] Name of session user.  =item   $user      - string [in] Name of session user.
   
   
 =item   $filename  - string [in] Name fo the file to be deleted:  =item   $filename  - string [in] Name fo the file to be deleted:
                 Filename is the full filesystem path to the file.                  Filename is the full filesystem path to the file.
   
Line 532  Parameters: Line 532  Parameters:
 =cut  =cut
   
 sub Delete1 {  sub Delete1 {
   my ($request, $user, $filename) = @_;    my ($request, $user,  $filename) = @_;
   
     my $cancelurl = '/priv/'.$filename;
     $cancelurl    =~ s/\/home\///;
     $cancelurl    =~ s/\/public_html//;
     
   
   if( -e $filename) {    if( -e $filename) {
     $request->print('<input type=hidden name=newfilename value="'.      $request->print('<input type=hidden name=newfilename value="'.
     $filename.'">');      $filename.'">');
     $request->print('<p> Delete <tt>'.$filename.'</tt>?</p>');      $request->print('<p> Delete <tt>'.$filename.'</tt>?</p>');
     &CloseForm1($request, $user, $filename);      &CloseForm1($request, $cancelurl);
   } else {    } else {
     $request->print('<p> No Such file: <tt>'.$filename.'</tt></p></form>');      $request->print('<p> No Such file: <tt>'.$filename.'</tt></p></form>');
   }    }
Line 549  sub Delete1 { Line 554  sub Delete1 {
 =item Copy1($request, $user, $domain, $filename, $newfilename)  =item Copy1($request, $user, $domain, $filename, $newfilename)
   
    Performs phase 1 processing of the construction space copy command.     Performs phase 1 processing of the construction space copy command.
    Ensure that the source fil eexists.  Ensure that a destination exists,     Ensure that the source file exists.  Ensure that a destination exists,
    also warn if the detination already exists.     also warn if the destination already exists.
   
 Parameters:  Parameters:
   
Line 576  Parameters: Line 581  Parameters:
 sub Copy1 {  sub Copy1 {
   my ($request, $user, $domain, $dir, $filename, $newfilename) = @_;    my ($request, $user, $domain, $dir, $filename, $newfilename) = @_;
   
     my $cancelurl = "/priv/".$filename;
     $cancelurl    =~ s/\/home\///;
     $cancelurl    =~ s/\/public_html//;
       
   
   
   if(-e $filename) {    if(-e $filename) {
     $request->print(&checksuffix($filename,$newfilename));      $request->print(&checksuffix($filename,$newfilename));
Line 584  sub Copy1 { Line 594  sub Copy1 {
     $dir.'/'.$newfilename.      $dir.'/'.$newfilename.
     '"><p>Copy <tt>'.$filename.'</tt> to'.      '"><p>Copy <tt>'.$filename.'</tt> to'.
     '<tt>'.$dir.'/'.$newfilename.'</tt>/?</p>');      '<tt>'.$dir.'/'.$newfilename.'</tt>/?</p>');
     &CloseForm1($request, $user, $filename);      &CloseForm1($request, $cancelurl);
   } else {    } else {
     $request->print('<p>No such file <tt>'.$filename.'</p></form>');      $request->print('<p>No such file <tt>'.$filename.'</p></form>');
   }    }
Line 603  Parameters: Line 613  Parameters:
 =over 4  =over 4
   
 =item   $request  - Apache Request Object [in] - Server request object for the  =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   $username - Name of the user that is requesting the directory creation.
   
 =item   $path     - current directory relative to construction spacee.  =item   $path     - current directory relative to construction space.
   
 =item   $newdir   - Name of the directory to be created; path relative to the   =item   $newdir   - Name of the directory to be created; path relative to the 
                top level of construction space.                 top level of construction space.
Line 633  sub NewDir1 Line 643  sub NewDir1
   
   my $fullpath = '/home/'.$username.'/public_html/'.    my $fullpath = '/home/'.$username.'/public_html/'.
     $path.'/'.$newdir;      $path.'/'.$newdir;
   Debug($request, "Full path is : ".$fullpath);  
     my $cancelurl = '/priv/'.$username.'/'.$path;
   
     &Debug($request, "Full path is : ".$fullpath);
   
   if(-e $fullpath) {    if(-e $fullpath) {
     $request->print('<p>Directory exists.</p></form>');      $request->print('<p>Directory exists.</p></form>');
Line 642  sub NewDir1 Line 655  sub NewDir1
     $request->print('<input type=hidden name=newfilename value="'.      $request->print('<input type=hidden name=newfilename value="'.
     $newdir.'"><p>Make new directory <tt>'.      $newdir.'"><p>Make new directory <tt>'.
     $path."/".$newdir.'</tt>?</p>');      $path."/".$newdir.'</tt>?</p>');
     &CloseForm1($request, $username, $newdir);      &CloseForm1($request, $cancelurl);
   
   }    }
 }  }
Line 669  performed and reported to the user. Line 682  performed and reported to the user.
   
 =item $uname - string [in] Name of user logged in and doing this action.  =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  =back
   
Line 716  sub phaseone { Line 729  sub phaseone {
   
 =item Rename2($request, $user, $directory, $oldfile, $newfile)  =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.  actual rename is performed.
   
 Parameters  Parameters
Line 786  Parameters: Line 799  Parameters:
 =item $user    - string [in]  The name of the user initiating the delete  =item $user    - string [in]  The name of the user initiating the delete
                  request.                   request.
   
 =item $filename - string [in] The name of the file, relative to construction space,  =item $filename - string [in] The name of the file, relative to construction
                   to delete.                    space, to delete.
   
 =back  =back
   
Line 845  sub Copy2 { Line 858  sub Copy2 {
     &Debug($request ,"Will try to copy $oldfile to $newfile");      &Debug($request ,"Will try to copy $oldfile to $newfile");
     if(-e $oldfile) {      if(-e $oldfile) {
  unless (copy($oldfile, $newfile)) {   unless (copy($oldfile, $newfile)) {
     $request->print('<font color=red> Error: '.$!.'</font>');      $request->print('<font color=red> copy Error: '.$!.'</font>');
     return 0;      return 0;
  } else {   } else {
       unless (chmod(0660, $newfile)) {
    $request->print('<font color=red> chmod error: '.$!.'</font>');
    return 0;
       }
     return 1;      return 1;
  }   }
     } else {      } else {
Line 1001  sub phasetwo { Line 1018  sub phasetwo {
     &Debug($r, "Final url is: $dest");      &Debug($r, "Final url is: $dest");
     $dest =~ s/\/home\//\/priv\//;      $dest =~ s/\/home\//\/priv\//;
     $dest =~ s/\/public_html//;      $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");      &Debug($r, "Final url after rewrite: $dest");
   
     $r->print('<h3><a href="'.$dest.'">Done</a></h3>');      $r->print('<h3><a href="'.$dest.'">Done</a></h3>');

Removed from v.1.12  
changed lines
  Added in v.1.17


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>