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

version 1.2, 2000/10/23 13:21:12 version 1.9, 2001/12/22 21:59:07
Line 1 Line 1
 # The LearningOnline Network with CAPA  # The LearningOnline Network with CAPA
 #  
 # Metadata display handler  # Metadata display handler
 #  #
   # $Id$
   #
   # Copyright Michigan State University Board of Trustees
   #
   # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
   #
   # LON-CAPA is free software; you can redistribute it and/or modify
   # it under the terms of the GNU General Public License as published by
   # the Free Software Foundation; either version 2 of the License, or
   # (at your option) any later version.
   #
   # LON-CAPA is distributed in the hope that it will be useful,
   # but WITHOUT ANY WARRANTY; without even the implied warranty of
   # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   # GNU General Public License for more details.
   #
   # You should have received a copy of the GNU General Public License
   # along with LON-CAPA; if not, write to the Free Software
   # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   #
   # /home/httpd/html/adm/gpl.txt
   #
   # http://www.lon-capa.org/
   #
 # (TeX Content Handler  # (TeX Content Handler
 #  #
 # 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,12/22 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  # ----------------------------------------- Fetch and evaluate dynamic metadata
   
 sub unpackagemeta {  sub dynamicmeta {
     my ($datastring,$fordisplay)=@_;      my $url=&Apache::lonnet::declutter(shift);
     my %content=();      $url=~s/\.meta$//;
     my $parser=HTML::TokeParser->new(\$datastring);      my ($adomain,$aauthor)=($url=~/^(\w+)\/(\w+)\//);
     my $token;      my $regexp=&Apache::lonnet::escape($url);
     while ($token=$parser->get_token) {      $regexp=~s/(\W)/\\$1/g;
        if ($token->[0] eq 'S') {      my %evaldata=&Apache::lonnet::dump
    my $entry=$token->[1];                                       ('resevaldata',$adomain,$aauthor,$regexp);
            my $value=$parser->get_text('/'.$entry);      my %returnhash=();
            if (($token->[2]->{'display'}) && ($fordisplay)) {      foreach (keys %evaldata) {
        $value.='__dis__'.$token->[2]->{'display'};  
            }  
            $content{$entry}=$value;  
        }  
     }      }
     return %content;      return %returnhash;
 }  }
   
 # ================================================================ 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 68  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 118  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;
     }
     &dynamicmeta($uri);
   $r->print('</body></html>');    $r->print('</body></html>');
   return OK;    return OK;
 }  }

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


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