--- loncom/publisher/lonpublisher.pm 2001/12/15 18:15:27 1.65
+++ loncom/publisher/lonpublisher.pm 2002/01/16 19:09:31 1.70
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Publication Handler
#
-# $Id: lonpublisher.pm,v 1.65 2001/12/15 18:15:27 harris41 Exp $
+# $Id: lonpublisher.pm,v 1.70 2002/01/16 19:09:31 harris41 Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -41,7 +41,8 @@
# 12/05 Gerd Kortemeyer
# 12/05 Guy Albertelli
# 12/06,12/07 Gerd Kortemeyer
-# 12/15 Scott Harrison
+# 12/15,12/16 Scott Harrison
+# 12/25 Gerd Kortemeyer
#
###
@@ -145,8 +146,9 @@ sub metaread {
# ---------------------------- convert 'time' format into a datetime sql format
sub sqltime {
+ my $timef=shift @_;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
- localtime(@_[0]);
+ localtime($timef);
$mon++; $year+=1900;
return "$year-$mon-$mday $hour:$min:$sec";
}
@@ -184,6 +186,11 @@ sub selectbox {
sub urlfixup {
my ($url,$target)=@_;
unless ($url) { return ''; }
+ #javascript code needs no fixing
+ if ($url =~ /^javascript:/i) { return $url; }
+ if ($url =~ /^mailto:/i) { return $url; }
+ #internal document links need no fixing
+ if ($url =~ /^\#/) { return $url; }
my ($host)=($url=~/(?:http\:\/\/)*([^\/]+)/);
foreach (values %Apache::lonnet::hostname) {
if ($_ eq $host) {
@@ -509,7 +516,7 @@ sub publish {
$chparms;
}
- my $chparms='';
+ $chparms='';
foreach (sort keys %oldparmstores) {
if (($_=~/^parameter/) || ($_=~/^stores/)) {
unless (($metadatafields{$_.'.name'}) ||
@@ -541,6 +548,7 @@ sub publish {
my $keywordout='
Keywords:
';
@@ -597,7 +606,7 @@ sub publish {
$scrout.=&selectbox('Language','language',
$metadatafields{'language'},
- \&{Apache::loncommon::languagedescription},
+ \&Apache::loncommon::languagedescription,
(&Apache::loncommon::languageids),
);
@@ -618,13 +627,13 @@ sub publish {
}
$scrout.=&selectbox('Copyright/Distribution','copyright',
$metadatafields{'copyright'},
- \&{Apache::loncommon::copyrightdescription},
+ \&Apache::loncommon::copyrightdescription,
(grep !/^public$/,(&Apache::loncommon::copyrightids)));
}
else {
$scrout.=&selectbox('Copyright/Distribution','copyright',
$metadatafields{'copyright'},
- \&{Apache::loncommon::copyrightdescription},
+ \&Apache::loncommon::copyrightdescription,
(&Apache::loncommon::copyrightids));
}
return $scrout.
@@ -757,7 +766,8 @@ sub phasetwo {
} else {
$scrout.='Private Publication - did not synchronize database';
- print $logfile "\nPrivate: Did not ynchronized SQL metadata database";
+ print $logfile "\nPrivate: Did not synchronize data into ".
+ "SQL metadata database";
}
# ----------------------------------------------------------- Copy old versions
@@ -1058,7 +1068,7 @@ unless ($ENV{'form.phase'} eq 'two') {
$thisdisfn=~s/^\/home\/$cuname\/public_html\///;
$r->print('
Publishing '.
- &Apache::lonnet::filedescription($thistype).' '.
+ &Apache::loncommon::filedescription($thistype).' '.
$thisdisfn.'
Target: '.$thisdistarget.'');
if (($cuname ne $ENV{'user.name'}) || ($cudom ne $ENV{'user.domain'})) {
@@ -1091,9 +1101,107 @@ unless ($ENV{'form.phase'} eq 'two') {
1;
__END__
+=head1 NAME
+
+Apache::lonpublisher - Publication Handler
+
+=head1 SYNOPSIS
+
+Invoked by /etc/httpd/conf/srm.conf:
+
+
+ PerlAccessHandler Apache::lonacc
+ SetHandler perl-script
+ PerlHandler Apache::lonpublisher
+ ErrorDocument 403 /adm/login
+ ErrorDocument 404 /adm/notfound.html
+ ErrorDocument 406 /adm/unauthorized.html
+ ErrorDocument 500 /adm/errorhandler
+
+
+=head1 INTRODUCTION
+
+This module publishes a file. This involves gathering metadata,
+versioning the file, copying file from construction space to
+publication space, and copying metadata from construction space
+to publication space.
+
+This is part of the LearningOnline Network with CAPA project
+described at http://www.lon-capa.org.
+
+=head1 HANDLER SUBROUTINE
+
+This routine is called by Apache and mod_perl.
+
+=over 4
+
+=item *
+
+Get query string for limited number of parameters
+
+=item *
+
+Check filename
+
+=item *
+
+File is there and owned, init lookup tables
+
+=item *
+
+Start page output
+
+=item *
+
+Individual file
+
+=item *
+
+publish from $thisfn to $thistarget with $thisembstyle
+
+=back
+
+=head1 OTHER SUBROUTINES
+
+=over 4
+
+=item *
+
+metaeval() : Evaluate string with metadata
+
+=item *
+
+metaread() : Read a metadata file
+
+=item *
+
+sqltime() : convert 'time' format into a datetime sql format
+
+=item *
+
+textfield() : form field
+
+=item *
+
+hiddenfield() : form field
+
+=item *
+
+selectbox() : form field
+
+=item *
+
+urlfixup() : fixup URL (Publication Step One)
+=item *
+publish() : publish (Publication Step One)
+=item *
+phasetwo() : render second interface showing status of publication steps
+(Publication Step Two)
+=back
+=cut