--- loncom/publisher/lonupload.pm 2010/02/16 10:26:17 1.49
+++ loncom/publisher/lonupload.pm 2011/10/23 23:46:07 1.54
@@ -2,7 +2,7 @@
# The LearningOnline Network with CAPA
# Handler to upload files into construction space
#
-# $Id: lonupload.pm,v 1.49 2010/02/16 10:26:17 bisitz Exp $
+# $Id: lonupload.pm,v 1.54 2011/10/23 23:46:07 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -70,7 +70,7 @@ Start page output
=item *
-output relevant interface phase (phaseone or phasetwo or phasethree)
+output relevant interface phase (phaseone, phasetwo, phasethree or phasefour)
=item *
@@ -99,6 +99,11 @@ as overwriting an existing file).
Interface for handling secondary uploads of embedded objects
in an html file.
+=item phasefour()
+
+Interface for handling optional renaming of links to embedded
+objects.
+
=item upfile_store()
Store contents of uploaded file into temporary space. Invoked
@@ -251,7 +256,7 @@ sub phasetwo {
&Debug($r, "Filename is ".$tfn);
if ($tfn) {
&Debug($r, "Filename for tfn = ".$tfn);
- my $target='/home/'.$uname.'/public_html'.$tfn;
+ my $target='/home/httpd/html/priv/'.$udom.'/'.$uname.'/'.$tfn;
&Debug($r, "target -> ".$target);
# target is the full filesystem path of the destination file.
my $base = &File::Basename::basename($fn);
@@ -350,22 +355,33 @@ sub check_extension {
my (%allfiles,%codebase);
&Apache::lonnet::extract_embedded_items($target,\%allfiles,\%codebase);
if (keys(%allfiles) > 0) {
- my $state = <
".&mt("Completed upload of the file. This file contained references to other files.")."
". - "".&mt("Please select the locations from which the referenced files are to be uploaded.")."
". - &Apache::loncommon::ask_for_embedded_content($action,$state,\%allfiles,\%codebase, - {'error_on_invalid_names' => 1, - 'ignore_remote_references' => 1,}); - if ($mode eq 'testbank') { - $returnflag = 'embedded'; - $result .= ''.&mt('Or [_1]continue[_2] the testbank import without these files','','').'
'; + my ($currentpath) = ($url =~ m{^(.+)/[^/]+$}); + my $state = &embedded_form_elems('upload_embedded',$url,$mode); + my ($embedded,$num,$pathchg) = + &Apache::loncommon::ask_for_embedded_content($action,$state,\%allfiles, + \%codebase, + {'error_on_invalid_names' => 1, + 'ignore_remote_references' => 1, + 'current_path' => $currentpath}); + if ($embedded) { + $result .= ''.&mt('Completed upload of the file.').' '.&mt('This file contained references to other files.').'
'. + ''.&mt('Please select the locations from which the referenced files are to be uploaded.').'
'. + $embedded; + if ($mode eq 'testbank') { + $returnflag = 'embedded'; + $result .= ''.&mt('Or [_1]continue[_2] the testbank import without these files.','','').'
'; + } + } else { + $result .= ''.&mt('Completed upload of the file.').'
'.$embedded; + if ($pathchg) { + if ($mode eq 'testbank') { + $returnflag = 'embedded'; + $result .= ''.&mt('Or [_1]continue[_2] the testbank import without modifying the references(s).','','').'
'; + } + } + } } } } @@ -385,18 +401,59 @@ STATE sub phasethree { 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 $dir_root = '/home/httpd/html/priv/'.$udom.'/'.$uname; + my $url_root = '/priv/'.$udom.'/'.$uname; + my $path = &File::Basename::dirname($fn); + my $filename = &HTML::Entities::encode($env{'form.filename'},'<>&"'); + my $state = &embedded_form_elems('modify_orightml',$filename,$mode). + ''; + 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 .= '' + $r->print('
' .&mt('Co-Author [_1]',$uname.':'.$udom) .'
' ); } - - if ($env{'form.phase'} eq 'three') { - my $output = &phasethree($r,$fn,$uname,$udom,'author'); + if ($env{'form.phase'} eq 'four') { + my $output = &phasefour($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); } elsif ($env{'form.phase'} eq 'two') { my ($output,$returnflag) = &phasetwo($r,$fn,$uname,$udom);