--- loncom/publisher/lonpublisher.pm 2001/05/28 19:43:47 1.30 +++ loncom/publisher/lonpublisher.pm 2001/08/07 21:27:06 1.33 @@ -11,6 +11,7 @@ # 04/16/2001 Scott Harrison # 05/03,05/05,05/07 Gerd Kortemeyer # 05/28/2001 Scott Harrison +# 06/23,08/07 Gerd Kortemeyer package Apache::lonpublisher; @@ -48,9 +49,15 @@ sub metaeval { if ($token->[0] eq 'S') { my $entry=$token->[1]; my $unikey=$entry; + if (defined($token->[2]->{'package'})) { + $unikey.='_package_'.$token->[2]->{'package'}; + } if (defined($token->[2]->{'part'})) { $unikey.='_'.$token->[2]->{'part'}; } + if (defined($token->[2]->{'id'})) { + $unikey.='_'.$token->[2]->{'id'}; + } if (defined($token->[2]->{'name'})) { $unikey.='_'.$token->[2]->{'name'}; } @@ -309,6 +316,7 @@ sub publish { # -------------------------------------------------- Parse content for metadata $allmeta=Apache::lonxml::xmlparse('meta',$content); + &metaeval($allmeta); # ---------------- Find and document discrepancies in the parameters and stores @@ -332,7 +340,8 @@ sub publish { my $chparms=''; map { if (($_=~/^parameter/) || ($_=~/^stores/)) { - unless (($metadatafields{$_.'.name'}) || ($_=~/\.\w+$/)) { + unless (($metadatafields{$_.'.name'}) || + ($metadatafields{$_.'.package'}) || ($_=~/\.\w+$/)) { print $logfile 'Obsolete: '.$_."\n"; $chparms.=$_.' '; } @@ -748,8 +757,9 @@ sub handler { return HTTP_NOT_FOUND; } - unless (($cuname,$cudom)= - &Apache::loncacc::constructaccess($fn,$r->dir_config('lonDefDomain'))) { + ($cuname,$cudom)= + &Apache::loncacc::constructaccess($fn,$r->dir_config('lonDefDomain')); + unless (($cuname) && ($cudom)) { $r->log_reason($cuname.' at '.$cudom. ' trying to publish file '.$ENV{'form.filename'}. ' ('.$fn.') - not authorized',