version 1.26, 2001/05/03 11:18:28
|
version 1.27, 2001/05/08 01:26:48
|
Line 9
|
Line 9
|
# 03/23 Guy Albertelli |
# 03/23 Guy Albertelli |
# 03/24,03/29,04/03 Gerd Kortemeyer |
# 03/24,03/29,04/03 Gerd Kortemeyer |
# 04/16/2001 Scott Harrison |
# 04/16/2001 Scott Harrison |
# 05/03 Gerd Kortemeyer |
# 05/03,05/05,05/07 Gerd Kortemeyer |
|
|
package Apache::lonpublisher; |
package Apache::lonpublisher; |
|
|
Line 20 use Apache::Constants qw(:common :http :
|
Line 20 use Apache::Constants qw(:common :http :
|
use HTML::TokeParser; |
use HTML::TokeParser; |
use Apache::lonxml; |
use Apache::lonxml; |
use Apache::lonhomework; |
use Apache::lonhomework; |
|
use Apache::loncacc; |
use DBI; |
use DBI; |
|
|
my %addid; |
my %addid; |
Line 32 my %metadatakeys;
|
Line 33 my %metadatakeys;
|
|
|
my $docroot; |
my $docroot; |
|
|
|
my $cuname; |
|
my $cudom; |
|
|
# ----------------------------------------------- Evaluate string with metadata |
# ----------------------------------------------- Evaluate string with metadata |
|
|
sub metaeval { |
sub metaeval { |
Line 262 sub publish {
|
Line 266 sub publish {
|
$ENV{'environment.generation'}; |
$ENV{'environment.generation'}; |
$metadatafields{'author'}=~s/\s+/ /g; |
$metadatafields{'author'}=~s/\s+/ /g; |
$metadatafields{'author'}=~s/\s+$//; |
$metadatafields{'author'}=~s/\s+$//; |
$metadatafields{'owner'}=$ENV{'user.name'}.'@'.$ENV{'user.domain'}; |
$metadatafields{'owner'}=$cuname.'@'.$cudom; |
|
|
# ------------------------------------------------ Check out directory hierachy |
# ------------------------------------------------ Check out directory hierachy |
|
|
my $thisdisfn=$source; |
my $thisdisfn=$source; |
$thisdisfn=~s/^\/home\/$ENV{'user.name'}\///; |
$thisdisfn=~s/^\/home\/$cuname\///; |
|
|
my @urlparts=split(/\//,$thisdisfn); |
my @urlparts=split(/\//,$thisdisfn); |
$#urlparts--; |
$#urlparts--; |
|
|
my $currentpath='/home/'.$ENV{'user.name'}.'/'; |
my $currentpath='/home/'.$cuname.'/'; |
|
|
map { |
map { |
$currentpath.=$_.'/'; |
$currentpath.=$_.'/'; |
Line 725 sub handler {
|
Line 729 sub handler {
|
|
|
my $fn=$ENV{'form.filename'}; |
my $fn=$ENV{'form.filename'}; |
|
|
|
|
unless ($fn) { |
unless ($fn) { |
$r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}. |
$r->log_reason($cuname.' at '.$cudom. |
' trying to publish empty filename', $r->filename); |
' trying to publish empty filename', $r->filename); |
return HTTP_NOT_FOUND; |
return HTTP_NOT_FOUND; |
} |
} |
|
|
unless ($ENV{'user.home'} eq $r->dir_config('lonHostID')) { |
unless (($cuname,$cudom)= |
$r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}. |
&Apache::loncacc::constructaccess($fn,$r->dir_config('lonDefDomain'))) { |
|
$r->log_reason($cuname.' at '.$cudom. |
' trying to publish file '.$ENV{'form.filename'}. |
' trying to publish file '.$ENV{'form.filename'}. |
' ('.$fn.') - not homeserver ('.$ENV{'user.home'}.')', |
' ('.$fn.') - not authorized', |
|
$r->filename); |
|
return HTTP_NOT_ACCEPTABLE; |
|
} |
|
|
|
unless (&Apache::lonnet::homeserver($cuname,$cudom) |
|
eq $r->dir_config('lonHostID')) { |
|
$r->log_reason($cuname.' at '.$cudom. |
|
' trying to publish file '.$ENV{'form.filename'}. |
|
' ('.$fn.') - not homeserver ('. |
|
&Apache::lonnet::homeserver($cuname,$cudom).')', |
$r->filename); |
$r->filename); |
return HTTP_NOT_ACCEPTABLE; |
return HTTP_NOT_ACCEPTABLE; |
} |
} |
Line 743 sub handler {
|
Line 759 sub handler {
|
|
|
my $targetdir=''; |
my $targetdir=''; |
$docroot=$r->dir_config('lonDocRoot'); |
$docroot=$r->dir_config('lonDocRoot'); |
if ($1 ne $ENV{'user.name'}) { |
if ($1 ne $cuname) { |
$r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}. |
$r->log_reason($cuname.' at '.$cudom. |
' trying to publish unowned file '.$ENV{'form.filename'}. |
' trying to publish unowned file '.$ENV{'form.filename'}. |
' ('.$fn.')', |
' ('.$fn.')', |
$r->filename); |
$r->filename); |
return HTTP_NOT_ACCEPTABLE; |
return HTTP_NOT_ACCEPTABLE; |
} else { |
} else { |
$targetdir=$docroot.'/res/'.$ENV{'user.domain'}; |
$targetdir=$docroot.'/res/'.$cudom; |
} |
} |
|
|
|
|
unless (-e $fn) { |
unless (-e $fn) { |
$r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}. |
$r->log_reason($cuname.' at '.$cudom. |
' trying to publish non-existing file '.$ENV{'form.filename'}. |
' trying to publish non-existing file '.$ENV{'form.filename'}. |
' ('.$fn.')', |
' ('.$fn.')', |
$r->filename); |
$r->filename); |
Line 833 unless ($ENV{'form.phase'} eq 'two') {
|
Line 849 unless ($ENV{'form.phase'} eq 'two') {
|
$thisdistarget=~s/^$docroot//; |
$thisdistarget=~s/^$docroot//; |
|
|
my $thisdisfn=$thisfn; |
my $thisdisfn=$thisfn; |
$thisdisfn=~s/^\/home\/$ENV{'user.name'}\/public_html\///; |
$thisdisfn=~s/^\/home\/$cuname\/public_html\///; |
|
|
$r->print('<h2>Publishing '. |
$r->print('<h2>Publishing '. |
&Apache::lonnet::filedescription($thistype).' <tt>'. |
&Apache::lonnet::filedescription($thistype).' <tt>'. |
$thisdisfn.'</tt></h2><b>Target:</b> <tt>'.$thisdistarget.'</tt><p>'); |
$thisdisfn.'</tt></h2><b>Target:</b> <tt>'.$thisdistarget.'</tt><p>'); |
|
|
|
if (($cuname ne $ENV{'user.name'}) || ($cudom ne $ENV{'user.domain'})) { |
|
$r->print('<h3><font color=red>Co-Author: '.$cuname.' at '.$cudom. |
|
'</font></h3>'); |
|
} |
|
|
if (&Apache::lonnet::fileembstyle($thistype) eq 'ssi') { |
if (&Apache::lonnet::fileembstyle($thistype) eq 'ssi') { |
$r->print('<br><a href="/adm/diff?filename='.$thisdisfn. |
$r->print('<br><a href="/adm/diff?filename='.$thisdisfn. |
Line 847 unless ($ENV{'form.phase'} eq 'two') {
|
Line 868 unless ($ENV{'form.phase'} eq 'two') {
|
# ------------ We are publishing from $thisfn to $thistarget with $thisembstyle |
# ------------ We are publishing from $thisfn to $thistarget with $thisembstyle |
|
|
unless ($ENV{'form.phase'} eq 'two') { |
unless ($ENV{'form.phase'} eq 'two') { |
$r->print('<hr>'.&publish($thisfn,$thistarget,$thisembstyle)); |
$r->print( |
|
'<hr>'.&publish($thisfn,$thistarget,$thisembstyle)); |
} else { |
} else { |
$r->print('<hr>'.&phasetwo($thisfn,$thistarget,$thisembstyle,$thisdistarget)); |
$r->print( |
|
'<hr>'.&phasetwo($thisfn,$thistarget,$thisembstyle,$thisdistarget)); |
} |
} |
|
|
} |
} |