version 1.52, 2010/12/14 16:26:04
|
version 1.56, 2011/10/31 01:28:47
|
Line 179 sub phaseone {
|
Line 179 sub phaseone {
|
return; |
return; |
} |
} |
|
|
$fn=~s/\/[^\/]+$//; |
# Append the name of the uploaded file |
$fn=~s/([^\/])$/$1\//; |
|
$fn.=$env{'form.upfile.filename'}; |
$fn.=$env{'form.upfile.filename'}; |
$fn=~s/^\///; |
|
$fn=~s/(\/)+/\//g; |
$fn=~s/(\/)+/\//g; |
# Fn is the full path to the destination filename. |
|
|
|
# Check for illegal filename |
# Check for illegal filename |
&Debug($r, "Filename for upload: $fn"); |
&Debug($r, "Filename for upload: $fn"); |
Line 192 sub phaseone {
|
Line 189 sub phaseone {
|
$r->print('<p class="LC_warning">'.&mt('Illegal filename.').'</p>'); |
$r->print('<p class="LC_warning">'.&mt('Illegal filename.').'</p>'); |
return; |
return; |
} |
} |
|
# Split part that I can change from the part that I cannot change |
|
my ($fn1,$fn2)=($fn=~/^(\/priv\/[^\/]+\/[^\/]+\/)(.*)$/); |
# Display additional options for upload |
# Display additional options for upload |
# and upload button |
# and upload button |
$r->print( |
$r->print( |
'<form action="'.$action.'" method="post" name="fileupload">' |
'<form action="'.$action.'" method="post" name="fileupload">' |
.'<input type="hidden" name="phase" value="two" />' |
.'<input type="hidden" name="phase" value="two" />' |
.'<input type="hidden" name="datatoken" value="'.&upfile_store.'" />' |
.'<input type="hidden" name="datatoken" value="'.&upfile_store.'" />' |
.'<input type="hidden" name="uploaduname" value="'.$uname.'" />' |
|
); |
); |
$r->print( |
$r->print( |
&Apache::lonhtmlcommon::start_pick_box() |
&Apache::lonhtmlcommon::start_pick_box() |
.&Apache::lonhtmlcommon::row_title(&mt('Save uploaded file as')) |
.&Apache::lonhtmlcommon::row_title(&mt('Save uploaded file as')) |
.'<span class="LC_filename">/priv/'.$uname.'/</span>' |
.'<span class="LC_filename">'.$fn1.'</span>' |
.'<input type="text" size="50" name="filename" value="'.$fn.'" />' |
.'<input type="hidden" name="filename1" value="'.$fn1.'" />' |
|
.'<input type="text" size="50" name="filename2" value="'.$fn2.'" />' |
.&Apache::lonhtmlcommon::row_closure() |
.&Apache::lonhtmlcommon::row_closure() |
.&Apache::lonhtmlcommon::row_title(&mt('File Type')) |
.&Apache::lonhtmlcommon::row_title(&mt('File Type')) |
.'<select name="filetype">' |
.'<select name="filetype">' |
Line 242 sub phaseone {
|
Line 240 sub phaseone {
|
} |
} |
|
|
sub phasetwo { |
sub phasetwo { |
my ($r,$tfn,$uname,$udom,$mode)=@_; |
my ($r,$fn,$uname,$udom,$mode)=@_; |
|
|
my $output; |
my $output; |
my $action = '/adm/upload'; |
my $action = '/adm/upload'; |
my $returnflag = ''; |
my $returnflag = ''; |
Line 251 sub phasetwo {
|
Line 250 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='/home/httpd/html/'.$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 401 sub check_extension {
|
Line 397 sub check_extension {
|
|
|
sub phasethree { |
sub phasethree { |
my ($r,$fn,$uname,$udom,$mode) = @_; |
my ($r,$fn,$uname,$udom,$mode) = @_; |
|
|
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'; |
} |
} |
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 $url_root = '/priv/'.$udom.'/'.$uname; |
my $path = &File::Basename::dirname($fn); |
my $path = &File::Basename::dirname($fn); |
my $filename = &HTML::Entities::encode($env{'form.filename'},'<>&"'); |
my $filename = &HTML::Entities::encode($env{'form.filename'},'<>&"'); |
my $state = &embedded_form_elems('modify_orightml',$filename,$mode). |
my $state = &embedded_form_elems('modify_orightml',$filename,$mode). |
Line 437 STATE
|
Line 435 STATE
|
|
|
sub phasefour { |
sub phasefour { |
my ($r,$fn,$uname,$udom,$mode) = @_; |
my ($r,$fn,$uname,$udom,$mode) = @_; |
|
|
my $action = '/adm/upload'; |
my $action = '/adm/upload'; |
if ($mode eq 'testbank') { |
if ($mode eq 'testbank') { |
$action = '/adm/testbank'; |
$action = '/adm/testbank'; |
Line 444 sub phasefour {
|
Line 443 sub phasefour {
|
$action = '/adm/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 $path = &File::Basename::dirname($fn); |
my $path = &File::Basename::dirname($fn); |
$result .= &Apache::loncommon::modify_html_refs($mode,$path, |
$result .= &Apache::loncommon::modify_html_refs($mode,$path, |
$uname,$udom,$dir_root); |
$uname,$udom,$dir_root); |
Line 466 sub handler {
|
Line 465 sub handler {
|
my $uname; |
my $uname; |
my $udom; |
my $udom; |
my $javascript = ''; |
my $javascript = ''; |
# |
|
# phase two: re-attach user |
my $fn=$env{'form.filename'}; |
# |
|
if ($env{'form.uploaduname'}) { |
if ($env{'form.filename1'}) { |
$env{'form.filename'}='/priv/'.$env{'form.uploaduname'}.'/'. |
$fn=$env{'form.filename1'}.$env{'form.filename2'}; |
$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; |
} |
} |
|
|
unless ($env{'form.phase'} eq 'two') { |
unless ($env{'form.phase'} eq 'two') { |
Line 491 function verifyForm() {
|
Line 496 function verifyForm() {
|
} |
} |
|; |
|; |
} |
} |
($uname,$udom)= |
($uname,$udom)=&Apache::loncacc::constructaccess($fn); |
&Apache::loncacc::constructaccess($env{'form.filename'}, |
|
$r->dir_config('lonDefDomain')); |
|
|
|
unless (($uname) && ($udom)) { |
unless (($uname) && ($udom)) { |
$r->log_reason($uname.' at '.$udom. |
$r->log_reason($uname.' at '.$udom. |
Line 503 function verifyForm() {
|
Line 506 function verifyForm() {
|
return HTTP_NOT_ACCEPTABLE; |
return HTTP_NOT_ACCEPTABLE; |
} |
} |
|
|
my $fn; |
|
if ($env{'form.filename'}) { |
|
$fn=$env{'form.filename'}; |
|
$fn=~s/^https?\:\/\/[^\/]+\///; |
|
$fn=~s/^\///; |
|
$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 |
# ----------------------------------------------------------- Start page output |
|
|
|
|
Line 547 function verifyForm() {
|
Line 537 function verifyForm() {
|
my $output = &phasefour($r,$fn,$uname,$udom,'author'); |
my $output = &phasefour($r,$fn,$uname,$udom,'author'); |
$r->print($output); |
$r->print($output); |
} elsif ($env{'form.phase'} eq 'three') { |
} elsif ($env{'form.phase'} eq 'three') { |
my $output = &phasethree($r,$fn,$uname,$udom,'author'); |
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,$uname,$udom); |