--- loncom/interface/lonmeta.pm 2000/10/23 13:21:12 1.2 +++ loncom/interface/lonmeta.pm 2000/11/27 20:44:53 1.3 @@ -6,42 +6,20 @@ # # 05/29/00,05/30,10/11 Gerd Kortemeyer) # -# 10/19,10/21,10/23 Gerd Kortemeyer +# 10/19,10/21,10/23,11/27 Gerd Kortemeyer package Apache::lonmeta; use strict; -use Apache::File; use Apache::Constants qw(:common); -use HTML::TokeParser; +use Apache::lonnet(); -# ================================================= Unpack metadata into a hash - -sub unpackagemeta { - my ($datastring,$fordisplay)=@_; - my %content=(); - my $parser=HTML::TokeParser->new(\$datastring); - my $token; - while ($token=$parser->get_token) { - if ($token->[0] eq 'S') { - my $entry=$token->[1]; - my $value=$parser->get_text('/'.$entry); - if (($token->[2]->{'display'}) && ($fordisplay)) { - $value.='__dis__'.$token->[2]->{'display'}; - } - $content{$entry}=$value; - } - } - return %content; -} - # ================================================================ Main Handler sub handler { my $r=shift; - my @metacontents; - my %content; + my %content=(); # ----------------------------------------------------------- Set document type @@ -52,12 +30,10 @@ sub handler { # ------------------------------------------------------------------- Read file - { - my $fh=Apache::File->new($r->filename); - @metacontents=<$fh>; - } - - %content=&unpackagemeta(join("\n",@metacontents),1); + my $uri=$r->uri; + map { + $content{$_}=&Apache::lonnet::metadata($uri,$_); + } split(/\,/,&Apache::lonnet::metadata($uri,'keys')); # --------------------------------------------------------------- Render Output @@ -97,9 +73,10 @@ ENDHEAD delete($content{'owner'}); delete($content{'copyright'}); map { - my ($value,$name)=split(/\_\_dis\_\_/,$content{$_}); - unless ($name) { $name=$_; } - $r->print(''.$name.': '.$value.'
'); + my $name=$_; + my $display=&Apache::lonnet::metadata($uri,$name.'.display'); + if ($display) { $name=$display; }; + $r->print(''.$name.': '.$content{$name}.'
'); } sort keys %content; $r->print(''); return OK;