version 1.112, 2011/10/30 19:27:27
|
version 1.116, 2012/10/29 17:38:55
|
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 158 Global References
|
Line 157 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='/home/httpd/html/'.$Url; |
$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\/httpd\/html//; |
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; |
$fn=~s/\/\.\//\//g; |
$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\/httpd\/html//; |
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; |
$fn=~s/\/\.\//\//g; |
$fn=~s/^\Q$londocroot\E//; |
|
$fn=~s{/\./}{/}g; |
return '<span class="LC_filename">'.$fn.'</span>'; |
return '<span class="LC_filename">'.$fn.'</span>'; |
} |
} |
|
|
Line 204 sub obsolete_unpub {
|
Line 205 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 395 sub relativeDest {
|
Line 397 sub relativeDest {
|
my $error = ''; |
my $error = ''; |
if ($newfilename=~/^\//) { |
if ($newfilename=~/^\//) { |
# absolute, simply add path |
# absolute, simply add path |
$newfilename='/home/httpd/html/res/'.$udom.'/'.$uname.'/'; |
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::loncacc::constructaccess($newfilename); |
my ($authorname,$authordom)=&Apache::lonnet::constructaccess($newfilename); |
unless (($authorname) && ($authordom)) { |
unless (($authorname) && ($authordom)) { |
my $otherdir = &display($newfilename); |
my $otherdir = &display($newfilename); |
$error = &mt('Access denied to [_1]',$otherdir); |
$error = &mt('Access denied to [_1]',$otherdir); |
Line 1437 sub handler {
|
Line 1440 sub handler {
|
} |
} |
|
|
# ----------------------------------------------------------- Start page output |
# ----------------------------------------------------------- Start page output |
my $uname; |
|
my $udom; |
|
|
|
($uname,$udom)=&Apache::loncacc::constructaccess($fn); |
my ($uname,$udom) = &Apache::lonnet::constructaccess($fn); |
&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 1470 function writeDone() {
|
Line 1471 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 1488 function writeDone() {
|
Line 1493 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('<h3>'.&mt('Location').': '.&display($fn).'</h3>'); |