version 1.115, 2003/03/14 02:26:12
|
version 1.118, 2003/03/14 16:12:14
|
Line 436 sub get_subscribed_hosts {
|
Line 436 sub get_subscribed_hosts {
|
my $srcf=$2; |
my $srcf=$2; |
opendir(DIR,$1); |
opendir(DIR,$1); |
while ($filename=readdir(DIR)) { |
while ($filename=readdir(DIR)) { |
if ($filename=~/$srcf\.(\w+)$/) { |
if ($filename=~/\Q$srcf\E\.(\w+)$/) { |
my $subhost=$1; |
my $subhost=$1; |
if (($subhost ne 'meta' && $subhost ne 'subscription') && |
if (($subhost ne 'meta' && $subhost ne 'subscription') && |
($subhost ne $Apache::lonnet::perlvar{'lonHostID'})) { |
($subhost ne $Apache::lonnet::perlvar{'lonHostID'})) { |
Line 957 sub publish {
|
Line 957 sub publish {
|
} |
} |
# ---------------- Find and document discrepancies in the parameters and stores |
# ---------------- Find and document discrepancies in the parameters and stores |
|
|
my $chparms=''; |
my $chparms=''; |
foreach (sort keys %metadatafields) { |
foreach (sort keys %metadatafields) { |
if (($_=~/^parameter/) || ($_=~/^stores/)) { |
if (($_=~/^parameter/) || ($_=~/^stores/)) { |
unless ($_=~/\.\w+$/) { |
unless ($_=~/\.\w+$/) { |
unless ($oldparmstores{$_}) { |
unless ($oldparmstores{$_}) { |
print $logfile 'New: '.$_."\n"; |
print $logfile 'New: '.$_."\n"; |
$chparms.=$_.' '; |
$chparms.=$_.' '; |
} |
} |
} |
} |
} |
} |
} |
} |
if ($chparms) { |
if ($chparms) { |
$scrout.='<p><b>New parameters or stored values:</b> '. |
$scrout.='<p><b>New parameters or stored values:</b> '.$chparms; |
$chparms; |
} |
} |
|
|
|
$chparms=''; |
$chparms=''; |
foreach (sort keys %oldparmstores) { |
foreach (sort keys %oldparmstores) { |
if (($_=~/^parameter/) || ($_=~/^stores/)) { |
if (($_=~/^parameter/) || ($_=~/^stores/)) { |
unless (($metadatafields{$_.'.name'}) || |
unless (($metadatafields{$_.'.name'}) || |
($metadatafields{$_.'.package'}) || ($_=~/\.\w+$/)) { |
($metadatafields{$_.'.package'}) || ($_=~/\.\w+$/)) { |
print $logfile 'Obsolete: '.$_."\n"; |
print $logfile 'Obsolete: '.$_."\n"; |
$chparms.=$_.' '; |
$chparms.=$_.' '; |
} |
} |
} |
} |
} |
} |
if ($chparms) { |
if ($chparms) { |
$scrout.='<p><b>Obsolete parameters or stored values:</b> '. |
$scrout.='<p><b>Obsolete parameters or stored values:</b> '. |
$chparms; |
$chparms; |
} |
} |
|
|
# ------------------------------------------------------- Now have all metadata |
# ------------------------------------------------------- Now have all metadata |
|
|
my %keywords=(); |
my %keywords=(); |
|
|
if (length($content)<500000) { |
if (length($content)<500000) { |
my $textonly=$content; |
my $textonly=$content; |
$textonly=~s/\<script[^\<]+\<\/script\>//g; |
$textonly=~s/\<script[^\<]+\<\/script\>//g; |
$textonly=~s/\<m\>[^\<]+\<\/m\>//g; |
$textonly=~s/\<m\>[^\<]+\<\/m\>//g; |
$textonly=~s/\<[^\>]*\>//g; |
$textonly=~s/\<[^\>]*\>//g; |
$textonly=~tr/A-Z/a-z/; |
$textonly=~tr/A-Z/a-z/; |
$textonly=~s/[\$\&][a-z]\w*//g; |
$textonly=~s/[\$\&][a-z]\w*//g; |
$textonly=~s/[^a-z\s]//g; |
$textonly=~s/[^a-z\s]//g; |
|
|
foreach ($textonly=~m/(\w+)/g) { |
foreach ($textonly=~m/(\w+)/g) { |
unless ($nokey{$_}) { |
unless ($nokey{$_}) { |
$keywords{$_}=1; |
$keywords{$_}=1; |
} |
} |
} |
} |
} |
} |
|
|
|
|
foreach (split(/\W+/,$metadatafields{'keywords'})) { |
foreach (split(/\W+/,$metadatafields{'keywords'})) { |
$keywords{$_}=1; |
$keywords{$_}=1; |
} |
} |
# --------------------------------------------------- Now we also have keywords |
# --------------------------------------------------- Now we also have keywords |
# ============================================================================= |
# ============================================================================= |
# INTERACTIVE MODE |
# INTERACTIVE MODE |
# |
# |
unless ($batch) { |
unless ($batch) { |
$scrout.= |
$scrout.= |
'<form name="pubform" action="/adm/publish" method="post">'. |
'<form name="pubform" action="/adm/publish" method="post">'. |
'<p><input type="submit" value="Finalize Publication" /></p>'. |
'<p><input type="submit" value="Finalize Publication" /></p>'. |
&hiddenfield('phase','two'). |
&hiddenfield('phase','two'). |
&hiddenfield('filename',$ENV{'form.filename'}). |
&hiddenfield('filename',$ENV{'form.filename'}). |
&hiddenfield('allmeta',&Apache::lonnet::escape($allmeta)). |
&hiddenfield('allmeta',&Apache::lonnet::escape($allmeta)). |
&hiddenfield('dependencies',join(',',keys %allow)). |
&hiddenfield('dependencies',join(',',keys %allow)). |
&textfield('Title','title',$metadatafields{'title'}). |
&textfield('Title','title',$metadatafields{'title'}). |
&textfield('Author(s)','author',$metadatafields{'author'}). |
&textfield('Author(s)','author',$metadatafields{'author'}). |
&textfield('Subject','subject',$metadatafields{'subject'}); |
&textfield('Subject','subject',$metadatafields{'subject'}); |
|
|
# --------------------------------------------------- Scan content for keywords |
# --------------------------------------------------- Scan content for keywords |
|
|
my $keywords_help = Apache::loncommon::help_open_topic("Publishing_Keywords"); |
my $keywords_help = Apache::loncommon::help_open_topic("Publishing_Keywords"); |
my $keywordout=<<"END"; |
my $keywordout=<<"END"; |
<script> |
<script> |
function checkAll(field) |
function checkAll(field) { |
{ |
|
for (i = 0; i < field.length; i++) |
for (i = 0; i < field.length; i++) |
field[i].checked = true ; |
field[i].checked = true ; |
} |
} |
|
|
function uncheckAll(field) |
function uncheckAll(field) { |
{ |
|
for (i = 0; i < field.length; i++) |
for (i = 0; i < field.length; i++) |
field[i].checked = false ; |
field[i].checked = false ; |
} |
} |
Line 1050 function uncheckAll(field)
|
Line 1047 function uncheckAll(field)
|
<input type="button" value="uncheck all" onclick="javascript:uncheckAll(document.pubform.keywords)"> |
<input type="button" value="uncheck all" onclick="javascript:uncheckAll(document.pubform.keywords)"> |
<br /> |
<br /> |
END |
END |
$keywordout.='<table border=2><tr>'; |
$keywordout.='<table border=2><tr>'; |
my $colcount=0; |
my $colcount=0; |
|
|
|
foreach (sort keys %keywords) { |
|
$keywordout.='<td><input type=checkbox name="keywords" value="'.$_.'"'; |
|
if ($metadatafields{'keywords'}) { |
|
if ($metadatafields{'keywords'}=~/$_/) { |
|
$keywordout.=' checked'; |
|
} |
|
} elsif (&Apache::loncommon::keyword($_)) { |
|
$keywordout.=' checked'; |
|
} |
|
$keywordout.='>'.$_.'</td>'; |
|
if ($colcount>10) { |
|
$keywordout.="</tr><tr>\n"; |
|
$colcount=0; |
|
} |
|
$colcount++; |
|
} |
|
|
foreach (sort keys %keywords) { |
|
$keywordout.='<td><input type=checkbox name="keywords" value="'.$_.'"'; |
|
if ($metadatafields{'keywords'}) { |
|
if ($metadatafields{'keywords'}=~/$_/) { |
|
$keywordout.=' checked'; |
|
} |
|
} elsif (&Apache::loncommon::keyword($_)) { |
|
$keywordout.=' checked'; |
|
} |
|
$keywordout.='>'.$_.'</td>'; |
|
if ($colcount>10) { |
|
$keywordout.="</tr><tr>\n"; |
|
$colcount=0; |
|
} |
|
$colcount++; |
|
} |
|
|
|
$keywordout.='</tr></table>'; |
$keywordout.='</tr></table>'; |
|
|
$scrout.=$keywordout; |
$scrout.=$keywordout; |
|
|
$scrout.=&textfield('Additional Keywords','addkey',''); |
$scrout.=&textfield('Additional Keywords','addkey',''); |
|
|
$scrout.=&textfield('Notes','notes',$metadatafields{'notes'}); |
$scrout.=&textfield('Notes','notes',$metadatafields{'notes'}); |
|
|
$scrout.= |
$scrout.= |
'<p><b>Abstract:</b><br><textarea cols=80 rows=5 name=abstract>'. |
'<p><b>Abstract:</b><br><textarea cols=80 rows=5 name=abstract>'. |
$metadatafields{'abstract'}.'</textarea>'; |
$metadatafields{'abstract'}.'</textarea>'; |
|
|
$source=~/\.(\w+)$/; |
$source=~/\.(\w+)$/; |
|
|
$scrout.=&hiddenfield('mime',$1); |
$scrout.=&hiddenfield('mime',$1); |
|
|
$scrout.=&selectbox('Language','language', |
$scrout.=&selectbox('Language','language', |
$metadatafields{'language'}, |
$metadatafields{'language'}, |
\&Apache::loncommon::languagedescription, |
\&Apache::loncommon::languagedescription, |
(&Apache::loncommon::languageids), |
(&Apache::loncommon::languageids), |
); |
); |
|
|
unless ($metadatafields{'creationdate'}) { |
unless ($metadatafields{'creationdate'}) { |
$metadatafields{'creationdate'}=time; |
$metadatafields{'creationdate'}=time; |
} |
} |
$scrout.=&hiddenfield('creationdate', |
$scrout.=&hiddenfield('creationdate', |
&Apache::loncommon::unsqltime($metadatafields{'creationdate'})); |
&Apache::loncommon::unsqltime($metadatafields{'creationdate'})); |
|
|
|
$scrout.=&hiddenfield('lastrevisiondate',time); |
|
|
$scrout.=&hiddenfield('lastrevisiondate',time); |
|
|
|
|
|
$scrout.=&textfield('Publisher/Owner','owner', |
$scrout.=&textfield('Publisher/Owner','owner', |
$metadatafields{'owner'}); |
$metadatafields{'owner'}); |
|
|
# -------------------------------------------------- Correct copyright for rat. |
# -------------------------------------------------- Correct copyright for rat. |
unless ($style eq 'prv') { |
unless ($style eq 'prv') { |
if ($style eq 'rat') { |
if ($style eq 'rat') { |
if ($metadatafields{'copyright'} eq 'public') { |
if ($metadatafields{'copyright'} eq 'public') { |
delete $metadatafields{'copyright'}; |
delete $metadatafields{'copyright'}; |
} |
} |
$scrout.=&selectbox('Copyright/Distribution','copyright', |
$scrout.=&selectbox('Copyright/Distribution','copyright', |
$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; |
$scrout.=&textfield('Custom Distribution File','customdistributionfile', |
$scrout.=&textfield('Custom Distribution File','customdistributionfile', |
$metadatafields{'customdistributionfile'}). |
$metadatafields{'customdistributionfile'}). |
$copyright_help; |
$copyright_help; |
} else { |
} else { |
$scrout.=&hiddenfield('copyright','private'); |
$scrout.=&hiddenfield('copyright','private'); |
} |
} |
return ($scrout.'<p><input type="submit" value="Finalize Publication" /></p></form>',0); |
return ($scrout.'<p><input type="submit" value="Finalize Publication" /></p></form>',0); |
# ============================================================================= |
# ============================================================================= |
# BATCH MODE |
# BATCH MODE |
# |
# |
} else { |
} else { |
# Transfer metadata directly to environment for stage 2 |
# Transfer metadata directly to environment for stage 2 |
foreach (keys %metadatafields) { |
foreach (keys %metadatafields) { |
$ENV{'form.'.$_}=$metadatafields{$_}; |
$ENV{'form.'.$_}=$metadatafields{$_}; |
|
} |
|
$ENV{'form.addkey'}=''; |
|
$ENV{'form.keywords'}=''; |
|
foreach (keys %keywords) { |
|
if ($metadatafields{'keywords'}) { |
|
if ($metadatafields{'keywords'}=~/$_/) { |
|
$ENV{'form.keywords'}.=$_.','; |
|
} |
|
} elsif (&Apache::loncommon::keyword($_)) { |
|
$ENV{'form.keywords'}.=$_.','; |
|
} |
|
} |
|
$ENV{'form.keywords'}=~s/\,$//; |
|
unless ($ENV{'form.creationdate'}) { $ENV{'form.creationdate'}=time; } |
|
$ENV{'form.lastrevisiondate'}=time; |
|
if ((($style eq 'rat') && ($ENV{'form.copyright'} eq 'public')) || |
|
(!$ENV{'form.copyright'})) { |
|
$ENV{'form.copyright'}='default'; |
|
} |
|
$ENV{'form.allmeta'}=&Apache::lonnet::escape($allmeta); |
|
return ($scrout,0); |
} |
} |
$ENV{'form.addkey'}=''; |
|
$ENV{'form.keywords'}=''; |
|
foreach (keys %keywords) { |
|
if ($metadatafields{'keywords'}) { |
|
if ($metadatafields{'keywords'}=~/$_/) { |
|
$ENV{'form.keywords'}.=$_.','; |
|
} |
|
} elsif (&Apache::loncommon::keyword($_)) { |
|
$ENV{'form.keywords'}.=$_.','; |
|
} |
|
} |
|
$ENV{'form.keywords'}=~s/\,$//; |
|
unless ($ENV{'form.creationdate'}) { $ENV{'form.creationdate'}=time; } |
|
$ENV{'form.lastrevisiondate'}=time; |
|
if ((($style eq 'rat') && ($ENV{'form.copyright'} eq 'public')) || |
|
(!$ENV{'form.copyright'})) { |
|
$ENV{'form.copyright'}='default'; |
|
} |
|
$ENV{'form.allmeta'}=&Apache::lonnet::escape($allmeta); |
|
return ($scrout,0); |
|
} |
|
} |
} |
|
|
######################################### |
######################################### |
Line 1318 sub phasetwo {
|
Line 1315 sub phasetwo {
|
unlink($srcd.'/'.$filename); |
unlink($srcd.'/'.$filename); |
unlink($srcd.'/'.$filename.'.meta'); |
unlink($srcd.'/'.$filename.'.meta'); |
} else { |
} else { |
if ($filename=~/$srcf\.(\d+)\.$srct$/) { |
if ($filename=~/\Q$srcf\E\.(\d+)\.\Q$srct\E$/) { |
$maxversion=($1>$maxversion)?$1:$maxversion; |
$maxversion=($1>$maxversion)?$1:$maxversion; |
} |
} |
} |
} |