Diff for /loncom/interface/lonmeta.pm between versions 1.2 and 1.7

version 1.2, 2000/10/23 13:21:12 version 1.7, 2001/08/10 17:20:19
Line 6 Line 6
 #  #
 # 05/29/00,05/30,10/11 Gerd Kortemeyer)  # 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,08/09/01 Gerd Kortemeyer
   
 package Apache::lonmeta;  package Apache::lonmeta;
   
 use strict;  use strict;
 use Apache::File;  
 use Apache::Constants qw(:common);  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  # ================================================================ Main Handler
   
 sub handler {  sub handler {
   my $r=shift;    my $r=shift;
   my @metacontents;    my %content=();
   my %content;  
   
 # ----------------------------------------------------------- Set document type  # ----------------------------------------------------------- Set document type
   
Line 52  sub handler { Line 30  sub handler {
   
 # ------------------------------------------------------------------- Read file  # ------------------------------------------------------------------- Read file
   
   {    my $uri=$r->uri;
     my $fh=Apache::File->new($r->filename);    map {
     @metacontents=<$fh>;        $content{$_}=&Apache::lonnet::metadata($uri,$_);
   }    } split(/\,/,&Apache::lonnet::metadata($uri,'keys'));
   
   %content=&unpackagemeta(join("\n",@metacontents),1);  # ------------------------------------------------------------------ Hide stuff
   
     unless ($ENV{'user.adv'}) {
         map {
             $content{$_}='<i>- not displayed -</i>';
         } ('keywords','notes','abstract','subject');
     }
   
 # --------------------------------------------------------------- Render Output  # --------------------------------------------------------------- Render Output
   
Line 96  ENDHEAD Line 80  ENDHEAD
   delete($content{'lastrevisiondate'});    delete($content{'lastrevisiondate'});
   delete($content{'owner'});    delete($content{'owner'});
   delete($content{'copyright'});    delete($content{'copyright'});
   map {    if ($ENV{'user.adv'}) {
       my ($value,$name)=split(/\_\_dis\_\_/,$content{$_});     map {
       unless ($name) { $name=$_; }        my $name=$_;
       $r->print('<b>'.$name.':</b> '.$value.'<br>');        my $display=&Apache::lonnet::metadata($uri,$name.'.display');
   } sort keys %content;        unless ($display) { $display=$name; };
         my $otherinfo='';
         map {
             if (defined(&Apache::lonnet::metadata($uri,$name.'.'.$_))) {
                $otherinfo.=' '.$_.'='.
    &Apache::lonnet::metadata($uri,$name.'.'.$_).'; ';
             }
         } ('name','part','type','default'); 
         $r->print('<b>'.$display.':</b> '.$content{$name});
         if ($otherinfo) {
            $r->print(' ('.$otherinfo.')');
         }
         $r->print("<br>\n");
      } sort keys %content;
     }
   $r->print('</body></html>');    $r->print('</body></html>');
   return OK;    return OK;
 }  }

Removed from v.1.2  
changed lines
  Added in v.1.7


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>