--- loncom/publisher/lonpublisher.pm 2003/12/27 16:58:36 1.155
+++ loncom/publisher/lonpublisher.pm 2004/02/27 17:27:51 1.164
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Publication Handler
#
-# $Id: lonpublisher.pm,v 1.155 2003/12/27 16:58:36 www Exp $
+# $Id: lonpublisher.pm,v 1.164 2004/02/27 17:27:51 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -126,6 +126,8 @@ use Apache::loncommon();
use Apache::lonmysql;
use Apache::lonlocal;
use Apache::loncfile;
+use Apache::lonmeta;
+use Apache::lonmsg;
use vars qw(%metadatafields %metadatakeys);
my %addid;
@@ -202,7 +204,11 @@ sub metaeval {
if ($newentry !~m|^/res|) { $newentry=$prefix.$newentry; }
}
# actually store
- $metadatafields{$unikey}=$newentry;
+ if ( $entry eq 'rule' && exists($metadatafields{$unikey})) {
+ $metadatafields{$unikey}.=','.$newentry;
+ } else {
+ $metadatafields{$unikey}=$newentry;
+ }
}
}
}
@@ -316,8 +322,7 @@ sub textfield {
$value=~s/\s+$//gs;
$value=~s/\s+/ /gs;
$title=&mt($title);
- my $uctitle=uc($title);
- return "\n
$uctitle:".
+ return "\n $title:".
"
".
' ';
}
@@ -330,9 +335,8 @@ sub hiddenfield {
sub selectbox {
my ($title,$name,$value,$functionref,@idlist)=@_;
$title=&mt($title);
- my $uctitle=uc($title);
$value=(split(/\s*,\s*/,$value))[-1];
- my $selout="\n$uctitle:".
+ my $selout="\n $title:".
'
';
foreach (@idlist) {
$selout.='[$i];
- }
+# yes, there is one old entry, transfer to newmetadata
+ %newmetadata=&Apache::lonmeta::metadata_col_to_hash(@{$oldmeta[0]});
# remove old entry
$status=&Apache::lonmysql::remove_from_table
('metadata','url',$metadata{'url'});
@@ -920,11 +920,11 @@ sub publish {
$allowstr.="\n".' ';
}
$scrout.=' ';
- unless ($thisdep=~/\*/) {
+ if ($thisdep!~/\*/ && $thisdep!~m|^/adm/|) {
$scrout.='';
}
$scrout.=''.$thisdep.' ';
- unless ($thisdep=~/\*/) {
+ if ($thisdep!~/\*/ && $thisdep!~m|^/adm/|) {
$scrout.=' ';
if (
&Apache::lonnet::getfile($Apache::lonnet::perlvar{'lonDocRoot'}.'/'.
@@ -1034,6 +1034,7 @@ sub publish {
# ------------------------------------------ See if anything new in file itself
$allmeta=&parseformeta($source,$style);
+
}
@@ -1115,7 +1116,7 @@ sub publish {
# --------------------------------------------------- Scan content for keywords
my $keywords_help = Apache::loncommon::help_open_topic("Publishing_Keywords");
- my $KEYWORDS=&mt('KEYWORDS');
+ my $KEYWORDS=&mt('Keywords');
my $CheckAll=&mt('check all');
my $UncheckAll=&mt('uncheck all');
my $keywordout=<<"END";
@@ -1166,7 +1167,7 @@ END
$scrout.=&textfield('Notes','notes',$metadatafields{'notes'});
$scrout.=
- "\n".&mt('ABSTRACT').":".
+ "\n ".&mt('Abstract').":".
"
".
'
';
@@ -1176,11 +1177,11 @@ END
$scrout.=
"\n".
- uc(&mt('Lowest Grade Level:')).
+ &mt('Lowest Grade Level').':'.
"
".
&Apache::loncommon::select_level_form($metadatafields{'lowestgradelevel'},'lowestgradelevel').
"\n".
- uc(&mt('Highest Grade Level:')).
+ &mt('Highest Grade Level').':'.
"
".
&Apache::loncommon::select_level_form($metadatafields{'highestgradelevel'},'highestgradelevel').
&textfield('Standards','standards',$metadatafields{'standards'});
@@ -1239,7 +1240,7 @@ END
$scrout.=&textfield('Custom Distribution File','customdistributionfile',
$metadatafields{'customdistributionfile'}).
$copyright_help;
- my $uctitle=uc(&mt('Obsolete'));
+ my $uctitle=&mt('Obsolete');
$scrout.=
"\n$uctitle:".
' print($error);
print $logfile "\n".$error;
}
-
+# --------------------------------------------- Delete author resource messages
+ my $delresult=&Apache::lonmsg::del_url_author_res_msg($target);
+ $r->print('
'.&mt('Removing error messages:').' '.$delresult.'
');
+ print $logfile "\nRemoving error messages: $delresult";
# ----------------------------------------------------------- Copy old versions
if (-e $target) {
@@ -1652,8 +1656,8 @@ sub publishdirectory {
my $resdir=
$Apache::lonnet::perlvar{'lonDocRoot'}.'/res/'.$cudom.'/'.$cuname.'/'.
$thisdisfn;
- $r->print('Directory '.$thisdisfn.' '.
- 'Target: '.$resdir.' ');
+ $r->print(''.&mt('Directory').' '.$thisdisfn.' '.
+ &mt('Target').': '.$resdir.' ');
my $dirptr=16384; # Mask indicating a directory in stat.cmode.
@@ -1691,13 +1695,70 @@ sub publishdirectory {
if ($publishthis) {
&batchpublish($r,$fn.'/'.$filename,$resdir.'/'.$filename);
} else {
- $r->print(' Skipping '.$filename.' ');
+ $r->print(' '.&mt('Skipping').' '.$filename.' ');
}
$r->rflush();
}
}
closedir(DIR);
}
+
+#########################################
+# publish a default.meta file
+
+sub defaultmetapublish {
+ my ($r,$fn,$cuname,$cudom)=@_;
+ $fn=~s/^\/\~$cuname\//\/home\/$cuname\/public_html\//;
+ unless (-e $fn) {
+ return HTTP_NOT_FOUND;
+ }
+ my $target=$fn;
+ $target=~s/^\/home\/$cuname\/public_html\//$Apache::lonnet::perlvar{'lonDocRoot'}\/res\/$cudom\/$cuname\//;
+
+
+ &Apache::loncommon::content_type($r,'text/html');
+ $r->send_http_header;
+
+ $r->print('LON-CAPA Publishing ');
+ $r->print(&Apache::loncommon::bodytag('Catalog Information Publication'));
+
+# ---------------------------------------------------------------- Write Source
+ my $copyfile=$target;
+
+ my @parts=split(/\//,$copyfile);
+ my $path="/$parts[1]/$parts[2]/$parts[3]/$parts[4]";
+
+ my $count;
+ for ($count=5;$count<$#parts;$count++) {
+ $path.="/$parts[$count]";
+ if ((-e $path)!=1) {
+ $r->print(''.&mt('Created directory').' '.$parts[$count].'
');
+ mkdir($path,0777);
+ }
+ }
+
+ if (copy($fn,$copyfile)) {
+ $r->print(''.&mt('Copied source file').'
');
+ } else {
+ return "".
+ &mt('Failed to copy source').", $!, ".&mt('FAIL')." ";
+ }
+
+# --------------------------------------------------- Send update notifications
+
+ my @subscribed=&get_subscribed_hosts($target);
+ foreach my $subhost (@subscribed) {
+ $r->print(''.&mt('Notifying host').' '.$subhost.':');$r->rflush;
+ my $reply=&Apache::lonnet::critical('update:'.$target,$subhost);
+ $r->print($reply.'
');$r->rflush;
+ }
+# ------------------------------------------------------------------- Link back
+ my $link=$fn;
+ $link=~s/^\/home\/$cuname\/public_html\//\/priv\/$cuname\//;
+ $r->print("".&mt('Back to Catalog Information').' ');
+ $r->print('