version 1.265, 2009/12/03 17:23:00
|
version 1.269, 2011/10/22 21:25:37
|
Line 1080 sub publish {
|
Line 1080 sub publish {
|
# ------------------------------------------------ Check out directory hierachy |
# ------------------------------------------------ Check out directory hierachy |
|
|
my $thisdisfn=$source; |
my $thisdisfn=$source; |
$thisdisfn=~s/^\/home\/\Q$cuname\E\///; |
|
|
|
my @urlparts=split(/\//,$thisdisfn); |
$thisdisfn=~s/^\Q$docroot\E\/priv\/\Q$cudom\E\/\Q$cuname\E\///; |
|
my @urlparts=('.',split(/\//,$thisdisfn)); |
$#urlparts--; |
$#urlparts--; |
|
|
my $currentpath='/home/'.$cuname.'/'; |
my $currentpath=$docroot.'/priv/'.$cudom.'/'.$cuname.'/'; |
|
|
my $prefix='../'x($#urlparts); |
my $prefix='../'x($#urlparts); |
foreach (@urlparts) { |
foreach my $subdir (@urlparts) { |
$currentpath.=$_.'/'; |
$currentpath.=$subdir.'/'; |
$scrout.=&metaread($logfile,$currentpath.'default.meta',$prefix); |
$scrout.=&metaread($logfile,$currentpath.'default.meta',$prefix); |
$prefix=~s|^\.\./||; |
$prefix=~s|^\.\./||; |
} |
} |
Line 1121 sub publish {
|
Line 1121 sub publish {
|
# ------------------------------------------------------------- Save some stuff |
# ------------------------------------------------------------- Save some stuff |
my %savemeta=(); |
my %savemeta=(); |
foreach ('title') { |
foreach ('title') { |
$savemeta{$_}=$metadatafields{$_}; |
if ($metadatafields{$_}) { $savemeta{$_}=$metadatafields{$_}; } |
} |
} |
# ------------------------------------------ See if anything new in file itself |
# ------------------------------------------ See if anything new in file itself |
|
|
Line 1223 sub publish {
|
Line 1223 sub publish {
|
my $intr_scrout.='<br />' |
my $intr_scrout.='<br />' |
.'<form name="pubform" action="/adm/publish" method="post">'; |
.'<form name="pubform" action="/adm/publish" method="post">'; |
unless ($env{'form.makeobsolete'}) { |
unless ($env{'form.makeobsolete'}) { |
|
my $thissrc=$source; |
|
$thissrc=~s{^/home/($match_username)/public_html}{/priv/$1}; |
$intr_scrout.='<p class="LC_warning">' |
$intr_scrout.='<p class="LC_warning">' |
.&mt('Searching for your resource will be based on the following metadata. Please provide as much data as possible.') |
.&mt('Searching for your resource will be based on the following metadata. Please provide as much data as possible.') |
.'</p>' |
.'</p>' |
.'<p><input type="submit" value="' |
.'<p><input type="submit" value="' |
.&mt('Finalize Publication') |
.&mt('Finalize Publication') |
.'" /></p>'; |
.'" /> <a href="'.$thissrc.'">'.&mt('Cancel').'</a></p>'; |
} |
} |
$intr_scrout.=&Apache::lonhtmlcommon::start_pick_box(); |
$intr_scrout.=&Apache::lonhtmlcommon::start_pick_box(); |
$intr_scrout.= |
$intr_scrout.= |
Line 2085 sub handler {
|
Line 2087 sub handler {
|
# -------------------------------------------------------------- Check filename |
# -------------------------------------------------------------- Check filename |
|
|
my $fn=&unescape($env{'form.filename'}); |
my $fn=&unescape($env{'form.filename'}); |
|
($cuname,$cudom)=&Apache::loncacc::constructaccess($fn); |
|
# ----------------------------------------------------- Do we have permissions? |
|
unless (($cuname) && ($cudom)) { |
|
$r->log_reason($env{'user.name'}.' at '.$env{'user.domain'}. |
|
' trying to publish file '.$env{'form.filename'}. |
|
' - not authorized', |
|
$r->filename); |
|
return HTTP_NOT_ACCEPTABLE; |
|
} |
|
# ----------------------------------------------------------------- Get docroot |
|
$docroot=$r->dir_config('lonDocRoot'); |
|
|
($cuname,$cudom)= |
|
&Apache::loncacc::constructaccess($fn,$r->dir_config('lonDefDomain')); |
|
|
|
# special publication: default.meta file |
# special publication: default.meta file |
if ($fn=~/\/default.meta$/) { |
if ($fn=~/\/default.meta$/) { |
return &defaultmetapublish($r,$fn,$cuname,$cudom); |
return &defaultmetapublish($r,$fn,$cuname,$cudom); |
} |
} |
$fn=~s/\.meta$//; |
$fn=~s/\.meta$//; |
|
|
|
# sanity test on the filename |
|
|
unless ($fn) { |
unless ($fn) { |
$r->log_reason($cuname.' at '.$cudom. |
$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 (($cuname) && ($cudom)) { |
unless (-e $docroot.$fn) { |
$r->log_reason($cuname.' at '.$cudom. |
|
' trying to publish file '.$env{'form.filename'}. |
|
' ('.$fn.') - not authorized', |
|
$r->filename); |
|
return HTTP_NOT_ACCEPTABLE; |
|
} |
|
|
|
my $home=&Apache::lonnet::homeserver($cuname,$cudom); |
|
my $allowed=0; |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
|
foreach my $id (@ids) { if ($id eq $home) { $allowed = 1; } } |
|
unless ($allowed) { |
|
$r->log_reason($cuname.' at '.$cudom. |
|
' trying to publish file '.$env{'form.filename'}. |
|
' ('.$fn.') - not homeserver ('.$home.')', |
|
$r->filename); |
|
return HTTP_NOT_ACCEPTABLE; |
|
} |
|
|
|
$fn=~s{^http://[^/]+}{}; |
|
$fn=~s{^/~($match_username)}{/home/$1/public_html}; |
|
|
|
my $targetdir=''; |
|
$docroot=$r->dir_config('lonDocRoot'); |
|
if ($1 ne $cuname) { |
|
$r->log_reason($cuname.' at '.$cudom. |
|
' trying to publish unowned file '. |
|
$env{'form.filename'}.' ('.$fn.')', |
|
$r->filename); |
|
return HTTP_NOT_ACCEPTABLE; |
|
} else { |
|
$targetdir=$docroot.'/res/'.$cudom; |
|
} |
|
|
|
|
|
unless (-e $fn) { |
|
$r->log_reason($cuname.' at '.$cudom. |
$r->log_reason($cuname.' at '.$cudom. |
' trying to publish non-existing file '. |
' trying to publish non-existing file '. |
$env{'form.filename'}.' ('.$fn.')', |
$env{'form.filename'}.' ('.$fn.')', |
Line 2192 sub handler {
|
Line 2169 sub handler {
|
&Apache::loncommon::CSTR_pageheader()) # FIXME crumbs broken? |
&Apache::loncommon::CSTR_pageheader()) # FIXME crumbs broken? |
); |
); |
|
|
|
my $thisdisfn=&HTML::Entities::encode($fn,'<>&"'); |
my $thisfn=$fn; |
my $thistarget=$fn; |
|
$thistarget=~s/^\/priv\//\/res\//; |
my $thistarget=$thisfn; |
my $thisdistarget=&HTML::Entities::encode($thistarget,'<>&"'); |
|
|
$thistarget=~s/^\/home/$targetdir/; |
|
$thistarget=~s/\/public\_html//; |
|
|
|
my $thisdistarget=$thistarget; |
|
$thisdistarget=~s/^\Q$docroot\E//; |
|
|
|
my $thisdisfn=$thisfn; |
|
$thisdisfn=~s/^\/home\/\Q$cuname\E\/public_html\///; |
|
|
|
if ($fn=~/\/$/) { |
if ($fn=~/\/$/) { |
# -------------------------------------------------------- This is a directory |
# -------------------------------------------------------- This is a directory |
&publishdirectory($r,$fn,$thisdisfn); |
&publishdirectory($r,$fn,$thisdisfn); |
$r->print('<hr /><a href="/priv/' |
$r->print('<hr /><a href="'.$thisdisfn.'">'.&mt('Return to Directory').'</a>'); |
.$cuname.'/'.$thisdisfn |
|
.'">'.&mt('Return to Directory').'</a>'); |
|
|
|
|
|
} else { |
} else { |
# ---------------------- Evaluate individual file, and then output information. |
# ---------------------- Evaluate individual file, and then output information. |
$thisfn=~/\.(\w+)$/; |
$fn=~/\.(\w+)$/; |
my $thistype=$1; |
my $thistype=$1; |
my $thisembstyle=&Apache::loncommon::fileembstyle($thistype); |
my $thisembstyle=&Apache::loncommon::fileembstyle($thistype); |
if ($thistype eq 'page') { $thisembstyle = 'rat'; } |
if ($thistype eq 'page') { $thisembstyle = 'rat'; } |
Line 2240 sub handler {
|
Line 2204 sub handler {
|
.'<tt>' |
.'<tt>' |
); |
); |
$r->print(<<ENDCAPTION); |
$r->print(<<ENDCAPTION); |
<a href='javascript:void(window.open("/~$cuname/$thisdisfn","cat","height=300,width=500,scrollbars=1,resizable=1,menubar=0,location=1"))'> |
<a href='javascript:void(window.open("$thisdisfn","cat","height=300,width=500,scrollbars=1,resizable=1,menubar=0,location=1"))'> |
$thisdisfn</a> |
$thisdisfn</a> |
ENDCAPTION |
ENDCAPTION |
$r->print('</tt>' |
$r->print('</tt>' |
Line 2263 ENDCAPTION
|
Line 2227 ENDCAPTION
|
$r->print(&Apache::lonhtmlcommon::row_closure() |
$r->print(&Apache::lonhtmlcommon::row_closure() |
.&Apache::lonhtmlcommon::row_title(&mt('Diffs'))); |
.&Apache::lonhtmlcommon::row_title(&mt('Diffs'))); |
$r->print(<<ENDDIFF); |
$r->print(<<ENDDIFF); |
<a href='javascript:void(window.open("/adm/diff?filename=/~$cuname/$thisdisfn&versiontwo=priv","cat","height=300,width=500,scrollbars=1,resizable=1,menubar=0,location=1"))'> |
<a href='javascript:void(window.open("/adm/diff?filename=$thisdisfn&versiontwo=priv","cat","height=300,width=500,scrollbars=1,resizable=1,menubar=0,location=1"))'> |
ENDDIFF |
ENDDIFF |
$r->print(&mt('Diffs with Current Version').'</a>'); |
$r->print(&mt('Diffs with Current Version').'</a>'); |
} |
} |
Line 2272 ENDDIFF
|
Line 2236 ENDDIFF
|
.&Apache::lonhtmlcommon::end_pick_box() |
.&Apache::lonhtmlcommon::end_pick_box() |
); |
); |
|
|
# ------------------ Publishing from $thisfn to $thistarget with $thisembstyle. |
# ---------------------- Publishing from $fn to $thistarget with $thisembstyle. |
|
|
unless ($env{'form.phase'} eq 'two') { |
unless ($env{'form.phase'} eq 'two') { |
# ---------------------------------------------------------- Parse for problems |
# ---------------------------------------------------------- Parse for problems |
my ($warningcount,$errorcount); |
my ($warningcount,$errorcount); |
if ($thisembstyle eq 'ssi') { |
if ($thisembstyle eq 'ssi') { |
($warningcount,$errorcount)=&checkonthis($r,$thisfn); |
($warningcount,$errorcount)=&checkonthis($r,$fn); |
} |
} |
unless ($errorcount) { |
unless ($errorcount) { |
my ($outstring,$error)= |
my ($outstring,$error)= |
&publish($thisfn,$thistarget,$thisembstyle); |
&publish($docroot.$fn,$thistarget,$thisembstyle); |
$r->print($outstring); |
$r->print($outstring); |
} else { |
} else { |
$r->print('<h3 class="LC_error">'. |
$r->print('<h3 class="LC_error">'. |
Line 2290 ENDDIFF
|
Line 2254 ENDDIFF
|
'</h3>'); |
'</h3>'); |
} |
} |
} else { |
} else { |
&phasetwo($r,$thisfn,$thistarget,$thisembstyle,$thisdistarget); |
&phasetwo($r,$fn,$thistarget,$thisembstyle,$thisdistarget); |
} |
} |
} |
} |
$r->print(&Apache::loncommon::end_page()); |
$r->print(&Apache::loncommon::end_page()); |