Diff for /loncom/publisher/lonupload.pm between versions 1.44 and 1.64

version 1.44, 2009/03/26 16:50:12 version 1.64, 2013/07/03 05:03:19
Line 1 Line 1
   
 # The LearningOnline Network with CAPA  # The LearningOnline Network with CAPA
 # Handler to upload files into construction space  # Handler to upload files into construction space
 #  #
Line 70  Start page output Line 69  Start page output
   
 =item *  =item *
   
 output relevant interface phase (phaseone or phasetwo or phasethree)  output relevant interface phase (phaseone, phasetwo, phasethree or phasefour)
   
 =item *  =item *
   
Line 99  as overwriting an existing file). Line 98  as overwriting an existing file).
 Interface for handling secondary uploads of embedded objects  Interface for handling secondary uploads of embedded objects
 in an html file.  in an html file.
   
   =item phasefour()
   
   Interface for handling optional renaming of links to embedded
   objects. 
   
 =item upfile_store()  =item upfile_store()
   
 Store contents of uploaded file into temporary space.  Invoked  Store contents of uploaded file into temporary space.  Invoked
Line 121  use Apache::File; Line 125  use Apache::File;
 use File::Copy;  use File::Copy;
 use File::Basename;  use File::Basename;
 use Apache::Constants qw(:common :http :methods);  use Apache::Constants qw(:common :http :methods);
 use Apache::loncacc;  
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonnet;  use Apache::lonnet;
 use HTML::Entities();  use HTML::Entities();
