--- loncom/publisher/lonpublisher.pm 2003/10/21 20:18:45 1.140
+++ loncom/publisher/lonpublisher.pm 2003/11/08 11:20:22 1.145
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Publication Handler
#
-# $Id: lonpublisher.pm,v 1.140 2003/10/21 20:18:45 albertel Exp $
+# $Id: lonpublisher.pm,v 1.145 2003/11/08 11:20:22 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -143,6 +143,7 @@ use Apache::lonnet();
use Apache::loncommon();
use Apache::lonmysql;
use Apache::lonlocal;
+use Apache::loncfile;
use vars qw(%metadatafields %metadatakeys);
my %addid;
@@ -180,6 +181,10 @@ nothing
#########################################
#########################################
+#
+# Modifies global %metadatafields %metadatakeys
+#
+
sub metaeval {
my ($metastring,$prefix)=@_;
@@ -214,12 +219,7 @@ sub metaeval {
$newentry=~s/^\s*//;
if ($newentry !~m|^/res|) { $newentry=$prefix.$newentry; }
}
- if ($metadatafields{$unikey}) {
- unless (($metadatafields{$unikey}=~/\Q$newentry\E/) ||
- ($newentry eq '')) {
- $metadatafields{$unikey}.=', '.$newentry;
- }
- } else {
+ unless ($metadatafields{$unikey}=~/\w/) {
$metadatafields{$unikey}=$newentry;
}
}
@@ -267,7 +267,8 @@ sub metaread {
my ($logfile,$fn,$prefix)=@_;
unless (-e $fn) {
print($logfile 'No file '.$fn."\n");
- return '
No file: '.$fn.'';
+ return '
No file: '.
+ &Apache::loncfile::display($fn).'';
}
print($logfile 'Processing '.$fn."\n");
my $metastring;
@@ -276,7 +277,8 @@ sub metaread {
$metastring=join('',<$metafh>);
}
&metaeval($metastring,$prefix);
- return '
Processed file: '.$fn.'';
+ return '
Processed file: '.
+ &Apache::loncfile::display($fn).'';
}
#########################################
@@ -329,6 +331,9 @@ string which presents the form field (fo
#########################################
sub textfield {
my ($title,$name,$value)=@_;
+ $value=~s/^\s+//gs;
+ $value=~s/\s+$//gs;
+ $value=~s/\s+/ /gs;
$title=&mt($title);
my $uctitle=uc($title);
return "\n
$uctitle:".
@@ -812,6 +817,26 @@ sub store_metadata {
return (undef,$status);
}
+
+# ============================================== Parse file itself for metadata
+#
+# parses a file with target meta, sets global %metadatafields %metadatakeys
+
+sub parseformeta {
+ my ($source,$style)=@_;
+ my $allmeta='';
+ if (($style eq 'ssi') || ($style eq 'prv')) {
+ my $dir=$source;
+ $dir=~s-/[^/]*$--;
+ my $file=$source;
+ $file=(split('/',$file))[-1];
+ $source=&Apache::lonnet::hreflocation($dir,$file);
+ $allmeta=&Apache::lonnet::ssi_body($source,('grade_target' => 'meta'));
+ &metaeval($allmeta);
+ }
+ return $allmeta;
+}
+
#########################################
#########################################
@@ -924,7 +949,8 @@ sub publish {
# -------------------------------------------- Initial step done, now metadata.
# --------------------------------------- Storage for metadata keys and fields.
-
+# these are globals
+#
%metadatafields=();
%metadatakeys=();
@@ -949,6 +975,10 @@ sub publish {
$ENV{'user.domain'};
$metadatafields{'authorspace'}=$cuname.'@'.$cudom;
+# ----------------------------------------------------------- Parse file itself
+# read %metadatafields from file itself
+
+ $allmeta=&parseformeta($source,$style);
# ------------------------------------------------ Check out directory hierachy
my $thisdisfn=$source;
@@ -985,20 +1015,12 @@ sub publish {
delete $metadatafields{$_};
}
}
-
- }
-
-# -------------------------------------------------- Parse content for metadata
- if (($style eq 'ssi') || ($style eq 'prv')) {
- my $dir=$source;
- $dir=~s-/[^/]*$--;
- my $file=$source;
- $file=(split('/',$file))[-1];
- $source=&Apache::lonnet::hreflocation($dir,$file);
- $allmeta=&Apache::lonnet::ssi_body($source,('grade_target' => 'meta'));
+# ------------------------------------------ See if anything new in file itself
+
+ $allmeta=&parseformeta($source,$style);
+ }
- &metaeval($allmeta);
- }
+
# ---------------- Find and document discrepancies in the parameters and stores
my $chparms='';
@@ -1029,7 +1051,9 @@ sub publish {
}
if ($chparms) {
$scrout.=' '.&mt('Obsolete parameters or stored values').': '.
- $chparms.'
'. + &mt('If this resource is in active use, student performance data from the previous version may become inaccessible.').'