version 1.182, 2005/01/12 16:18:54
|
version 1.191, 2005/04/04 23:55:17
|
Line 139 my $cuname;
|
Line 139 my $cuname;
|
my $cudom; |
my $cudom; |
|
|
my $registered_cleanup; |
my $registered_cleanup; |
|
my $modified_urls; |
|
|
=pod |
=pod |
|
|
Line 547 sub get_max_ids_indices {
|
Line 548 sub get_max_ids_indices {
|
my $counter; |
my $counter; |
if ($counter=$addid{$token->[1]}) { |
if ($counter=$addid{$token->[1]}) { |
if ($counter eq 'id') { |
if ($counter eq 'id') { |
if (defined($token->[2]->{'id'})) { |
if (defined($token->[2]->{'id'}) && |
|
$token->[2]->{'id'} !~ /^\s*$/) { |
$maxid=($token->[2]->{'id'}>$maxid)?$token->[2]->{'id'}:$maxid; |
$maxid=($token->[2]->{'id'}>$maxid)?$token->[2]->{'id'}:$maxid; |
if (exists($allids{$token->[2]->{'id'}})) { |
if (exists($allids{$token->[2]->{'id'}})) { |
$duplicateids=1; |
$duplicateids=1; |
Line 559 sub get_max_ids_indices {
|
Line 561 sub get_max_ids_indices {
|
$needsfixup=1; |
$needsfixup=1; |
} |
} |
} else { |
} else { |
if (defined($token->[2]->{'index'})) { |
if (defined($token->[2]->{'index'}) && |
|
$token->[2]->{'index'} !~ /^\s*$/) { |
$maxindex=($token->[2]->{'index'}>$maxindex)?$token->[2]->{'index'}:$maxindex; |
$maxindex=($token->[2]->{'index'}>$maxindex)?$token->[2]->{'index'}:$maxindex; |
} else { |
} else { |
$needsfixup=1; |
$needsfixup=1; |
Line 673 sub fix_ids_and_indices {
|
Line 676 sub fix_ids_and_indices {
|
if (!$counter) { $counter=$addid{$lctag}; } |
if (!$counter) { $counter=$addid{$lctag}; } |
if ($counter) { |
if ($counter) { |
if ($counter eq 'id') { |
if ($counter eq 'id') { |
unless (defined($parms{'id'})) { |
unless (defined($parms{'id'}) && |
|
$parms{'id'}!~/^\s*$/) { |
$maxid++; |
$maxid++; |
$parms{'id'}=$maxid; |
$parms{'id'}=$maxid; |
print $logfile 'ID: '.$tag.':'.$maxid."\n"; |
print $logfile 'ID: '.$tag.':'.$maxid."\n"; |
} |
} |
} elsif ($counter eq 'index') { |
} elsif ($counter eq 'index') { |
unless (defined($parms{'index'})) { |
unless (defined($parms{'index'}) && |
|
$parms{'index'}!~/^\s*$/) { |
$maxindex++; |
$maxindex++; |
$parms{'index'}=$maxindex; |
$parms{'index'}=$maxindex; |
print $logfile 'Index: '.$tag.':'.$maxindex."\n"; |
print $logfile 'Index: '.$tag.':'.$maxindex."\n"; |
Line 841 sub store_metadata {
|
Line 846 sub store_metadata {
|
} |
} |
|
|
|
|
|
# ========================================== Parse file for errors and warnings |
|
|
|
sub checkonthis { |
|
my ($r,$source)=@_; |
|
my $uri=&Apache::lonnet::hreflocation($source); |
|
$uri=~s/\/$//; |
|
my $result=&Apache::lonnet::ssi_body($uri, |
|
('grade_target'=>'web', |
|
'return_only_error_and_warning_counts' => 1)); |
|
my ($errorcount,$warningcount)=split(':',$result); |
|
if (($errorcount) || ($warningcount)) { |
|
$r->print('<br /><tt>'.$uri.'</tt>: '); |
|
if ($errorcount) { |
|
$r->print('<img src="/adm/lonMisc/bomb.gif" /><font color="red"><b>'. |
|
$errorcount.' '. |
|
&mt('error(s)').'</b></font> '); |
|
} |
|
if ($warningcount) { |
|
$r->print('<font color="blue">'. |
|
$warningcount.' '. |
|
&mt('warning(s)').'</font>'); |
|
} |
|
} else { |
|
#$r->print('<font color="green">'.&mt('ok').'</font>'); |
|
} |
|
$r->rflush(); |
|
return ($warningcount,$errorcount); |
|
} |
|
|
# ============================================== Parse file itself for metadata |
# ============================================== Parse file itself for metadata |
# |
# |
# parses a file with target meta, sets global %metadatafields %metadatakeys |
# parses a file with target meta, sets global %metadatafields %metadatakeys |
Line 1006 sub publish {
|
Line 1040 sub publish {
|
$scrout.=&metaread($logfile,$currentpath.'default.meta',$prefix); |
$scrout.=&metaread($logfile,$currentpath.'default.meta',$prefix); |
$prefix=~s|^\.\./||; |
$prefix=~s|^\.\./||; |
} |
} |
|
|
# ----------------------------------------------------------- Parse file itself |
# ----------------------------------------------------------- Parse file itself |
# read %metadatafields from file itself |
# read %metadatafields from file itself |
|
|
Line 1254 END
|
Line 1289 END
|
} |
} |
my $copyright_help = |
my $copyright_help = |
Apache::loncommon::help_open_topic('Publishing_Copyright'); |
Apache::loncommon::help_open_topic('Publishing_Copyright'); |
$intr_scrout =~ s/DISTRIBUTION:/'DISTRIBUTION: ' . $copyright_help/ge; |
$intr_scrout =~ s/Distribution:/'Distribution: ' . $copyright_help/ge; |
$intr_scrout.=&text_with_browse_field('Custom Distribution File','customdistributionfile',$metadatafields{'customdistributionfile'},'rights').$copyright_help; |
$intr_scrout.=&text_with_browse_field('Custom Distribution File','customdistributionfile',$metadatafields{'customdistributionfile'},'rights').$copyright_help; |
$intr_scrout.=&selectbox('Source Distribution','sourceavail', |
$intr_scrout.=&selectbox('Source Distribution','sourceavail', |
$defaultsourceoption, |
$defaultsourceoption, |
Line 1545 sub phasetwo {
|
Line 1580 sub phasetwo {
|
$r->rflush; |
$r->rflush; |
|
|
# ------------------------------------------------------------- Trigger updates |
# ------------------------------------------------------------- Trigger updates |
print $logfile("\nRegistering for notifications: $target $source\n"); |
push(@{$modified_urls},[$target,$source]); |
push(@{$ENV{'internal.publication.targetsource'}},[$target,$source]); |
|
unless ($registered_cleanup) { |
unless ($registered_cleanup) { |
&Apache::lonnet::logthis('Cleanup handler registered'); |
|
$r->register_cleanup(\¬ify); |
$r->register_cleanup(\¬ify); |
$registered_cleanup=1; |
$registered_cleanup=1; |
} |
} |
Line 1580 sub phasetwo {
|
Line 1613 sub phasetwo {
|
# =============================================================== Notifications |
# =============================================================== Notifications |
sub notify { |
sub notify { |
# --------------------------------------------------- Send update notifications |
# --------------------------------------------------- Send update notifications |
&Apache::lonnet::logthis('Cleanup Phase Publication Handler'); |
foreach my $targetsource (@{$modified_urls}){ |
foreach my $targetsource (@{$ENV{'internal.publication.targetsource'}}){ |
|
my ($target,$source)=@{$targetsource}; |
my ($target,$source)=@{$targetsource}; |
my $logfile=Apache::File->new('>>'.$source.'.log'); |
my $logfile=Apache::File->new('>>'.$source.'.log'); |
print $logfile "\nCleanup phase: Notifications\n"; |
print $logfile "\nCleanup phase: Notifications\n"; |
Line 1695 sub publishdirectory {
|
Line 1727 sub publishdirectory {
|
$ruid,$rgid,$rrdev,$rsize, |
$ruid,$rgid,$rrdev,$rsize, |
$ratime,$rmtime,$rctime, |
$ratime,$rmtime,$rctime, |
$rblksize,$rblocks)=stat($resdir.'/'.$filename); |
$rblksize,$rblocks)=stat($resdir.'/'.$filename); |
if (($rmtime<$cmtime) || ($ENV{'form.forcerepub'})) { |
if (($rmtime<$cmtime) || ($ENV{'form.forcerepub'} eq 'ON')) { |
# previously published, modified now |
# previously published, modified now |
$publishthis=1; |
$publishthis=1; |
} |
} |
Line 1824 sub handler {
|
Line 1856 sub handler {
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['filename']); |
['filename']); |
|
|
# ------------------------------------------------- Flag for registered cleanup |
# -------------------------------------- Flag and buffer for registered cleanup |
$registered_cleanup=0; |
$registered_cleanup=0; |
|
@{$modified_urls}=(); |
# -------------------------------------------------------------- Check filename |
# -------------------------------------------------------------- Check filename |
|
|
my $fn=&Apache::lonnet::unescape($ENV{'form.filename'}); |
my $fn=&Apache::lonnet::unescape($ENV{'form.filename'}); |
Line 1979 ENDDIFF
|
Line 2012 ENDDIFF
|
# ------------------ Publishing from $thisfn to $thistarget with $thisembstyle. |
# ------------------ Publishing from $thisfn to $thistarget with $thisembstyle. |
|
|
unless ($ENV{'form.phase'} eq 'two') { |
unless ($ENV{'form.phase'} eq 'two') { |
my ($outstring,$error)=&publish($thisfn,$thistarget,$thisembstyle); |
# ---------------------------------------------------------- Parse for problems |
$r->print('<hr />'.$outstring); |
my ($warningcount,$errorcount); |
|
if ($thisembstyle eq 'ssi') { |
|
($warningcount,$errorcount)=&checkonthis($r,$thisfn); |
|
} |
|
unless ($errorcount) { |
|
my ($outstring,$error)= |
|
&publish($thisfn,$thistarget,$thisembstyle); |
|
$r->print('<hr />'.$outstring); |
|
} else { |
|
$r->print('<h3>'. |
|
&mt('The document contains errors and cannot be published.'). |
|
'</h3>'); |
|
} |
} else { |
} else { |
$r->print('<hr />'. |
$r->print('<hr />'. |
&phasetwo($r,$thisfn,$thistarget,$thisembstyle,$thisdistarget)); |
&phasetwo($r,$thisfn,$thistarget,$thisembstyle,$thisdistarget)); |