--- loncom/publisher/lonupload.pm 2011/11/02 14:40:16 1.57 +++ loncom/publisher/lonupload.pm 2011/11/02 23:19:22 1.58 @@ -1,8 +1,7 @@ - # The LearningOnline Network with CAPA # Handler to upload files into construction space # -# $Id: lonupload.pm,v 1.57 2011/11/02 14:40:16 raeburn Exp $ +# $Id: lonupload.pm,v 1.58 2011/11/02 23:19:22 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -163,7 +162,7 @@ sub upfile_store { } sub phaseone { - my ($r,$fn,$uname,$udom,$mode)=@_; + my ($r,$fn,$mode)=@_; my $action = '/adm/upload'; if ($mode eq 'testbank') { $action = '/adm/testbank'; @@ -240,7 +239,7 @@ sub phaseone { } sub phasetwo { - my ($r,$fn,$uname,$udom,$mode)=@_; + my ($r,$fn,$mode)=@_; my $output; my $action = '/adm/upload'; @@ -252,7 +251,7 @@ sub phasetwo { } $fn=~s/\/+/\//g; if ($fn) { - my $target='/home/httpd/html/'.$fn; + my $target= $r->dir_config('lonDocRoot').'/'.$fn; &Debug($r, "target -> ".$target); # target is the full filesystem path of the destination file. my $base = &File::Basename::basename($fn); @@ -407,6 +406,7 @@ sub phasethree { 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). ''; @@ -415,7 +415,7 @@ sub phasethree { $dir_root,$url_root,undef, undef,undef,$state,$action); if ($mode ne 'imsimport' && $mode ne 'testbank') { - $result .= '

'. + $result .= '

'. &mt('View main file').'

'. '

'. &mt('Back to Directory').'


'; @@ -445,10 +445,11 @@ sub phasefour { 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}{}; $result .= &Apache::loncommon::modify_html_refs($mode,$path, $uname,$udom,$dir_root); if ($mode ne 'imsimport' && $mode ne 'testbank') { - $result .= '

'. + $result .= '

'. &mt('View main file').'

'. '

'. &mt('Back to Directory').'


'; @@ -460,10 +461,7 @@ sub phasefour { sub handler { my $r=shift; - - my ($uname,$udom); my $javascript = ''; - my $fn=$env{'form.filename'}; if ($env{'form.filename1'}) { @@ -477,8 +475,25 @@ sub handler { return HTTP_NOT_FOUND; } + my ($uname,$udom)=&Apache::loncacc::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') { - $javascript = qq| + $javascript = <<"ENDJS"; + +ENDJS } - ($uname,$udom)=&Apache::loncacc::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; - $javascript = "\n"; + my $londocroot = $r->dir_config('lonDocRoot'); + my $trailfile = $fn; + $trailfile =~ s{^/(priv/)}{$londocroot/$1}; # Breadcrumbs my $brcrum = [{'href' => &Apache::loncommon::authorspace(), @@ -522,7 +525,7 @@ function verifyForm() { $javascript, {'bread_crumbs' => $brcrum,}) .&Apache::loncommon::head_subbox( - &Apache::loncommon::CSTR_pageheader()) + &Apache::loncommon::CSTR_pageheader($trailfile)) ); if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { @@ -538,10 +541,10 @@ function verifyForm() { 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); + my ($output,$returnflag) = &phasetwo($r,$fn); $r->print($output); } else { - &phaseone($r,$fn,$uname,$udom); + &phaseone($r,$fn); } $r->print(&Apache::loncommon::end_page());