Line 158  sub upfile_store { Line 161  sub upfile_store {
 }  }
   
 sub phaseone {  sub phaseone {
     my ($r,$fn,$uname,$udom,$mode)=@_;      my ($r,$fn,$mode,$uname,$udom)=@_;
     my $action = '/adm/upload';      my $action = '/adm/upload';
     if ($mode eq 'testbank') {      if ($mode eq 'testbank') {
         $action = '/adm/testbank';          $action = '/adm/testbank';
     } elsif ($mode eq 'imsimport') {      } elsif ($mode eq 'imsimport') {
         $action = '/adm/imsimport';          $action = '/adm/imsimport';
     }      }
   
       # Check for file to be uploaded
     $env{'form.upfile.filename'}=~s/\\/\//g;      $env{'form.upfile.filename'}=~s/\\/\//g;
     $env{'form.upfile.filename'}=~s/^.*\/([^\/]+)$/$1/;      $env{'form.upfile.filename'}=~s/^.*\/([^\/]+)$/$1/;
     if ($env{'form.upfile.filename'}) {      if (!$env{'form.upfile.filename'}) {
  $fn=~s/\/[^\/]+$//;          $r->print('<p class="LC_warning">'.&mt('No upload file specified.').'</p>'.
  $fn=~s/([^\/])$/$1\//;                    &earlyout($fn,$uname,$udom));
  $fn.=$env{'form.upfile.filename'};          return;
  $fn=~s/^\///;      }
  $fn=~s/(\/)+/\//g;  
       # Append the name of the uploaded file
 #    Fn is the full path to the destination filename.      $fn.=$env{'form.upfile.filename'};
 #          $fn=~s/(\/)+/\//g;
   
  &Debug($r, "Filename for upload: $fn");      # Check for illegal filename
  if (($fn) && ($fn!~/\/$/)) {      &Debug($r, "Filename for upload: $fn");
     $r->print('<form action="'.$action.'" method="post" name="fileupload">'.      if (!(($fn) && ($fn!~/\/$/))) {
       '<input type="hidden" name="phase" value="two" />'.          $r->print('<p class="LC_warning">'.&mt('Illegal filename.').'</p>');
       '<input type="hidden" name="datatoken" value="'.          return;
       &upfile_store.'" />'.      }
       '<input type="hidden" name="uploaduname" value="'.$uname.      # Check if quota exceeded
       '" />'.&mt('Save uploaded file as [_1]',      my $filesize = length($env{'form.upfile'});
                       "<span class='LC_filename'>/priv/$uname/</span>".      if (!$filesize) {
                       '<input type="text" size="50" name="filename" value="'.$fn.          $r->print('<p class="LC_warning">'.
                       '" />').                    &mt('Unable to upload [_1]. (size = [_2] bytes)',
                       '<br />'.                        '<span class="LC_filename">'.$env{'form.upfile.filename'}.'</span>',
       '<br />'.&mt('Choose file type:').'                        $filesize).'<br />'.
 <select name="filetype">                    &mt('Either the file you attempted to upload was empty, or your web browser was unable to read its contents.').'<br />'.
  <option value="standard" selected>'.&mt('Regular file').'                    '</p>'.
  <option value="testbank">'.&mt('Testbank file').'                    &earlyout($fn,$uname,$udom));
  <option value="imsimport">'.&mt('IMS package').'          return;
 </select>'.&Apache::loncommon::help_open_topic("Uploading_File_Options").'      }
 <br />      $filesize = int($filesize/1000); #expressed in kb
 <br />      my $authorspace = $Apache::lonnet::perlvar{'lonDocRoot'}."/priv/$udom/$uname";
 ');      my $output = &Apache::loncommon::excess_filesize_authorspace($uname,$udom,$authorspace,
             $r->print('<input type="button" value="'.&mt('Save').'" onClick="javascript:verifyForm()"/></form>');                                                                   $env{'form.upfile.filename'},$filesize,'upload');
     # Check for bad extension and warn user      if ($output) {
     if ($fn=~/\.(\w+)$/ &&           $r->print($output.&earlyout($fn,$uname,$udom));
  (&Apache::loncommon::fileembstyle($1) eq 'hdn')) {          return;
       }
   
   # Split part that I can change from the part that I cannot change
       my ($fn1,$fn2)=($fn=~/^(\/priv\/[^\/]+\/[^\/]+\/)(.*)$/);
       # Display additional options for upload
       # and upload button
       $r->print(
           '<form action="'.$action.'" method="post" name="fileupload">'
          .'<input type="hidden" name="phase" value="two" />'
          .'<input type="hidden" name="datatoken" value="'.&upfile_store.'" />'
       );
       $r->print(
           &Apache::lonhtmlcommon::start_pick_box()
          .&Apache::lonhtmlcommon::row_title(&mt('Save uploaded file as'))
          .'<span class="LC_filename">'.$fn1.'</span>'
          .'<input type="hidden" name="filename1" value="'.$fn1.'" />'
          .'<input type="text" size="50" name="filename2" value="'.$fn2.'" />'
          .&Apache::lonhtmlcommon::row_closure()
          .&Apache::lonhtmlcommon::row_title(&mt('File Type'))
          .'<select name="filetype">'
          .'<option value="standard" selected="selected">'.&mt('Regular file').'</option>'
          .'<option value="testbank">'.&mt('Testbank file').'</option>'
          .'<option value="imsimport">'.&mt('IMS package').'</option>'
          .'</select>'.&Apache::loncommon::help_open_topic("Uploading_File_Options")
          .&Apache::lonhtmlcommon::row_closure(1)
          .&Apache::lonhtmlcommon::end_pick_box()
       );
       $r->print(
           '<p>'
          .'<input type="button" value="'.&mt('Upload').'" onclick="javascript:verifyForm()"/>'
          .'</p>'
          .'</form>'
       );
   
      # Check for bad extension and warn user
       if ($fn=~/\.(\w+)$/ && 
           (&Apache::loncommon::fileembstyle($1) eq 'hdn')) {
                 $r->print('<p class="LC_error">'                  $r->print('<p class="LC_error">'
                           .&mt('The extension on this file, [_1], is reserved internally by LON-CAPA.','"'.$1.'"')                            .&mt('The extension on this file, [_1], is reserved internally by LON-CAPA.',
                                  '<span class="LC_filename">'.$1.'</span>')
                           .' <br />'.&mt('Please change the extension.')                            .' <br />'.&mt('Please change the extension.')
                           .'</p>');                            .'</p>');
     } elsif($fn=~/\.(\w+)$/ &&       } elsif($fn=~/\.(\w+)$/ && 
     !defined(&Apache::loncommon::fileembstyle($1))) {                      !defined(&Apache::loncommon::fileembstyle($1))) {
                 $r->print('<p class="LC_error">'                  $r->print('<p class="LC_error">'
                          .&mt('The extension on this file, [_1], is not recognized by LON-CAPA.','"'.$1.'"')                           .&mt('The extension on this file, [_1], is not recognized by LON-CAPA.',
                                 '<span class="LC_filename">'.$1.'</span>')
                          .' <br />'.&mt('Please change the extension.')                           .' <br />'.&mt('Please change the extension.')
                          .'</p>');                           .'</p>');
     }  
  } else {  
     $r->print('<span class="LC_error">'.&mt('Illegal filename.').'</span>');  
  }  
     } else {  
  $r->print('<span class="LC_error">'.&mt('No upload file specified.').'</span>');  
     }      }
 }  }
   
 sub phasetwo {  sub phasetwo {
     my ($r,$tfn,$uname,$udom,$mode)=@_;      my ($r,$fn,$mode)=@_;
   
     my $output;      my $output;
     my $action = '/adm/upload';      my $action = '/adm/upload';
     my $returnflag = '';      my $returnflag = '';
Line 231  sub phasetwo { Line 270  sub phasetwo {
     } elsif ($mode eq 'imsimport') {      } elsif ($mode eq 'imsimport') {
         $action = '/adm/imsimport';          $action = '/adm/imsimport';
     }      }
     my $fn='/priv/'.$uname.'/'.$tfn;  
     $fn=~s/\/+/\//g;      $fn=~s/\/+/\//g;
     &Debug($r, "Filename is ".$tfn);      if ($fn) {
     if ($tfn) {   my $target= $r->dir_config('lonDocRoot').'/'.$fn;
  &Debug($r, "Filename for tfn = ".$tfn);  
  my $target='/home/'.$uname.'/public_html'.$tfn;  
  &Debug($r, "target -> ".$target);   &Debug($r, "target -> ".$target);
 #     target is the full filesystem path of the destination file.  #     target is the full filesystem path of the destination file.
  my $base = &File::Basename::basename($fn);   my $base = &File::Basename::basename($fn);
Line 250  sub phasetwo { Line 286  sub phasetwo {
                 my $source=$r->dir_config('lonDaemons').'/tmp/'.$datatoken.'.tmp';                  my $source=$r->dir_config('lonDaemons').'/tmp/'.$datatoken.'.tmp';
                 my $dirpath=$path.'/';                  my $dirpath=$path.'/';
                 $dirpath=~s/\/+/\//g;                  $dirpath=~s/\/+/\//g;
                 $output .= &mt('Upload cancelled.').'<br /><font size="+2"><a href="'.$dirpath.'">'.                  $output .= '<p class="LC_warning">'.&mt('Upload cancelled.').'</p>'
                           &mt('Back to Directory').'</a></font>';                            .'<p><a href="'.$dirpath.'">'.
     } elsif ((-e $target) && (!$env{'form.override'})) {                            &mt('Back to Directory').'</a></p>';
  $output .= '<form action="'.$action.'" method="post">'.              } elsif ((-e $target) && (!$env{'form.override'})) {
   &mt('File [_1] exists. Overwrite?','<span class="LC_filename">'.$fn.'</span>').                  $output .= '<form action="'.$action.'" method="post">'
   '<input type="hidden" name="phase" value="two" />'.                            .'<p class="LC_warning">'
   '<input type="hidden" name="filename" value="'.$url.'" />'.                            .&mt('File [_1] already exists.',
   '<input type="hidden" name="datatoken" value="'.$datatoken.'" />'.                                 '<span class="LC_filename">'.$fn.'</span>')
   '<input type="submit" name="override" value="'.&mt('Yes').'" />'.                           .'<input type="hidden" name="phase" value="two" />'
                           '<input type="submit" name="cancel" value="'.&mt('Cancel').'" />'.                           .'<input type="hidden" name="filename" value="'.$url.'" />'
                           '</form>';                           .'<input type="hidden" name="datatoken" value="'.$datatoken.'" />'
                            .'<p>'
                            .'<input type="submit" name="cancel" value="'.&mt('Cancel').'" />'
                            .' <input type="submit" name="override" value="'.&mt('Overwrite').'" />'
                            .'</p>'
                            .'</form>';
             } else {              } else {
  my $source=$r->dir_config('lonDaemons').'/tmp/'.$datatoken.'.tmp';   my $source=$r->dir_config('lonDaemons').'/tmp/'.$datatoken.'.tmp';
  my $dirpath=$path.'/';   my $dirpath=$path.'/';
Line 289  sub check_extension { Line 330  sub check_extension {
     # Check for bad extension and disallow upload      # Check for bad extension and disallow upload
     if ($fn=~/\.(\w+)$/ &&      if ($fn=~/\.(\w+)$/ &&
         (&Apache::loncommon::fileembstyle($1) eq 'hdn')) {          (&Apache::loncommon::fileembstyle($1) eq 'hdn')) {
         $result .= &mt('File [_1] could not be copied.',          $result .= '<p class="LC_warning">'.
                       '<span class="LC_filename">'.$fn.'</span> ').                     &mt('File [_1] could not be copied.',
                   '<p class="LC_error">'.                         '<span class="LC_filename">'.$fn.'</span> ').
                   &mt('The extension on this file is reserved internally by LON-CAPA.').                     '<br />'.
                   '</p>';                     &mt('The extension on this file is reserved internally by LON-CAPA.').
                      '</p>';
     } elsif ($fn=~/\.(\w+)$/ &&      } elsif ($fn=~/\.(\w+)$/ &&
              !defined(&Apache::loncommon::fileembstyle($1))) {               !defined(&Apache::loncommon::fileembstyle($1))) {
         $result .= &mt('File [_1] could not be copied.',          $result .= '<p class="LC_warning">'.
                       '<span class="LC_filename">'.$fn.'</span> ').                     &mt('File [_1] could not be copied.',
                   '<p class="LC_error">'.                         '<span class="LC_filename">'.$fn.'</span> ').
                   &mt('The extension on this file is not recognized by LON-CAPA.').                     '<br />'.
                   '</p>';                     &mt('The extension on this file is not recognized by LON-CAPA.').
                      '</p>';
     } elsif (-d $target) {      } elsif (-d $target) {
         $result .= &mt('File [_1] could not be copied.',          $result .= '<p class="LC_warning">'.
                       '<span class="LC_filename">'.$fn.'</span>').                     &mt('File [_1] could not be copied.',
                   '<p class="LC_error">'.                         '<span class="LC_filename">'.$fn.'</span>').
                   &mt('The target is an existing directory.').                     '<br />'.
                   '</p>';                     &mt('The target is an existing directory.').
                      '</p>';
     } elsif (copy($source,$target)) {      } elsif (copy($source,$target)) {
         chmod(0660, $target); # Set permissions to rw-rw---.          chmod(0660, $target); # Set permissions to rw-rw---.
         if ($mode eq 'testbank' || $mode eq 'imsimport') {          if ($mode eq 'testbank' || $mode eq 'imsimport') {
             $returnflag = 'ok';              $returnflag = 'ok';
             $result .= &mt('Your file - [_1] - was uploaded successfully',$fn).'<br /><br />';              $result .= '<p class="LC_success">'
                         .&mt('Your file - [_1] - was uploaded successfully.',
                              '<span class="LC_filename">'.$fn.'<span>')
                         .'</p>';
         } else {          } else {
             $result .= &mt('File copied.').'<br />';              $result .= '<p class="LC_success">'
                         .&mt('File copied.')  
                         .'</p>';
         }          }
         # Check for embedded objects.          # Check for embedded objects.
         my (%allfiles,%codebase);          my (%allfiles,%codebase);
Line 322  sub check_extension { Line 371  sub check_extension {
             my (%allfiles,%codebase);              my (%allfiles,%codebase);
             &Apache::lonnet::extract_embedded_items($target,\%allfiles,\%codebase);              &Apache::lonnet::extract_embedded_items($target,\%allfiles,\%codebase);
             if (keys(%allfiles) > 0) {              if (keys(%allfiles) > 0) {
                 my $state = <<STATE;                  my ($currentpath) = ($url =~ m{^(.+)/[^/]+$});
     <input type="hidden" name="action"      value="upload_embedded" />                  my $state = &embedded_form_elems('upload_embedded',$url,$mode);
     <input type="hidden" name="currentpath" value="$env{'form.currentpath'}" />                  my ($embedded,$num,$pathchg) = 
     <input type="hidden" name="mode"        value="$mode" />                      &Apache::loncommon::ask_for_embedded_content($action,$state,\%allfiles,
     <input type="hidden" name="phase"       value="three" />                                                                   \%codebase,
     <input type="hidden" name="filename" value="$url" />                                                                   {'error_on_invalid_names'   => 1,
 STATE                                                                    'ignore_remote_references' => 1,
                 $result .= "<h3>".&mt("Reference Warning")."</h3>".                                                                    'current_path'             => $currentpath});
                            "<p>".&mt("Completed upload of the file. This file contained references to other files.")."</p>".                  if ($embedded) {
                           "<p>".&mt("Please select the locations from which the referenced files are to be uploaded.")."</p>".                      $result .= '<h3>'.&mt('Reference Warning').'</h3>';
                           &Apache::loncommon::ask_for_embedded_content($action,$state,\%allfiles,\%codebase,                      if ($num) {
                                       {'error_on_invalid_names'   => 1,                          $result .= '<p>'.&mt('Completed upload of the file.').' '.&mt('This file contained references to other files.').'</p>'.
                                        'ignore_remote_references' => 1,});                                     '<p>'.&mt('Please select the locations from which the referenced files are to be uploaded.').'</p>'.
                 if ($mode eq 'testbank') {                                     $embedded;
                     $returnflag = 'embedded';                          if ($mode eq 'testbank') {
                     $result .=  '<p>'.&mt('Or [_1]continue[_2] the testbank import without these files','<a href="javascript:document.testbankForm.submit();">','</a>').'</p>';                              $returnflag = 'embedded';
                               $result .=  '<p>'.&mt('Or [_1]continue[_2] the testbank import without these files.','<a href="javascript:document.testbankForm.submit();">','</a>').'</p>';
                           }
                       } else {
                           $result .= '<p>'.&mt('Completed upload of the file.').'</p>'.$embedded;
                           if ($pathchg) {
                               if ($mode eq 'testbank') {
                                   $returnflag = 'embedded';
                                   $result .=  '<p>'.&mt('Or [_1]continue[_2] the testbank import without modifying the references(s).','<a href="javascript:document.testbankForm.submit();">','</a>').'</p>';
                               }
                           }
                       }
                 }                  }
             }              }
         }          }
         if (($mode ne 'imsimport') && ($mode ne 'testbank')) {          if (($mode ne 'imsimport') && ($mode ne 'testbank')) {
             $result .= '<br /><font size="+2"><a href="'.$url.'">'.              $result .= '<br /><a href="'.$url.'">'.
                         &mt('View file').'</a></font>';                          &mt('View file').'</a>';
         }          }
     } else {      } else {
         $result .= &mt('Failed to copy: [_1].',$!);          $result .= &mt('Failed to copy: [_1].',$!);
     }      }
     if ($mode ne 'imsimport' && $mode ne 'testbank') {      if ($mode ne 'imsimport' && $mode ne 'testbank') {
         $result .= '<br /><font size="+2"><a href="'.$dirpath.'">'.          $result .= '<br /><a href="'.$dirpath.'">'.
                    &mt('Back to Directory').'</a></font><br />';                     &mt('Back to Directory').'</a><br />';
     }      }
     return ($result,$returnflag);      return ($result,$returnflag);
 }  }
   
 sub phasethree {  sub phasethree {
     my ($r,$fn,$uname,$udom,$mode) = @_;      my ($r,$fn,$uname,$udom,$mode) = @_;
   
       my $action = '/adm/upload'; 
       if ($mode eq 'testbank') {
           $action = '/adm/testbank';
       } elsif ($mode eq 'imsimport') {
           $action = '/adm/imsimport';
       }
       my $url_root = "/priv/$udom/$uname";
       my $dir_root = $r->dir_config('lonDocRoot').$url_root;
       my $path = &File::Basename::dirname($fn);
       $path =~ s{^\Q$url_root\E}{};
       my $filename = &HTML::Entities::encode($env{'form.filename'},'<>&"');
       my $state = &embedded_form_elems('modify_orightml',$filename,$mode).
                   '<input type="hidden" name="phase" value="four" />';
       my ($result,$returnflag) = 
           &Apache::loncommon::upload_embedded($mode,$path,$uname,$udom,
                                               $dir_root,$url_root,undef,
                                               undef,undef,$state,$action);
       if ($mode ne 'imsimport' && $mode ne 'testbank') {
           $result .= '<br /><h3><a href="'.$fn.'">'.
                     &mt('View main file').'</a></h3>'.
                     '<h3><a href="'.$url_root.$path.'">'.
                     &mt('Back to Directory').'</a></h3><br />';
       }
       return ($result,$returnflag);
   }
   
   sub embedded_form_elems {
       my ($action,$filename,$mode) = @_;
       return <<STATE;
       <input type="hidden" name="action" value="$action" />
       <input type="hidden" name="mode" value="$mode" />
       <input type="hidden" name="filename" value="$filename" />
   STATE
   }
   
   sub phasefour {
       my ($r,$fn,$uname,$udom,$mode) = @_;
   
       my $action = '/adm/upload';
       if ($mode eq 'testbank') {
           $action = '/adm/testbank';
       } elsif ($mode eq 'imsimport') {
           $action = '/adm/imsimport';
       }
     my $result;      my $result;
     my $dir_root = '/home/'.$uname.'/public_html';      my $url_root = "/priv/$udom/$uname";
     my $url_root = '/priv/'.$uname;      my $dir_root = $r->dir_config('lonDocRoot').$url_root;
     my $base = &File::Basename::basename($fn);  
     my $path = &File::Basename::dirname($fn);      my $path = &File::Basename::dirname($fn);
     $result = &Apache::loncommon::upload_embedded($mode,$path,$uname,$udom,      $path =~ s{^\Q$url_root\E}{};
                                                   $dir_root,$url_root);      my $outcome = 
           &Apache::loncommon::modify_html_refs($mode,$path,$uname,$udom,$dir_root);
       $result .= $outcome;
     if ($mode ne 'imsimport' && $mode ne 'testbank') {      if ($mode ne 'imsimport' && $mode ne 'testbank') {
         $result = '<br /><font size="+2"><a href="'.$url_root.$fn.'">'.          $result .= '<br /><h3><a href="'.$fn.'">'.
                   &mt('View main file').'</a></font>'.                    &mt('View main file').'</a></h3>'.
                   '<br /><font size="+2"><a href="'.$url_root.$path.'">'.                    '<h3><a href="'.$url_root.$path.'">'.
                   &mt('Back to Directory').'</a></font><br />';                    &mt('Back to Directory').'</a></h3><br />';
     }      }
     return $result;      return $result;
 }  }
   
   sub earlyout {
       my ($fn,$uname,$udom) = @_;
       if ($fn =~ m{^(/priv/$udom/$uname(?:.*)/)[^/]*}) {
           return &Apache::lonhtmlcommon::actionbox(
                  ['<a href="'.$1.'">'.&mt('Return to Directory').'</a>']);
       }
       return;
   }
   
 # ---------------------------------------------------------------- Main Handler  # ---------------------------------------------------------------- Main Handler
 sub handler {  sub handler {
   
     my $r=shift;      my $r=shift;
   
     my $uname;  
     my $udom;  
     my $javascript = '';      my $javascript = '';
 #      my $fn=$env{'form.filename'};
 # phase two: re-attach user  
 #      if ($env{'form.filename1'}) {
     if ($env{'form.uploaduname'}) {         $fn=$env{'form.filename1'}.$env{'form.filename2'};
  $env{'form.filename'}='/priv/'.$env{'form.uploaduname'}.'/'.      }
     $env{'form.filename'};      $fn=~s/\/+/\//g;
   
       unless ($fn) {
           $r->log_reason($env{'user.name'}.' at '.$env{'user.domain'}.
                          ' unspecified filename for upload', $r->filename);
           return HTTP_NOT_FOUND;
     }      }
   
       my ($uname,$udom)=&Apache::lonnet::constructaccess($fn);
   
       unless (($uname) && ($udom)) {
           $r->log_reason($uname.' at '.$udom.
                          ' trying to publish file '.$env{'form.filename'}.
                          ' - not authorized',
                          $r->filename);
           return HTTP_NOT_ACCEPTABLE;
       }
   
   # ----------------------------------------------------------- Start page output
   
       &Apache::loncommon::content_type($r,'text/html');
       $r->send_http_header;
   
     unless ($env{'form.phase'} eq 'two') {      unless ($env{'form.phase'} eq 'two') {
         $javascript = qq|          $javascript = <<"ENDJS";
   <script type="text/javascript">
   // <![CDATA[
 function verifyForm() {  function verifyForm() {
     var mode = document.fileupload.filetype.options[document.fileupload.filetype.selectedIndex].value      var mode = document.fileupload.filetype.options[document.fileupload.filetype.selectedIndex].value
     if (mode == "testbank") {      if (mode == "testbank") {
Line 404  function verifyForm() { Line 538  function verifyForm() {
     }      }
     document.fileupload.submit();      document.fileupload.submit();
 }  }
  |;  // ]]>
     }  </script>
     ($uname,$udom)=  ENDJS
  &Apache::loncacc::constructaccess($env{'form.filename'},      }
   $r->dir_config('lonDefDomain'));  
       my $londocroot = $r->dir_config('lonDocRoot');
     unless (($uname) && ($udom)) {      my $trailfile = $fn;
  $r->log_reason($uname.' at '.$udom.      $trailfile =~ s{^/(priv/)}{$londocroot/$1};
        ' trying to publish file '.$env{'form.filename'}.  
        ' - not authorized',       # Breadcrumbs
        $r->filename);       my $brcrum = [{'href' => &Apache::loncommon::authorspace($fn),
  return HTTP_NOT_ACCEPTABLE;                     'text' => 'Authoring Space'},
     }                    {'href' => '/adm/upload',
                          'text' => 'Upload file to Authoring Space'}];
     my $fn;      $r->print(&Apache::loncommon::start_page('Upload file to Authoring Space',
     if ($env{'form.filename'}) {                                               $javascript,
  $fn=$env{'form.filename'};                                               {'bread_crumbs' => $brcrum,})
  $fn=~s/^https?\:\/\/[^\/]+\///;               .&Apache::loncommon::head_subbox(
  $fn=~s/^\///;                  &Apache::loncommon::CSTR_pageheader($trailfile))
  $fn=~s{(~|priv/)($LONCAPA::username_re)}{};      );
  $fn=~s/\/+/\//g;  
     } else {  
  $r->log_reason($env{'user.name'}.' at '.$env{'user.domain'}.  
        ' unspecified filename for upload', $r->filename);   
  return HTTP_NOT_FOUND;  
     }  
   
 # ----------------------------------------------------------- Start page output  
   
   
     &Apache::loncommon::content_type($r,'text/html');  
     $r->send_http_header;  
   
    $javascript = "<script type=\"text/javascript\">\n//<!--\n".  
  $javascript."\n// --></script>\n";  
   
     $r->print(&Apache::loncommon::start_page('Upload file to Construction Space',  
      $javascript));  
       
     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]:[_2]',$uname,$udom)                   .&mt('Co-Author [_1]',$uname.':'.$udom)
                  .'</p>'                   .'</p>'
         );          );
     }      }
       if ($env{'form.phase'} eq 'four') {
     if ($env{'form.phase'} eq 'three') {          my $output = &phasefour($r,$fn,$uname,$udom,'author');
         my $output = &phasethree($r,$fn,$uname,$udom,'author');          $r->print($output);
       } elsif ($env{'form.phase'} eq 'three') {
           my ($output,$rtnflag) = &phasethree($r,$fn,$uname,$udom,'author');
         $r->print($output);          $r->print($output);
     } elsif ($env{'form.phase'} eq 'two') {      } elsif ($env{'form.phase'} eq 'two') {
  my ($output,$returnflag) = &phasetwo($r,$fn,$uname,$udom);   my ($output,$returnflag) = &phasetwo($r,$fn);
         $r->print($output);          $r->print($output);
     } else {      } else {
  &phaseone($r,$fn,$uname,$udom);   &phaseone($r,$fn,undef,$uname,$udom);
     }      }
   
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());

Removed from v.1.44  
changed lines
  Added in v.1.64


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