# The LearningOnline Network with CAPA # # Metadata display handler # # (TeX Content Handler # # 05/29/00,05/30,10/11 Gerd Kortemeyer) # # 10/19,10/21 Gerd Kortemeyer package Apache::lonmeta; use strict; use Apache::File; use Apache::Constants qw(:common); use HTML::TokeParser; # ================================================= 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; # ----------------------------------------------------------- Set document type $r->content_type('text/html'); $r->send_http_header; return OK if $r->header_only; # ------------------------------------------------------------------- Read file { my $fh=Apache::File->new($r->filename); @metacontents=<$fh>; } %content=&unpackagemeta(join("\n",@metacontents),1); # --------------------------------------------------------------- Render Output $r->print(<Catalog Information

Catalog Information

$content{'title'}

Author(s): $content{'author'}

Subject: $content{'subject'}
Keyword(s): $content{'keywords'}
Notes: $content{'notes'}
Abstract:
$content{'abstract'}

MIME Type: $content{'mime'}
Language: $content{'language'}
Creation Date: $content{'creationdate'}
Last Revision Date: $content{'lastrevisiondate'}
Publisher/Owner: $content{'owner'}
Copyright/Distribution: $content{'copyright'}
ENDHEAD delete($content{'title'}); delete($content{'author'}); delete($content{'subject'}); delete($content{'keywords'}); delete($content{'notes'}); delete($content{'abstract'}); delete($content{'mime'}); delete($content{'language'}); delete($content{'creationdate'}); delete($content{'lastrevisiondate'}); delete($content{'owner'}); delete($content{'copyright'}); map { my ($value,$name)=split(/\_\_dis\_\_/,$content{$_}); unless ($name) { $name=$_; } $r->print(''.$name.': '.$value.'
'); } sort keys %content; $r->print(''); return OK; } 1; __END__