Diff for /loncom/publisher/loncfile.pm between versions 1.22 and 1.28

version 1.22, 2003/02/04 21:54:17 version 1.28, 2003/03/08 01:41:53
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 336  sub exists { Line 335  sub exists {
       return 'Error: destination for operation is a directory.';        return 'Error: destination for operation is a directory.';
   }    }
   if ( -e $published) {    if ( -e $published) {
       $result.='<p><font color=red>Warning: target file exists, and has been published!</font></p>';        $result.='<p><font color="red">Warning: target file exists, and has been published!</font></p>';
   }    }
   elsif ( -e $construct) {    elsif ( -e $construct) {
       $result.='<p><font color=red>Warning: target file exists!</font></p>';        $result.='<p><font color="red">Warning: target file exists!</font></p>';
   }    }
   
   return $result;    return $result;
Line 384  sub checksuffix { Line 383  sub checksuffix {
     if ($old=~m:(.*)/+([^/]+)\.(\w+)$:) { $oldsuffix=$3; }      if ($old=~m:(.*)/+([^/]+)\.(\w+)$:) { $oldsuffix=$3; }
     if ($oldsuffix ne $newsuffix) {      if ($oldsuffix ne $newsuffix) {
  $result.=   $result.=
             '<p><font color=red>Warning: change of MIME type!</font></p>';              '<p><font color="red">Warning: change of MIME type!</font></p>';
     }      }
     return $result;      return $result;
 }  }
