--- loncom/publisher/lonpublisher.pm 2000/12/04 15:39:28 1.13 +++ loncom/publisher/lonpublisher.pm 2001/01/30 21:03:55 1.17 @@ -5,7 +5,7 @@ # # 05/29/00,05/30,10/11 Gerd Kortemeyer) # -# 11/28,11/29,11/30,12/01,12/02,12/04 Gerd Kortemeyer +# 11/28,11/29,11/30,12/01,12/02,12/04,12/23 Gerd Kortemeyer package Apache::lonpublisher; @@ -15,9 +15,7 @@ use File::Copy; use Apache::Constants qw(:common :http :methods); use HTML::TokeParser; use Apache::lonxml; -use Apache::structuretags; -use Apache::inputtags; -use Apache::response; +use Apache::lonhomework; my %addid; my %nokey; @@ -520,12 +518,14 @@ if (-e $target) { $copyfile=$copyfile.'.meta'; if (copy($target.'.meta',$copyfile)) { - print $logfile "Copied old target metadata to ".$copyfile."\n"; + print $logfile "Copied old target metadata to ".$copyfile."\n"; $scrout.='

Copied old metadata'; } else { print $logfile "Unable to write metadata ".$copyfile.':'.$!."\n"; - return + if (-e $target.'.meta') { + return "Failed to write old metadata copy, $!, FAIL"; + } } @@ -616,6 +616,7 @@ sub handler { return OK; } +unless ($ENV{'form.pubdir'}) { # -------------------------------------------------------------- Check filename my $fn=$ENV{'form.filename'}; @@ -709,7 +710,8 @@ unless ($ENV{'form.phase'} eq 'two') { $r->send_http_header; $r->print('LON-CAPA Publishing'); - $r->print(''); + $r->print( + ''); my $thisfn=$fn; # ------------------------------------------------------------- Individual file @@ -743,7 +745,55 @@ unless ($ENV{'form.phase'} eq 'two') { } $r->print(''); +} else { + + my $fn=$ENV{'form.filename'}; + + $fn=~s/\/[^\/]+$//; + my $thisprefix=$fn; + $thisprefix=~s/\/\~/\/priv\//; + + $fn=~s/^http\:\/\/[^\/]+\/\~(\w+)/\/home\/$1\/public_html/; + + unless ($fn) { + $r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}. + ' trying to publish empty directory', $r->filename); + return HTTP_NOT_FOUND; + } + +# ----------------------------------------------------------- Start page output + + $r->content_type('text/html'); + $r->send_http_header; + $r->print('LON-CAPA Publishing Directory'); + $r->print( + ''); + + my $thisdisfn=$fn; + $thisdisfn=~s/^\/home\/$ENV{'user.name'}\/public_html\///; + + $r->print('

Publishing directory '.$thisdisfn.'

'); + my $i=0; + $r->print(''); + + $r->print(''); + +} return OK; }