Diff for /loncom/publisher/loncfile.pm between versions 1.101 and 1.117

version 1.101, 2009/05/28 17:08:38 version 1.117, 2012/11/30 11:36:14
Line 68  use File::Basename; Line 68  use File::Basename;
 use File::Copy;  use File::Copy;
 use HTML::Entities();  use HTML::Entities();
 use Apache::Constants qw(:common :http :methods);  use Apache::Constants qw(:common :http :methods);
 use Apache::loncacc;  
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonlocal;  use Apache::lonlocal;
Line 102  my $r;    # Needs to be global for some Line 101  my $r;    # Needs to be global for some
 =cut  =cut
   
 sub Debug {  sub Debug {
     # Put out the indicated message butonly if DEBUG is true.      # Put out the indicated message but only if DEBUG is true.
     if ($DEBUG) {      if ($DEBUG) {
  my ($r,$message) = @_;   my ($r,$message) = @_;
  $r->log_reason($message);   $r->log_reason($message);
Line 110  sub Debug { Line 109  sub Debug {
 }  }
   
 sub done {  sub done {
    my ($url)=@_;      my ($url) = @_;
    my $done=&mt("Done");      return
    return(<<ENDDONE);         '<p>'
 <a href="$url">$done</a>        .&Apache::lonhtmlcommon::confirm_success(&mt("Done"))
 <script type="text/javascript">        .'<br /><a href="'.$url.'">'.&mt("Continue").'</a>'
 location.href="$url";        .'<script type="text/javascript">'
 </script>        .'location.href="'.$url.'";'
 ENDDONE        .'</script>'
         .'</p>';
 }  }
   
 =pod  =pod
Line 158  Global References Line 158  Global References
 sub URLToPath {  sub URLToPath {
     my $Url = shift;      my $Url = shift;
     &Debug($r, "UrlToPath got: $Url");      &Debug($r, "UrlToPath got: $Url");
     $Url=~ s/\/+/\//g;      $Url=~ s{^https?\://[^/]+}{};
     $Url=~ s/^https?\:\/\/[^\/]+//;      $Url=~ s{//+}{/}g;
     $Url=~ s/^\///;      $Url=~ s{^/}{};
     $Url=~ s/(\~|priv\/)($match_username)\//\/home\/$2\/public_html\//;      $Url=$Apache::lonnet::perlvar{'lonDocRoot'}."/$Url";
     &Debug($r, "Returning $Url \n");      &Debug($r, "Returning $Url \n");
     return $Url;      return $Url;
 }  }
   
 sub url {  sub url {
     my $fn=shift;      my $fn=shift;
     $fn=~s/^\/home\/($match_username)\/public\_html/\/priv\/$1/;      my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};
       $fn=~ s/^\Q$londocroot\E//;
       $fn=~s{/\./}{/}g;
     $fn=&HTML::Entities::encode($fn,'<>"&');      $fn=&HTML::Entities::encode($fn,'<>"&');
     return $fn;      return $fn;
 }  }
   
 sub display {  sub display {
     my $fn=shift;      my $fn=shift;
     $fn=~s-^/home/($match_username)/public_html-/priv/$1-;      my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};
       $fn=~s/^\Q$londocroot\E//;
       $fn=~s{/\./}{/}g;
     return '<span class="LC_filename">'.$fn.'</span>';      return '<span class="LC_filename">'.$fn.'</span>';
 }  }
   
Line 186  sub display { Line 190  sub display {
   
 sub obsolete_unpub {  sub obsolete_unpub {
     my ($user,$domain,$construct)=@_;      my ($user,$domain,$construct)=@_;
       my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};
     my $published=$construct;      my $published=$construct;
     $published=~      $published=~s{^\Q$londocroot/priv/\E}{$londocroot/res/};
  s/^\/home\/$user\/public\_html\//\/home\/httpd\/html\/res\/$domain\/$user\//;  
     if (-e $published) {      if (-e $published) {
  if (&Apache::lonnet::metadata($published,'obsolete')) {   if (&Apache::lonnet::metadata($published,'obsolete')) {
     return 1;      return 1;
Line 202  sub obsolete_unpub { Line 206  sub obsolete_unpub {
 # see if directory is empty  # see if directory is empty
 # ignores any .meta, .save, .bak, and .log files created for a previously  # ignores any .meta, .save, .bak, and .log files created for a previously
 # published file, which has since been marked obsolete and deleted.  # published file, which has since been marked obsolete and deleted.
   # ignores a .DS_Store file put there when viewing directory via webDAV on MacOS. 
 sub empty_directory {  sub empty_directory {
     my ($dirname,$phase) = @_;      my ($dirname,$phase) = @_;
     if (opendir DIR, $dirname) {      if (opendir DIR, $dirname) {
         my @files = grep(!/^\.\.?$/, readdir(DIR)); # ignore . and ..          my @files = grep(!/^\.\.?$/, readdir(DIR)); # ignore . and ..
         if (@files) {           if (@files) { 
             my @orphans = grep(/\.(meta|save|log|bak)$/,@files);              my @orphans = grep(/\.(meta|save|log|bak|DS_Store)$/,@files);
             if (scalar(@files) - scalar(@orphans) > 0) {               if (scalar(@files) - scalar(@orphans) > 0) { 
                 return 0;                  return 0;
             } else {              } else {
Line 269  sub exists { Line 274  sub exists {
     my ($user, $domain, $construct, $creating) = @_;      my ($user, $domain, $construct, $creating) = @_;
     $creating ||= 'file';      $creating ||= 'file';
   
       my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};
     my $published=$construct;      my $published=$construct;
     $published=~      $published=~s{^\Q$londocroot/priv/\E}{$londocroot/res/};
  s{^/home/$user/public_html/}{/home/httpd/html/res/$domain/$user/};  
     my ($type,$result);      my ($type,$result);
     if ( -d $construct ) {      if ( -d $construct ) {
  return ('error','<p><span class="LC_error">'.&mt('Error: destination for operation is an existing directory.').'</span></p>');   return ('error','<p><span class="LC_error">'.&mt('Error: destination for operation is an existing directory.').'</span></p>');
Line 345  sub checksuffix { Line 350  sub checksuffix {
 }  }
   
 sub cleanDest {  sub cleanDest {
     my ($request,$dest,$subdir,$fn,$uname)=@_;      my ($request,$dest,$subdir,$fn,$uname,$udom)=@_;
     #remove bad characters      #remove bad characters
     my $foundbad=0;      my $foundbad=0;
       my $error='';
     if ($subdir && $dest =~/\./) {      if ($subdir && $dest =~/\./) {
  $foundbad=1;   $foundbad=1;
  $dest=~s/\.//g;   $dest=~s/\.//g;
Line 359  sub cleanDest { Line 365  sub cleanDest {
     }      }
     if ($dest=~m|/|) {      if ($dest=~m|/|) {
  my ($newpath)=($dest=~m|(.*)/|);   my ($newpath)=($dest=~m|(.*)/|);
  $newpath=&relativeDest($fn,$newpath,$uname);   ($newpath,$error)=&relativeDest($fn,$newpath,$uname,$udom);
  if (! -d "$newpath") {   if (! -d "$newpath") {
     $request->print('<p><span class="LC_warning">'      $request->print('<p><span class="LC_warning">'
                            .&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."                             .&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."
                                ,'<span class="LC_filename">'.&display($newpath).'</span>')                                 ,&display($newpath))
                            .'</span></p>');                             .'</span></p>');
     $dest=~s|.*/||;      $dest=~s|.*/||;
  }   }
     }      }
     if ($dest =~ /\.(\d+)\.(\w+)$/){      if ($dest =~ /\.(\d+)\.(\w+)$/){
  $request->print('<p><span class="LC_warning">'   $request->print('<p><span class="LC_warning">'
  .&mt('Bad filename [_1]','<span class="LC_filename">'.&display($dest).'</span>')   .&mt('Bad filename [_1]',&display($dest))
                         .'<br />'                          .'<br />'
                         .&mt('[_1](name).(number).(extension)[_2] not allowed.','<tt>','</tt>')                          .&mt('[_1](name).(number).(extension)[_2] not allowed.','<tt>','</tt>')
                         .'<br />'                          .'<br />'
Line 384  sub cleanDest { Line 390  sub cleanDest {
                         .'</span></p>'                          .'</span></p>'
         );          );
     }      }
     return $dest;      return ($dest,$error);
 }  }
   
 sub relativeDest {  sub relativeDest {
     my ($fn,$newfilename,$uname)=@_;      my ($fn,$newfilename,$uname,$udom)=@_;
       my $error = '';
     if ($newfilename=~/^\//) {      if ($newfilename=~/^\//) {
 # absolute, simply add path  # absolute, simply add path
  $newfilename='/home/'.$uname.'/public_html/';          my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};
    $newfilename="$londocroot/res/$udom/$uname/";
     } else {      } else {
  my $dir=$fn;   my $dir=$fn;
  $dir=~s/\/[^\/]+$//;   $dir=~s{/[^/]+$}{};
  $newfilename=$dir.'/'.$newfilename;   $newfilename=$dir.'/'.$newfilename;
     }      }
     $newfilename=~s://+:/:g; # remove duplicate /      $newfilename=~s{//+}{/}g; # remove duplicate /
     while ($newfilename=~m:/\.\./:) {      while ($newfilename=~m{/\.\./}) {
  $newfilename=~ s:/[^/]+/\.\./:/:g; #remove dir/..   $newfilename=~ s{/[^/]+/\.\./}{/}g; #remove dir/..
       }
       my ($authorname,$authordom)=&Apache::lonnet::constructaccess($newfilename);
       unless (($authorname) && ($authordom)) {
          my $otherdir = &display($newfilename);
          $error = &mt('Access denied to [_1]',$otherdir);
     }      }
     return $newfilename;      return ($newfilename,$error);
 }  }
   
 =pod  =pod
Line 424  Parameters: Line 437  Parameters:
   
 sub CloseForm1 {  sub CloseForm1 {
     my ($request,  $fn) = @_;      my ($request,  $fn) = @_;
     $request->print('<p><input type="submit" value="'.&mt('Continue').'" /></p></form>');      $request->print('<input type="submit" value="'.&mt('Continue').'" /></form>');
     $request->print('<form action="'.&url($fn).      $request->print(' <form action="'.&url($fn).'" method="post">'.
     '" method="post"><p><input type="submit" value="'.&mt('Cancel').'" /></p></form>');                      '<input type="submit" value="'.&mt('Cancel').'" /></form>');
 }  }
   
   
Line 552  sub Rename1 { Line 565  sub Rename1 {
             $request->print('<input type="hidden" name="newfilename" value="'              $request->print('<input type="hidden" name="newfilename" value="'
                            .$newfilename.'" />'                             .$newfilename.'" />'
                            .'<p>'                             .'<p>'
                            .&mt($action.' [_1] to [_2]?'                             .&mt($action.' [_1] to [_2]?',
                                ,&display($fn),&display($newfilename))                                  &display($fn),
                                   &display($newfilename))
                            .'</p>'                             .'</p>'
         );          );
     &CloseForm1($request, $fn);      &CloseForm1($request, $fn);
Line 563  sub Rename1 { Line 577  sub Rename1 {
  }   }
     } else {      } else {
         $request->print('<p class="LC_error">'          $request->print('<p class="LC_error">'
                        .&mt('No such file: [_1]'                         .&mt('No such file: [_1]',
                            ,'<span class="LC_filename">'.&display($fn).'</span>')                              &display($fn))
                        .'</p></form>'                         .'</p></form>'
         );          );
  return;   return;
Line 625  sub Delete1 { Line 639  sub Delete1 {
     }      }
         }          }
         $request->print('<p>'          $request->print('<p>'
                        .&mt('Delete [_1]?'                         .&mt('Delete [_1]?',
                            ,'<span class="LC_filename">'.&display($fn).'</span>')                              &display($fn))
                        .'</p>'                         .'</p>'
         );          );
  &CloseForm1($request, $fn);   &CloseForm1($request, $fn);
     } else {      } else {
         $request->print('<p class="LC_error">'          $request->print('<p class="LC_error">'
                        .&mt('No such file: [_1]'                         .&mt('No such file: [_1]',
                            ,'<span class="LC_filename">'.&display($fn).'</span>')                              &display($fn))
                        .'</p></form>'                         .'</p></form>'
         );          );
     }      }
Line 689  sub Copy1 { Line 703  sub Copy1 {
     $request->print('<br /><a href="'.&url($fn).'">'.&mt('Cancel').'</a>');      $request->print('<br /><a href="'.&url($fn).'">'.&mt('Cancel').'</a>');
     return;      return;
  }   }
         $request->print('<input type="hidden" name="newfilename" value="'      $request->print(
                        .$newfilename.'" />'          '<input type="hidden" name="newfilename"'
                        .'<p>'         .' value="'.$newfilename.'" />'
                        .&mt('Copy [_1] to [_2]?'         .'<p>'
                            ,'<span class="LC_filename">'.&display($fn).'</span>'         .&mt('Copy [_1] to [_2]?',
                            ,'<span class="LC_filename">'.&display($newfilename).'</span>')              &display($fn),
                        .'</p>'              &display($newfilename))
          .'</p>'
         );          );
  &CloseForm1($request, $fn);   &CloseForm1($request, $fn);
     } else {      } else {
         $request->print('<p class="LC_error">'          $request->print('<p class="LC_error">'
                        .&mt('No such file: [_1]'                         .&mt('No such file: [_1]',
                            ,'<span class="LC_filename">'.&display($fn).'</span>')                              &display($fn))
                        .'</p></form>'                         .'</p></form>'
         );          );
     }      }
Line 754  sub NewDir1 { Line 769  sub NewDir1 {
     if ($type eq 'error') {      if ($type eq 'error') {
  $request->print('</form>');   $request->print('</form>');
     } else {      } else {
  if ($mode eq 'testbank') {   if (($mode eq 'testbank') || ($mode eq 'imsimport')) {
     $request->print('<input type="hidden" name="callingmode" value="testbank" />');      $request->print('<input type="hidden" name="callingmode" value="'.$mode.'" />'."\n".
  } elsif ($mode eq 'imsimport') {                              '<input type="hidden" name="inhibitmenu" value="yes" />');
     $request->print('<input type="hidden" name="callingmode" value="imsimport" />');  
  }   }
         $request->print('<input type="hidden" name="newfilename" value="'          $request->print('<input type="hidden" name="newfilename" value="'
                        .$newfilename.'" />'                         .$newfilename.'" />'
                        .'<p>'                         .'<p>'
                        .&mt('Make new directory [_1]?'                         .&mt('Make new directory [_1]?',
                            ,'<span class="LC_filename">'.&display($newfilename).'</span>')                              &display($newfilename))
                        .'</p>'                         .'</p>'
         );          );
  &CloseForm1($request, $fn);   &CloseForm1($request, $fn);
Line 776  sub Decompress1 { Line 790  sub Decompress1 {
     if( -e $fn) {      if( -e $fn) {
     $request->print('<input type="hidden" name="newfilename" value="'.$fn.'" />');      $request->print('<input type="hidden" name="newfilename" value="'.$fn.'" />');
     $request->print('<p>'      $request->print('<p>'
                    .&mt('Decompress [_1]?'                     .&mt('Decompress [_1]?',
                        ,'<span class="LC_filename">'.&display($fn).'</span>')                          &display($fn))
                    .'</p>'                     .'</p>'
     );      );
     &CloseForm1($request, $fn);      &CloseForm1($request, $fn);
     } else {      } else {
         $request->print('<p class="LC_error">'          $request->print('<p class="LC_error">'
                        .&mt('No such file: [_1]'                         .&mt('No such file: [_1]',
                            ,'<span class="LC_filename">'.&display($fn).'</span>')                              &display($fn))
                        .'</p></form>'                         .'</p></form>'
         );          );
     }      }
Line 824  Side Effects: Line 838  Side Effects:
 =item 2 new forms are displayed.  Clicking on the confirmation button  =item 2 new forms are displayed.  Clicking on the confirmation button
 causes the browser to attempt to load the specfied URL, allowing the  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  proper handler to take care of file creation. There is also a Cancel
 button which returns you to the driectory listing you came from  button which returns you to the directory listing you came from
   
 =back  =back
   
Line 855  sub NewFile1 { Line 869  sub NewFile1 {
             $extension = $1;              $extension = $1;
         }          }
   
         my @okexts = qw(xml html xhtml htm xhtm problem page sequence rights sty library js css txt);          my @okexts = qw(xml html xhtml htm xhtm problem page sequence rights sty task library js css txt);
         if (($extension eq '') || (!grep(/^\Q$extension\E/,@okexts))) {          if (($extension eq '') || (!grep(/^\Q$extension\E/,@okexts))) {
             my $validexts = '.'.join(', .',@okexts);              my $validexts = '.'.join(', .',@okexts);
             $request->print('<p class="LC_warning">'.              $request->print('<p class="LC_warning">'.
Line 935  sub phaseone { Line 949  sub phaseone {
       
     my $doingdir=0;      my $doingdir=0;
     if ($env{'form.action'} eq 'newdir') { $doingdir=1; }      if ($env{'form.action'} eq 'newdir') { $doingdir=1; }
     my $newfilename=&cleanDest($r,$env{'form.newfilename'},$doingdir,$fn,$uname);      my ($newfilename,$error) = 
     $newfilename=&relativeDest($fn,$newfilename,$uname);          &cleanDest($r,$env{'form.newfilename'},$doingdir,$fn,$uname,$udom);
       unless ($error) {
           ($newfilename,$error)=&relativeDest($fn,$newfilename,$uname,$udom);
       }
       if ($error) {
           my $dirlist;
           if ($fn=~m{^(.*/)[^/]+$}) {
               $dirlist=$1;
           } else {
               $dirlist=$fn; 
           }
           $r->print('<div class="LC_error">'.$error.'</div>'.
                     '<p><a href="'.&url($dirlist).'">'.&mt('Return to Directory').
                     '</a></p>');
           return;
       }
     $r->print('<form action="/adm/cfile" method="post">'.      $r->print('<form action="/adm/cfile" method="post">'.
       '<input type="hidden" name="qualifiedfilename" value="'.$fn.'" />'.        '<input type="hidden" name="qualifiedfilename" value="'.$fn.'" />'.
       '<input type="hidden" name="phase" value="two" />'.        '<input type="hidden" name="phase" value="two" />'.
Line 1069  sub Rename2 { Line 1098  sub Rename2 {
     unlink $tmp2;      unlink $tmp2;
  }   }
     } else {      } else {
         $request->print('<p>'          $request->print(
                        .&mt('No such file: [_1]'              '<p class="LC_error">'
                            ,'<span class="LC_filename">'.&display($oldfile).'</span>')             .&mt('No such file: [_1]',
                        .'</p></form>'                  &display($oldfile))
              .'</p></form>'
         );          );
  return 0;   return 0;
     }      }
Line 1357  sub phasetwo { Line 1387  sub phasetwo {
  $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') ) ) {      if ( ($env{'form.action'} eq 'newdir') && ($env{'form.phase'} eq 'two') && ( ($env{'form.callingmode'} eq 'testbank') || ($env{'form.callingmode'} eq 'imsimport') ) ) {
  $r->print('<h3><a href="javascript:self.close()">'.&mt('Done').'</a></h3>');          $r->print(
               '<p>'
              .&Apache::lonhtmlcommon::confirm_success(&mt('Done'))
              .'<br /><a href="javascript:self.close()">'.&mt('Continue').'</a>'
              .'</p>'
           );
     } else {      } else {
         if ($env{'form.action'} eq 'rename') {          if ($env{'form.action'} eq 'rename') {
             $r->print('<h3><a href="'.&url($dest).'">'.&mt('Return to Directory').'</a></h3>');              $r->print(
             $r->print('<h3><a href="'.&url($dest_newname).'">'.$disp_newname.'</a></h3>');                   '<p>'.&Apache::lonhtmlcommon::confirm_success(&mt('Done')).'</p>'
                   .&Apache::lonhtmlcommon::actionbox(
                        ['<a href="'.&url($dest).'">'.&mt('Return to Directory').'</a>',
                         '<a href="'.&url($dest_newname).'">'.$disp_newname.'</a>']));
         } else {          } else {
     $r->print(&done(&url($dest)));      $r->print(&done(&url($dest)));
  }   }
Line 1411  sub handler { Line 1449  sub handler {
     }       } 
   
 # ----------------------------------------------------------- Start page output  # ----------------------------------------------------------- Start page output
     my $uname;  
     my $udom;  
   
     ($uname,$udom)=      my ($uname,$udom) = &Apache::lonnet::constructaccess($fn);
  &Apache::loncacc::constructaccess($fn,$r->dir_config('lonDefDomain'));  
     &Debug($r,       &Debug($r, 
    "loncfile::handler constructaccess uname = $uname domain = $udom");     "loncfile::handler constructaccess uname = $uname domain = $udom");
     unless (($uname) && ($udom)) {      if (($uname eq '') || ($udom eq '')) {
  $r->log_reason($uname.' at '.$udom.   $r->log_reason($uname.' at '.$udom.
        ' trying to manipulate file '.$env{'form.filename'}.         ' trying to manipulate file '.$env{'form.filename'}.
        ' ('.$fn.') - not authorized',          ' ('.$fn.') - not authorized', 
Line 1445  function writeDone() { Line 1480  function writeDone() {
 |;  |;
  $loaditem{'onload'} = "writeDone()";   $loaditem{'onload'} = "writeDone()";
     }      }
   
       my $londocroot = $r->dir_config('lonDocRoot');
       my $trailfile = $fn;
       $trailfile =~ s{^/(priv/)}{$londocroot/$1};
           
     # Breadcrumbs      # Breadcrumbs
     &Apache::lonhtmlcommon::clear_breadcrumbs();      &Apache::lonhtmlcommon::clear_breadcrumbs();
     &Apache::lonhtmlcommon::add_breadcrumb({      &Apache::lonhtmlcommon::add_breadcrumb({
         'text'  => 'Construction Space',          'text'  => 'Construction Space',
         'href'  => &Apache::loncommon::authorspace(),          'href'  => &Apache::loncommon::authorspace($fn),
     });      });
     &Apache::lonhtmlcommon::add_breadcrumb({      &Apache::lonhtmlcommon::add_breadcrumb({
         'text'  => 'File Operation',          'text'  => 'File Operation',
Line 1463  function writeDone() { Line 1502  function writeDone() {
      {'add_entries' => \%loaditem,})       {'add_entries' => \%loaditem,})
              .&Apache::lonhtmlcommon::breadcrumbs()               .&Apache::lonhtmlcommon::breadcrumbs()
              .&Apache::loncommon::head_subbox(               .&Apache::loncommon::head_subbox(
                   &Apache::loncommon::CSTR_pageheader())                    &Apache::loncommon::CSTR_pageheader($trailfile))
     );      );
       
     $r->print('<h3>'.&mt('Location').': '.&display($fn).'</h3>');      $r->print('<p>'.&mt('Location').': '.&display($fn).'</p>');
       
     if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) {      if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) {
         $r->print('<p class="LC_warning">'          $r->print('<p class="LC_info">'
                  .&mt('Co-Author [_1]',$uname.':'.$udom)                   .&mt('Co-Author [_1]',$uname.':'.$udom)
                  .'</p>'                   .'</p>'
         );          );
Line 1477  function writeDone() { Line 1516  function writeDone() {
   
   
     &Debug($r, "loncfile::handler Form action is $env{'form.action'} ");      &Debug($r, "loncfile::handler Form action is $env{'form.action'} ");
     if ($env{'form.action'} eq 'delete') {      my %action = &Apache::lonlocal::texthash(
       $r->print('<h3>'.&mt('Delete').'</h3>');          'delete'          => 'Delete',
     } elsif ($env{'form.action'} eq 'rename') {          'rename'          => 'Rename',
  $r->print('<h3>'.&mt('Rename').'</h3>');          'move'            => 'Move',
     } elsif ($env{'form.action'} eq 'move') {          'newdir'          => 'New Directory',
  $r->print('<h3>'.&mt('Move').'</h3>');          'decompress'      => 'Decompress',
     } elsif ($env{'form.action'} eq 'newdir') {          'copy'            => 'Copy',
  $r->print('<h3>'.&mt('New Directory').'</h3>');          'newfile'         => 'New Resource',
     } elsif ($env{'form.action'} eq 'decompress') {   'newhtmlfile'     => 'New Resource',
  $r->print('<h3>'.&mt('Decompress').'</h3>');   'newproblemfile'  => 'New Resource',
     } elsif ($env{'form.action'} eq 'copy') {   'newpagefile'     => 'New Resource',
  $r->print('<h3>'.&mt('Copy').'</h3>');   'newsequencefile' => 'New Resource',
     } elsif ($env{'form.action'} eq 'newfile' ||   'newrightsfile'   => 'New Resource',
      $env{'form.action'} eq 'newhtmlfile' ||   'newstyfile'      => 'New Resource',
      $env{'form.action'} eq 'newproblemfile' ||   'newtaskfile'     => 'New Resource',
      $env{'form.action'} eq 'newpagefile' ||          'newlibraryfile'  => 'New Resource',
      $env{'form.action'} eq 'newsequencefile' ||   'Select Action'   => 'New Resource',
      $env{'form.action'} eq 'newrightsfile' ||      );
      $env{'form.action'} eq 'newstyfile' ||      if ($action{$env{'form.action'}}) {
      $env{'form.action'} eq 'newtaskfile' ||          $r->print('<h2>'.$action{$env{'form.action'}}.'</h2>');
              $env{'form.action'} eq 'newlibraryfile' ||  
      $env{'form.action'} eq 'Select Action' ) {  
  $r->print('<h3>'.&mt('New Resource').'</h3>');  
     } else {      } else {
         $r->print('<p class="LC_error">'          $r->print('<p class="LC_error">'
                  .&mt('Unknown Action').' '.$env{'form.action'}                   .&mt('Unknown Action: [_1]',$env{'form.action'})
                  .'</p>'                   .'</p>'
                  .&Apache::loncommon::end_page()                   .&Apache::loncommon::end_page()
         );          );
  return OK;            return OK;
     }      }
   
     if ($env{'form.phase'} eq 'two') {      if ($env{'form.phase'} eq 'two') {
  &Debug($r, "loncfile::handler  entering phase2");   &Debug($r, "loncfile::handler  entering phase2");
  &phasetwo($r,$fn,$uname,$udom);   &phasetwo($r,$fn,$uname,$udom);

Removed from v.1.101  
changed lines
  Added in v.1.117


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