version 1.111, 2003/02/18 23:13:54
|
version 1.115, 2003/03/14 02:26:12
|
Line 789 This is the workhorse function of this m
|
Line 789 This is the workhorse function of this m
|
backup copies, performs any automatic processing (prior to publication, |
backup copies, performs any automatic processing (prior to publication, |
especially for rat and ssi files), |
especially for rat and ssi files), |
|
|
|
Returns a 2 element array, the first is the string to be shown to the |
|
user, the second is an error code, either 1 (an error occured) or 0 |
|
(no error occurred) |
|
|
I<Additional documentation needed.> |
I<Additional documentation needed.> |
|
|
=cut |
=cut |
Line 805 sub publish {
|
Line 809 sub publish {
|
my %allow=(); |
my %allow=(); |
|
|
unless ($logfile=Apache::File->new('>>'.$source.'.log')) { |
unless ($logfile=Apache::File->new('>>'.$source.'.log')) { |
return |
return ('<font color="red">No write permission to user directory, FAIL</font>',1); |
'<font color=red>No write permission to user directory, FAIL</font>'; |
|
} |
} |
print $logfile |
print $logfile |
"\n\n================= Publish ".localtime()." Phase One ================\n"; |
"\n\n================= Publish ".localtime()." Phase One ================\n"; |
Line 820 sub publish {
|
Line 823 sub publish {
|
print $logfile "Copied original file to ".$copyfile."\n"; |
print $logfile "Copied original file to ".$copyfile."\n"; |
} else { |
} else { |
print $logfile "Unable to write backup ".$copyfile.':'.$!."\n"; |
print $logfile "Unable to write backup ".$copyfile.':'.$!."\n"; |
return "<font color=red>Failed to write backup copy, $!,FAIL</font>"; |
return ("<font color=\"red\">Failed to write backup copy, $!,FAIL</font>",1); |
} |
} |
# ------------------------------------------------------------- IDs and indices |
# ------------------------------------------------------------- IDs and indices |
|
|
my ($outstring,$error); |
my ($outstring,$error); |
($outstring,$error,%allow)=&fix_ids_and_indices($logfile,$source, |
($outstring,$error,%allow)=&fix_ids_and_indices($logfile,$source, |
$target); |
$target); |
if ($error) { return $outstring; } |
if ($error) { return ($outstring,$error); } |
# ------------------------------------------------------------ Construct Allows |
# ------------------------------------------------------------ Construct Allows |
|
|
$scrout.='<h3>Dependencies</h3>'; |
$scrout.='<h3>Dependencies</h3>'; |
Line 872 sub publish {
|
Line 875 sub publish {
|
my $org; |
my $org; |
unless ($org=Apache::File->new('>'.$source)) { |
unless ($org=Apache::File->new('>'.$source)) { |
print $logfile "No write permit to $source\n"; |
print $logfile "No write permit to $source\n"; |
return |
return ('<font color="red">No write permission to '.$source. |
'<font color="red">No write permission to '.$source. |
', FAIL</font>',1); |
', FAIL</font>'; |
|
} |
} |
print($org $outstring); |
print($org $outstring); |
} |
} |
Line 948 sub publish {
|
Line 950 sub publish {
|
my $oldenv=$ENV{'request.uri'}; |
my $oldenv=$ENV{'request.uri'}; |
|
|
$ENV{'request.uri'}=$target; |
$ENV{'request.uri'}=$target; |
$Apache::lonxml::debug=1; |
|
$allmeta=Apache::lonxml::xmlparse(undef,'meta',$content); |
$allmeta=Apache::lonxml::xmlparse(undef,'meta',$content); |
$Apache::lonxml::debug=0; |
|
$ENV{'request.uri'}=$oldenv; |
$ENV{'request.uri'}=$oldenv; |
|
|
&metaeval($allmeta); |
&metaeval($allmeta); |
Line 1105 END
|
Line 1105 END
|
$metadatafields{'owner'}); |
$metadatafields{'owner'}); |
|
|
# -------------------------------------------------- Correct copyright for rat. |
# -------------------------------------------------- Correct copyright for rat. |
if ($style eq 'rat') { |
unless ($style eq 'prv') { |
|
if ($style eq 'rat') { |
if ($metadatafields{'copyright'} eq 'public') { |
if ($metadatafields{'copyright'} eq 'public') { |
delete $metadatafields{'copyright'}; |
delete $metadatafields{'copyright'}; |
} |
} |
Line 1113 END
|
Line 1114 END
|
$metadatafields{'copyright'}, |
$metadatafields{'copyright'}, |
\&Apache::loncommon::copyrightdescription, |
\&Apache::loncommon::copyrightdescription, |
(grep !/^public$/,(&Apache::loncommon::copyrightids))); |
(grep !/^public$/,(&Apache::loncommon::copyrightids))); |
} |
} else { |
else { |
|
$scrout.=&selectbox('Copyright/Distribution','copyright', |
$scrout.=&selectbox('Copyright/Distribution','copyright', |
$metadatafields{'copyright'}, |
$metadatafields{'copyright'}, |
\&Apache::loncommon::copyrightdescription, |
\&Apache::loncommon::copyrightdescription, |
(&Apache::loncommon::copyrightids)); |
(&Apache::loncommon::copyrightids)); |
} |
} |
|
|
my $copyright_help = |
my $copyright_help = |
Apache::loncommon::help_open_topic('Publishing_Copyright'); |
Apache::loncommon::help_open_topic('Publishing_Copyright'); |
$scrout =~ s/DISTRIBUTION:/'DISTRIBUTION: ' . $copyright_help/ge; |
$scrout =~ s/DISTRIBUTION:/'DISTRIBUTION: ' . $copyright_help/ge; |
return $scrout. |
$scrout.=&textfield('Custom Distribution File','customdistributionfile', |
'<p><input type="submit" value="Finalize Publication" /></p></form>'; |
$metadatafields{'customdistributionfile'}). |
|
$copyright_help; |
|
} else { |
|
$scrout.=&hiddenfield('copyright','private'); |
|
} |
|
return ($scrout.'<p><input type="submit" value="Finalize Publication" /></p></form>',0); |
# ============================================================================= |
# ============================================================================= |
# BATCH MODE |
# BATCH MODE |
# |
# |
Line 1153 END
|
Line 1158 END
|
$ENV{'form.copyright'}='default'; |
$ENV{'form.copyright'}='default'; |
} |
} |
$ENV{'form.allmeta'}=&Apache::lonnet::escape($allmeta); |
$ENV{'form.allmeta'}=&Apache::lonnet::escape($allmeta); |
return $scrout; |
return ($scrout,0); |
} |
} |
} |
} |
|
|
Line 1203 sub phasetwo {
|
Line 1208 sub phasetwo {
|
|
|
if ($target=~/\_\_\_/) { |
if ($target=~/\_\_\_/) { |
$r->print( |
$r->print( |
'<font color=red>Unsupported character combination "<tt>___</tt>" in filename, FAIL</font>'); |
'<font color="red">Unsupported character combination "<tt>___</tt>" in filename, FAIL</font>'); |
return 0; |
return 0; |
} |
} |
$distarget=~s/\/+/\//g; |
$distarget=~s/\/+/\//g; |
my $logfile; |
my $logfile; |
unless ($logfile=Apache::File->new('>>'.$source.'.log')) { |
unless ($logfile=Apache::File->new('>>'.$source.'.log')) { |
$r->print( |
$r->print( |
'<font color=red>No write permission to user directory, FAIL</font>'); |
'<font color="red">No write permission to user directory, FAIL</font>'); |
return 0; |
return 0; |
} |
} |
print $logfile |
print $logfile |
Line 1232 sub phasetwo {
|
Line 1237 sub phasetwo {
|
$metadatafields{'lastrevisiondate'}=$ENV{'form.lastrevisiondate'}; |
$metadatafields{'lastrevisiondate'}=$ENV{'form.lastrevisiondate'}; |
$metadatafields{'owner'}=$ENV{'form.owner'}; |
$metadatafields{'owner'}=$ENV{'form.owner'}; |
$metadatafields{'copyright'}=$ENV{'form.copyright'}; |
$metadatafields{'copyright'}=$ENV{'form.copyright'}; |
|
$metadatafields{'customdistributionfile'}= |
|
$ENV{'form.customdistributionfile'}; |
$metadatafields{'dependencies'}=$ENV{'form.dependencies'}; |
$metadatafields{'dependencies'}=$ENV{'form.dependencies'}; |
|
|
my $allkeywords=$ENV{'form.addkey'}; |
my $allkeywords=$ENV{'form.addkey'}; |
Line 1251 sub phasetwo {
|
Line 1258 sub phasetwo {
|
my $mfh; |
my $mfh; |
unless ($mfh=Apache::File->new('>'.$source.'.meta')) { |
unless ($mfh=Apache::File->new('>'.$source.'.meta')) { |
return |
return |
'<font color=red>Could not write metadata, FAIL</font>'; |
'<font color="red">Could not write metadata, FAIL</font>'; |
} |
} |
foreach (sort keys %metadatafields) { |
foreach (sort keys %metadatafields) { |
unless ($_=~/\./) { |
unless ($_=~/\./) { |
Line 1303 sub phasetwo {
|
Line 1310 sub phasetwo {
|
my $srcd=$1; |
my $srcd=$1; |
unless ($srcd=~/^\/home\/httpd\/html\/res/) { |
unless ($srcd=~/^\/home\/httpd\/html\/res/) { |
print $logfile "\nPANIC: Target dir is ".$srcd; |
print $logfile "\nPANIC: Target dir is ".$srcd; |
return "<font color=red>Invalid target directory, FAIL</font>"; |
return "<font color=\"red\">Invalid target directory, FAIL</font>"; |
} |
} |
opendir(DIR,$srcd); |
opendir(DIR,$srcd); |
while ($filename=readdir(DIR)) { |
while ($filename=readdir(DIR)) { |
Line 1328 sub phasetwo {
|
Line 1335 sub phasetwo {
|
$r->print('<p>Copied old target file'); |
$r->print('<p>Copied old target file'); |
} else { |
} else { |
print $logfile "Unable to write ".$copyfile.':'.$!."\n"; |
print $logfile "Unable to write ".$copyfile.':'.$!."\n"; |
return "<font color=red>Failed to copy old target, $!, FAIL</font>"; |
return "<font color=\"red\">Failed to copy old target, $!, FAIL</font>"; |
} |
} |
|
|
# --------------------------------------------------------------- Copy Metadata |
# --------------------------------------------------------------- Copy Metadata |
Line 1342 sub phasetwo {
|
Line 1349 sub phasetwo {
|
print $logfile "Unable to write metadata ".$copyfile.':'.$!."\n"; |
print $logfile "Unable to write metadata ".$copyfile.':'.$!."\n"; |
if (-e $target.'.meta') { |
if (-e $target.'.meta') { |
return |
return |
"<font color=red>Failed to write old metadata copy, $!, FAIL</font>"; |
"<font color=\"red\">Failed to write old metadata copy, $!, FAIL</font>"; |
} |
} |
} |
} |
|
|
Line 1373 sub phasetwo {
|
Line 1380 sub phasetwo {
|
$r->print('<p>Copied source file'); |
$r->print('<p>Copied source file'); |
} else { |
} else { |
print $logfile "\nUnable to write ".$copyfile.':'.$!."\n"; |
print $logfile "\nUnable to write ".$copyfile.':'.$!."\n"; |
return "<font color=red>Failed to copy source, $!, FAIL</font>"; |
return "<font color=\"red\">Failed to copy source, $!, FAIL</font>"; |
} |
} |
|
|
# --------------------------------------------------------------- Copy Metadata |
# --------------------------------------------------------------- Copy Metadata |
Line 1386 sub phasetwo {
|
Line 1393 sub phasetwo {
|
} else { |
} else { |
print $logfile "\nUnable to write metadata ".$copyfile.':'.$!."\n"; |
print $logfile "\nUnable to write metadata ".$copyfile.':'.$!."\n"; |
return |
return |
"<font color=red>Failed to write metadata copy, $!, FAIL</font>"; |
"<font color=\"red\">Failed to write metadata copy, $!, FAIL</font>"; |
} |
} |
$r->rflush; |
$r->rflush; |
# --------------------------------------------------- Send update notifications |
# --------------------------------------------------- Send update notifications |
Line 1474 sub batchpublish {
|
Line 1481 sub batchpublish {
|
|
|
# phase one takes |
# phase one takes |
# my ($source,$target,$style,$batch)=@_; |
# my ($source,$target,$style,$batch)=@_; |
$r->print('<p>'.&publish($srcfile,$targetfile,$thisembstyle,1).'</p>'); |
my ($outstring,$error)=&publish($srcfile,$targetfile,$thisembstyle,1); |
|
$r->print('<p>'.$outstring.'</p>'); |
# phase two takes |
# phase two takes |
# my ($source,$target,$style,$distarget,batch)=@_; |
# my ($source,$target,$style,$distarget,batch)=@_; |
# $ENV{'form.allmeta'},$ENV{'form.title'},$ENV{'form.author'},... |
# $ENV{'form.allmeta'},$ENV{'form.title'},$ENV{'form.author'},... |
$r->print('<p>'); |
if (!$error) { |
&phasetwo($r,$srcfile,$targetfile,$thisembstyle,$thisdistarget,1); |
$r->print('<p>'); |
$r->print('</p>'); |
&phasetwo($r,$srcfile,$targetfile,$thisembstyle,$thisdistarget,1); |
|
$r->print('</p>'); |
|
} |
return ''; |
return ''; |
} |
} |
|
|
Line 1595 sub handler {
|
Line 1605 sub handler {
|
|
|
# -------------------------------------------------------------- Check filename |
# -------------------------------------------------------------- Check filename |
|
|
my $fn=$ENV{'form.filename'}; |
my $fn=&Apache::lonnet::unescape($ENV{'form.filename'}); |
|
|
|
|
unless ($fn) { |
unless ($fn) { |
Line 1725 unless ($ENV{'form.phase'} eq 'two') {
|
Line 1735 unless ($ENV{'form.phase'} eq 'two') {
|
# ------------------ 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') { |
$r->print( |
my ($outstring,$error)=&publish($thisfn,$thistarget,$thisembstyle); |
'<hr />'.&publish($thisfn,$thistarget,$thisembstyle)); |
$r->print('<hr />'.$outstring); |
} else { |
} else { |
$r->print('<hr />'); |
$r->print('<hr />'); |
&phasetwo($r,$thisfn,$thistarget,$thisembstyle,$thisdistarget); |
&phasetwo($r,$thisfn,$thistarget,$thisembstyle,$thisdistarget); |
} |
} |
|
|
} |
} |
$r->print('</body></html>'); |
$r->print('</body></html>'); |
|
|