--- loncom/lonnet/perl/lonnet.pm 2001/08/04 13:38:35 1.135 +++ loncom/lonnet/perl/lonnet.pm 2001/08/04 20:13:17 1.139 @@ -896,7 +896,7 @@ sub rolesinit { my $author=0; map { %thesepriv=(); - if ($_!~/^st/) { $adv=1; } + if (($_!~/^st/) && ($_!~/^ta/)) { $adv=1; } if (($_=~/^au/) || ($_=~/^ca/)) { $author=1; } map { if ($_ ne '') { @@ -1853,12 +1853,50 @@ sub metadata { while ($token=$parser->get_token) { if ($token->[0] eq 'S') { if (defined($token->[2]->{'package'})) { + my $package=$token->[2]->{'package'}; + my %thispackagekeys=(); + my $keyroot=''; + if (defined($token->[2]->{'part'})) { + $keyroot.='_'.$token->[2]->{'part'}; + } + if (defined($token->[2]->{'id'})) { + $keyroot.='_'.$token->[2]->{'id'}; + } + if ($metacache{$uri.':packages'}) { + $metacache{$uri.':packages'}.=','.$package.$keyroot; + } else { + $metacache{$uri.':packages'}=$package.$keyroot; + } + undef %thispackagekeys; + map { + if ($_=~/^$package\&/) { + my ($pack,$name,$subp)=split(/\&/,$_); + my $value=$packagetab{$_}; + if ($subp eq 'display') { + my $part=$keyroot; + $part=~s/^\_//; + $value.=' [Part: '.$part.']'; + } + my $unikey='parameter'.$keyroot.'_'.$name; + $thispackagekeys{$unikey}=1; + $metacache{$uri.':'.$unikey.'.'.$subp}=$value; + } + } keys %packagetab; + my $addpackagekeys=join(',',keys %thispackagekeys); + if ($metacache{$uri.':keys'}) { + $metacache{$uri.':keys'}.=','.$addpackagekeys; + } else { + $metacache{$uri.':keys'}=$addpackagekeys; + } } else { my $entry=$token->[1]; my $unikey=$entry; 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'}; }