Line 411  sub CloseForm1 { Line 410  sub CloseForm1 {
   
   
    &Debug($request, "Cancel url is: ".$cancelurl);     &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="'.$cancelurl.     $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 445  Parameters: Line 444  Parameters:
 sub CloseForm2 {  sub CloseForm2 {
   my ($request, $user, $directory) = @_;    my ($request, $user, $directory) = @_;
   
   $request->print('<h3><a=href="/priv/'.$user.$directory.'/">Done </a> </h3>');    $request->print('<h3><a href="/priv/'.$user.$directory.'/">Done </a> </h3>');
 }  }
   
 =pod  =pod
Line 495  sub Rename1 { Line 494  sub Rename1 {
     if(-e $conspace) {      if(-e $conspace) {
  if($ENV{'form.newfilename'}) {   if($ENV{'form.newfilename'}) {
     my $newfilename = $ENV{'form.newfilename'};      my $newfilename = $ENV{'form.newfilename'};
       if ($newfilename =~ m|^[^\.]+$|) {
    #no extension add on orignal extension
    if ($filename =~ m|/[^\.]*\.([^\.]+)$|) {
       $newfilename.='.'.$1;
    }
       }
     $request->print(&checksuffix($filename, $newfilename));      $request->print(&checksuffix($filename, $newfilename));
       #renaming a dir, delete the trailing /
               #remove last element for current dir
       if ($filename =~ m|/$|) {
    $filename =~ s|/$||;
    $dir =~ s|/[^/]*$||;
       }
     my $return=&exists($user, $domain, $dir, $newfilename);      my $return=&exists($user, $domain, $dir, $newfilename);
     $request->print($return);      $request->print($return);
     if ($return =~/^Error:/) {      if ($return =~/^Error:/) {
Line 503  sub Rename1 { Line 514  sub Rename1 {
  return;   return;
     }      }
     my $dest=&SimplifyDir($dir,$newfilename);      my $dest=&SimplifyDir($dir,$newfilename);
     $request->print('<input type=hidden name=newfilename value="'.      $request->print('<input type="hidden" name="newfilename" value="'.
     $newfilename.      $newfilename.
     '"><p>Rename <tt>'.$filename.'</tt><br /> to <tt>'.      '" /><p>Rename <tt>'.$filename.
       '</tt><br /> to <tt>'.
     $dest.'</tt>?</p>');      $dest.'</tt>?</p>');
     &CloseForm1($request, $cancelurl);      &CloseForm1($request, $cancelurl);
  } else {   } else {
Line 551  sub Delete1 { Line 563  sub Delete1 {
       
   
   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, $cancelurl);      &CloseForm1($request, $cancelurl);
   } else {    } else {
Line 606  sub Copy1 { Line 618  sub Copy1 {
  return;   return;
     }      }
     my $dest=&SimplifyDir($dir,$newfilename);      my $dest=&SimplifyDir($dir,$newfilename);
     $request->print('<input type = hidden name = newfilename value = "'.      $request->print('<input type = "hidden" name = "newfilename" value = "'.
     $dir.'/'.$newfilename.      $dir.'/'.$newfilename.
     '"><p>Copy <tt>'.$filename.'</tt><br />  to '.      '" /><p>Copy <tt>'.$filename.'</tt><br />  to '.
     '<tt>'.$dest.'</tt>?</p>');      '<tt>'.$dest.'</tt>?</p>');
     &CloseForm1($request, $cancelurl);      &CloseForm1($request, $cancelurl);
   } else {    } else {
Line 696  sub NewDir1 Line 708  sub NewDir1
     $request->print('<p>Directory exists.</p></form>');      $request->print('<p>Directory exists.</p></form>');
   }    }
   else {    else {
     $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, $cancelurl);      &CloseForm1($request, $cancelurl);
   
Line 758  sub NewFile1 { Line 770  sub NewFile1 {
     if ($ENV{'form.action'} =~ /new(.+)file/) {      if ($ENV{'form.action'} =~ /new(.+)file/) {
  my $extension=$1;   my $extension=$1;
  if ($newfilename !~ /\Q.$extension\E$/) {   if ($newfilename !~ /\Q.$extension\E$/) {
       if ($newfilename =~ m|^[^\.]*\.([^\.]+)$|) {
    #already has an extension strip it and add in expected one
    $newfilename =~ s|.([^\.]+)$||;
       }
     $newfilename.=".$extension";      $newfilename.=".$extension";
  }   }
     }      }
Line 770  sub NewFile1 { Line 786  sub NewFile1 {
  $request->print('<p>File exists.</p></form>');   $request->print('<p>File exists.</p></form>');
     }      }
     else {      else {
  $request->print('<p>Make new file <tt>'.$newfilename.'</tt>?</p>');   $request->print('<p>Make new file <tt>'.$dir.'/'.$newfilename.'</tt>?</p>');
  my $dest=&MakeFinalUrl($request,$fullpath);   my $dest=&MakeFinalUrl($request,$fullpath);
  &Debug($request, "Cancel url is: ".$cancelurl);   &Debug($request, "Cancel url is: ".$cancelurl);
  &Debug($request, "Dest url is: ".$dest);   &Debug($request, "Dest url is: ".$dest);
Line 821  sub phaseone { Line 837  sub phaseone {
   #  my $conspace=ConstructionPathFromRelative($uname, $fn);    #  my $conspace=ConstructionPathFromRelative($uname, $fn);
       
       
   $r->print('<form action=/adm/cfile method=post>'.    $r->print('<form action="/adm/cfile" method="post">'.
     '<input type=hidden name=filename value="/~'.$uname.$fn.'">'.      '<input type="hidden" name="filename" value="/~'.$uname.$fn.'" />'.
     '<input type=hidden name=phase value=two>'.      '<input type="hidden" name="phase" value="two" />'.
     '<input type=hidden name=action value='.$ENV{'form.action'}.'>');      '<input type="hidden" name="action" value="'.$ENV{'form.action'}.'" />');
       
   if ($ENV{'form.action'} eq 'rename') {    if ($ENV{'form.action'} eq 'rename') {
             if (!defined($dir)) {
     &Rename1($r, $fn, $uname, $udom, $dir);    $fn=~m:(.*)/:;
         $dir=$1;
         }
         &Rename1($r, $fn, $uname, $udom, $dir);
   } elsif ($ENV{'form.action'} eq 'delete') {     } elsif ($ENV{'form.action'} eq 'delete') { 
           
     &Delete1($r, $uname, $fn);      &Delete1($r, $uname, $fn);
Line 845  sub phaseone { Line 863  sub phaseone {
     &NewDir1($r, $uname, $dir, $ENV{'form.newfilename'});      &NewDir1($r, $uname, $dir, $ENV{'form.newfilename'});
   }  elsif ($ENV{'form.action'} eq 'newfile' ||    }  elsif ($ENV{'form.action'} eq 'newfile' ||
     $ENV{'form.action'} eq 'newhtmlfile' ||      $ENV{'form.action'} eq 'newhtmlfile' ||
     $ENV{'form.action'} eq 'newproblemfile') {      $ENV{'form.action'} eq 'newproblemfile' ||
     if($ENV{'form.newfilename'}) {              $ENV{'form.action'} eq 'newpagefile' ||
       my $newfilename = $ENV{'form.newfilename'};              $ENV{'form.action'} eq 'newsequencefile') {
       if (!defined($dir)) {        if($ENV{'form.newfilename'}) {
   $fn=~m:(.*)/:;    my $newfilename = $ENV{'form.newfilename'};
   $dir=$1;    if (!defined($dir)) {
         $fn=~m:(.*)/:;
         $dir=$1;
     }
     &NewFile1($r, $uname, $udom, $dir, $newfilename);
         } else {
     $r->print('<p>No new filename specified.</p></form>');
       }        }
       &NewFile1($r, $uname, $udom, $dir, $fn, $newfilename);  
     }else {  
       $r->print('<p>No new filename specified.</p></form>');  
     }  
   }    }
 }  }
   
Line 903  sub Rename2 { Line 923  sub Rename2 {
  $newfile);   $newfile);
   
   if(-e $oldfile) {    if(-e $oldfile) {
       unless(rename($oldfile,        my $dest;
     $directory.'/'.$newfile)) {  
   $request->print('<font color=red>Error: '.$!.'</font>');        if ($oldfile =~ m|/$|) {
     #renaming a dir
     $oldfile =~ s|/$||;
     $dest=$directory;
     $dest=~s|(/)([^/]*)$|$1|;
     $dest.='/'.$newfile;
         } else {
     $dest=$directory.'/'.$newfile;
         }
   
         unless(rename($oldfile,$dest)) {
     $request->print('<font color="red">Error: '.$!.'</font>');
   return 0;    return 0;
       } else {}        } else {}
   } else {    } else {
Line 949  sub Delete2 { Line 980  sub Delete2 {
   
   if(-e $filename) {    if(-e $filename) {
     unless(unlink($filename)) {      unless(unlink($filename)) {
       $request->print('<font color=red>Error: '.$!.'</font>');        $request->print('<font color="red">Error: '.$!.'</font>');
       return 0;        return 0;
     }      }
   } else {    } else {
     $request->print('<p> No such file. </form');      $request->print('<p> No such file. </p></form');
     return 0;      return 0;
   }    }
   return 1;    return 1;
Line 992  sub Copy2 { Line 1023  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> copy Error: '.$!.'</font>');      $request->print('<font color="red"> copy Error: '.$!.'</font>');
     return 0;      return 0;
  } else {   } else {
     unless (chmod(0660, $newfile)) {      unless (chmod(0660, $newfile)) {
  $request->print('<font color=red> chmod error: '.$!.'</font>');   $request->print('<font color="red"> chmod error: '.$!.'</font>');
  return 0;   return 0;
     }      }
     return 1;      return 1;
Line 1033  sub NewDir2 { Line 1064  sub NewDir2 {
   my ($request, $user, $newdirectory) = @_;    my ($request, $user, $newdirectory) = @_;
       
   unless(mkdir($newdirectory, 02770)) {    unless(mkdir($newdirectory, 02770)) {
     $request->print('<font color=red>Error: '.$!.'</font>');      $request->print('<font color="red">Error: '.$!.'</font>');
     return 0;      return 0;
   }    }
   unless(chmod(02770, ($newdirectory))) {    unless(chmod(02770, ($newdirectory))) {
       $request->print('<font color=red> Error: '.$!.'</font>');        $request->print('<font color="red"> Error: '.$!.'</font>');
       return 0;        return 0;
   }    }
   return 1;    return 1;
Line 1082  sub phasetwo { Line 1113  sub phasetwo {
           
     # Break down the file into it's component pieces.      # Break down the file into it's component pieces.
           
     $fn=~/(.*)\/([^\/]+)\.(\w+)$/;      my $dir; # Directory path
     my $dir=$1; # Directory path      my $main; # Filename.
     my $main=$2; # Filename.      my $suffix; # Extension.
     my $suffix=$3; # Extension.  
           if ($fn=~m:(.*)/([^/]+)\.(\w+)$:) {
    $dir=$1; # Directory path
    $main=$2; # Filename.
    $suffix=$3; # Extension.
       }
           
     my $dest;                   # On success this is where we'll go.      my $dest;                   # On success this is where we'll go.
           
     &Debug($r,       &Debug($r, 
Line 1106  sub phasetwo { Line 1142  sub phasetwo {
           
     if ($ENV{'form.action'} eq 'rename') { # Rename.      if ($ENV{'form.action'} eq 'rename') { # Rename.
  if($ENV{'form.newfilename'}) {   if($ENV{'form.newfilename'}) {
       if (!defined($dir)) {
    $fn=~m:^(.*)/:;
    $dir=$1;
       }
     if(!&Rename2($r, $uname, $dir, $fn, $ENV{'form.newfilename'})) {      if(!&Rename2($r, $uname, $dir, $fn, $ENV{'form.newfilename'})) {
  return;   return;
     }      }
     # Prepend the directory to the new name to form the basis of the      # Prepend the directory to the new name to form the basis of the
     # url of the new resource.      # url of the new resource.
     #      #
       #renaming a dir
               #remove last element for current dir
       if ($fn =~ m|/$|) { $dir =~ s|/[^/]*$||; }
     $dest = $dir."/".$ENV{'form.newfilename'};      $dest = $dir."/".$ENV{'form.newfilename'};
  }   }
     } elsif ($ENV{'form.action'} eq 'delete') {       } elsif ($ENV{'form.action'} eq 'delete') { 
Line 1130  sub phasetwo { Line 1173  sub phasetwo {
     $dest = $ENV{'form.newfilename'};      $dest = $ENV{'form.newfilename'};
             
  } else {   } else {
     $r->print('<p>No New filename specified</form>');      $r->print('<p>No New filename specified</p></form>');
     return;      return;
  }   }
   
Line 1227  sub handler { Line 1270  sub handler {
   $r->print('<html><head><title>LON-CAPA Construction Space</title></head>');    $r->print('<html><head><title>LON-CAPA Construction Space</title></head>');
   
   $r->print(    $r->print(
    '<body bgcolor="#FFFFFF"><img align=right src=/adm/lonIcons/lonlogos.gif>');     '<body bgcolor="#FFFFFF"><img align="right" src="/adm/lonIcons/lonlogos.gif" />');
   
       
   $r->print('<h1>Construction Space <tt>'.$fn.'</tt></h1>');    $r->print('<h1>Construction Space <tt>'.$fn.'</tt></h1>');
       
   if (($uname ne $ENV{'user.name'}) || ($udom ne $ENV{'user.domain'})) {    if (($uname ne $ENV{'user.name'}) || ($udom ne $ENV{'user.domain'})) {
           $r->print('<h3><font color=red>Co-Author: '.$uname.' at '.$udom.            $r->print('<h3><font color="red">Co-Author: '.$uname.' at '.$udom.
                '</font></h3>');                 '</font></h3>');
   }    }
   
Line 1250  sub handler { Line 1293  sub handler {
       $r->print('<h3>Copy</h3>');        $r->print('<h3>Copy</h3>');
   } elsif ($ENV{'form.action'} eq 'newfile' ||    } elsif ($ENV{'form.action'} eq 'newfile' ||
    $ENV{'form.action'} eq 'newhtmlfile' ||     $ENV{'form.action'} eq 'newhtmlfile' ||
    $ENV{'form.action'} eq 'newproblemfile') {     $ENV{'form.action'} eq 'newproblemfile' ||
              $ENV{'form.action'} eq 'newpagefile' ||
              $ENV{'form.action'} eq 'newsequencefile' ) {
       $r->print('<h3>New Resource</h3>');        $r->print('<h3>New Resource</h3>');
   } else {    } else {
      $r->print('<p>Unknown Action</body></html>');       $r->print('<p>Unknown Action</p></body></html>');
      return OK;         return OK;  
   }    }
   if ($ENV{'form.phase'} eq 'two') {    if ($ENV{'form.phase'} eq 'two') {

Removed from v.1.22  
changed lines
  Added in v.1.28


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