Diff for /loncom/interface/lonmeta.pm between versions 1.10 and 1.14

version 1.10, 2001/12/24 17:13:11 version 1.14, 2002/02/11 04:19:40
Line 29 Line 29
 #  #
 # 05/29/00,05/30,10/11 Gerd Kortemeyer)  # 05/29/00,05/30,10/11 Gerd Kortemeyer)
 #  #
 # 10/19,10/21,10/23,11/27,08/09/01,12/22,12/24 Gerd Kortemeyer  # 10/19,10/21,10/23,11/27,08/09/01,12/22,12/24,12/25 Gerd Kortemeyer
   
 package Apache::lonmeta;  package Apache::lonmeta;
   
Line 85  sub dynamicmeta { Line 85  sub dynamicmeta {
     }      }
     my %returnhash=();      my %returnhash=();
     foreach (keys %cnt) {      foreach (keys %cnt) {
                 if ($listitems{$_} eq 'avg') {
      $returnhash{$_}=int(($sum{$_}/$cnt{$_})*100.0+0.5)/100.0;
          } elsif ($listitems{$_} eq 'cnt') {
              $returnhash{$_}=$cnt{$_};
          } else {
              $returnhash{$_}=$sum{$_};
          }
     }      }
     return %returnhash;      return %returnhash;
 }  }
   
   # -------------------------------------------------------------- Pretty display
   
   sub evalgraph {
       my $value=shift;
       unless ($value) { return ''; }
       my $val=int($value*10.+0.5)-10;
       my $output='<table border=0 cellpadding=0 cellspacing=0><tr>';
       if ($val>=20) {
    $output.='<td width=20 bgcolor="#555555">&nbsp&nbsp;</td>';
       } else {
           $output.='<td width='.($val).' bgcolor="#555555">&nbsp;</td>'.
                    '<td width='.(20-$val).' bgcolor="#FF3333">&nbsp;</td>';
       }
       $output.='<td bgcolor="#FFFF33">&nbsp;</td>';
       if ($val>20) {
    $output.='<td width='.($val-20).' bgcolor="#33FF33">&nbsp;</td>'.
                    '<td width='.(40-$val).' bgcolor="#555555">&nbsp;</td>';
       } else {
          $output.='<td width=20 bgcolor="#555555">&nbsp&nbsp;</td>';
       }
       $output.='<td> ('.$value.') </td></tr></table>';
       return $output;
   }
   
   sub diffgraph {
       my $value=shift;
       unless ($value) { return ''; }
       my $val=int(40.0*$value+0.5);
       my @colors=('#FF9933','#EEAA33','#DDBB33','#CCCC33',
                   '#BBDD33','#CCCC33','#DDBB33','#EEAA33');
       my $output='<table border=0 cellpadding=0 cellspacing=0><tr>';
       for (my $i=0;$i<8;$i++) {
    if ($val>$i*5) {
               $output.='<td width=5 bgcolor="'.$colors[$i].'">&nbsp;</td>';
           } else {
       $output.='<td width=5 bgcolor="#555555">&nbsp;</td>';
    }
       }
       $output.='<td> ('.$value.') </td></tr></table>';
       return $output;
   }
   
 # ================================================================ Main Handler  # ================================================================ Main Handler
   
 sub handler {  sub handler {
Line 106  sub handler { Line 154  sub handler {
 # ------------------------------------------------------------------- Read file  # ------------------------------------------------------------------- Read file
   
   my $uri=$r->uri;    my $uri=$r->uri;
   map {    foreach (split(/\,/,&Apache::lonnet::metadata($uri,'keys'))) {
       $content{$_}=&Apache::lonnet::metadata($uri,$_);        $content{$_}=&Apache::lonnet::metadata($uri,$_);
   } split(/\,/,&Apache::lonnet::metadata($uri,'keys'));    }
   
 # ------------------------------------------------------------------ Hide stuff  # ------------------------------------------------------------------ Hide stuff
   
   unless ($ENV{'user.adv'}) {    unless ($ENV{'user.adv'}) {
       map {        foreach ('keywords','notes','abstract','subject') {
           $content{$_}='<i>- not displayed -</i>';            $content{$_}='<i>- not displayed -</i>';
       } ('keywords','notes','abstract','subject');        }
   }    }
   
 # --------------------------------------------------------------- Render Output  # --------------------------------------------------------------- Render Output
Line 124  my $creationdate=localtime($content{'cre Line 172  my $creationdate=localtime($content{'cre
 my $lastrevisiondate=localtime($content{'lastrevisiondate'});  my $lastrevisiondate=localtime($content{'lastrevisiondate'});
 my $language=&Apache::loncommon::languagedescription($content{'language'});  my $language=&Apache::loncommon::languagedescription($content{'language'});
 my $mime=&Apache::loncommon::filedescription($content{'mime'});   my $mime=&Apache::loncommon::filedescription($content{'mime'}); 
   my $disuri=&Apache::lonnet::declutter($uri);
     $disuri=~s/\.meta$//;
   $r->print(<<ENDHEAD);    $r->print(<<ENDHEAD);
 <html><head><title>Catalog Information</title></head>  <html><head><title>Catalog Information</title></head>
 <body bgcolor="#FFFFFF">  <body bgcolor="#FFFFFF">
 <h1>Catalog Information</h1>  <h1>Catalog Information</h1>
 <h2>$content{'title'}</h2>  <h2>$content{'title'}</h2>
 <h3>Author(s): $content{'author'}</h3>  <h3><tt>$disuri</tt></h3>
 <b>Subject:</b> $content{'subject'}<br>  <table cellspacing=2 border=0>
 <b>Keyword(s):</b> $content{'keywords'}<br>  <tr><td bgcolor='#AAAAAA'>Author(s)</td>
 <b>Notes:</b> $content{'notes'}<br>  <td bgcolor="#CCCCCC">$content{'author'}&nbsp;</td></tr>
 <b>Abstract:</b>  <tr><td bgcolor='#AAAAAA'>Subject</td>
 <blockquote>$content{'abstract'}</blockquote>  <td bgcolor="#CCCCCC">$content{'subject'}&nbsp;</td></tr>
 <hr>  <tr><td bgcolor='#AAAAAA'>Keyword(s)</td>
 <b>MIME Type:</b> $mime ($content{'mime'})<br>  <td bgcolor="#CCCCCC">$content{'keywords'}&nbsp;</td></tr>
 <b>Language:</b> $language<br>  <tr><td bgcolor='#AAAAAA'>Notes</td>
 <b>Creation Date:</b> $creationdate<br>  <td bgcolor="#CCCCCC">$content{'notes'}&nbsp;</td></tr>
 <b>Last Revision Date:</b> $lastrevisiondate<br>  <tr><td bgcolor='#AAAAAA'>Abstract</td>
 <b>Publisher/Owner:</b> $content{'owner'}<br>  <td bgcolor="#CCCCCC">$content{'abstract'}&nbsp;</td></tr>
 <b>Copyright/Distribution:</b> $content{'copyright'}  <tr><td bgcolor='#AAAAAA'>MIME Type</td>
 <hr>  <td bgcolor="#CCCCCC">$mime ($content{'mime'})&nbsp;</td></tr>
   <tr><td bgcolor='#AAAAAA'>Language</td>
   <td bgcolor="#CCCCCC">$language&nbsp;</td></tr>
   <tr><td bgcolor='#AAAAAA'>Creation Date</td>
   <td bgcolor="#CCCCCC">$creationdate&nbsp;</td></tr>
   <tr><td bgcolor='#AAAAAA'>
   Last Revision Date</td><td bgcolor="#CCCCCC">$lastrevisiondate&nbsp;</td></tr>
   <tr><td bgcolor='#AAAAAA'>Publisher/Owner</td>
   <td bgcolor="#CCCCCC">$content{'owner'}&nbsp;</td></tr>
   <tr><td bgcolor='#AAAAAA'>Copyright/Distribution</td>
   <td bgcolor="#CCCCCC">$content{'copyright'}
   </table>
 ENDHEAD  ENDHEAD
   delete($content{'title'});    delete($content{'title'});
   delete($content{'author'});    delete($content{'author'});
Line 157  ENDHEAD Line 218  ENDHEAD
   delete($content{'owner'});    delete($content{'owner'});
   delete($content{'copyright'});    delete($content{'copyright'});
   if ($ENV{'user.adv'}) {    if ($ENV{'user.adv'}) {
   # ------------------------------------------------------------ Dynamic Metadata
    $r->print('<h3>Dynamic Metadata (updated periodically)</h3>');     $r->print('<h3>Dynamic Metadata (updated periodically)</h3>');
     my %items=(      my %items=(
  'count'      => 'Network-wide number of accesses (hits)',   'count'      => 'Network-wide number of accesses (hits)',
  'course'     => 'Network-wide number of courses using resource',   'course'     => 'Network-wide number of courses using resource',
  'usage'      => 'Number of resources using or importing resource',   'usage'      => 'Number of resources using or importing resource',
  'clear'      => 'Evaluation: presented in clear way',   'clear'      => 'Material presented in clear way',
  'depth'      => 'Evaluation: material covered with sufficient depth',   'depth'      => 'Material covered with sufficient depth',
  'helpful'    => 'Evaluation: material is helpful',   'helpful'    => 'Material is helpful',
  'correct'    => 'Evaluation: material appears to be correct',   'correct'    => 'Material appears to be correct',
  'technical'  => 'Evaluation: material is technically correct',    'technical'  => 'Resource is technically correct', 
  'avetries'   => 'Average number of tries till solved',   'avetries'   => 'Average number of tries till solved',
  'stdno'      => 'Total number of students who have worked on this problem',   'stdno'      => 'Total number of students who have worked on this problem',
  'difficulty' => 'Degree of difficulty');   'difficulty' => 'Degree of difficulty');
    my %dynmeta=&dynamicmeta($uri);     my %dynmeta=&dynamicmeta($uri);
    $r->print('<h4>Access and Usage Statistics</h4>');     $r->print(
   '</table><h4>Access and Usage Statistics</h4><table cellspacing=2 border=0>');
    foreach ('count','usage','course') {     foreach ('count','usage','course') {
        $r->print('<b>'.$items{$_}.':</b>'."<br>\n");         $r->print(
    }      '<tr><td bgcolor="#AAAAAA">'.$items{$_}.'</td><td bgcolor="#CCCCCC">'.
   $dynmeta{$_}."&nbsp;</td></tr>\n");
      }
          $r->print('</table>');
    if ($uri=~/\.(problem|exam|quiz|assess|survey|form)\.meta$/) {     if ($uri=~/\.(problem|exam|quiz|assess|survey|form)\.meta$/) {
       $r->print('<h4>Assessment Statistical Data</h4>');        $r->print(
       foreach ('stdno','avetries','difficulty') {  '<h4>Assessment Statistical Data</h4><table cellspacing=2 border=0>');
           $r->print('<b>'.$items{$_}.':</b>'."<br>\n");        foreach ('stdno','avetries') {
       }                $r->print(
   '<tr><td bgcolor="#AAAAAA">'.$items{$_}.'</td><td bgcolor="#CCCCCC">'.
   $dynmeta{$_}."&nbsp;</td></tr>\n");
         }
         foreach ('difficulty') {
            $r->print(
   '<tr><td bgcolor="#AAAAAA">'.$items{$_}.'</td><td bgcolor="#CCCCCC">'.
   &diffgraph($dynmeta{$_})."</td></tr>\n");
         }
         $r->print('</table>');    
    }     }
    $r->print('<h4>Evaluation Data</h4>');     $r->print('<h4>Evaluation Data</h4><table cellspacing=2 border=0>');
    foreach ('clear','depth','helpful','correct','technical') {     foreach ('clear','depth','helpful','correct','technical') {
        $r->print('<b>'.$items{$_}.':</b>'."<br>\n");         $r->print(
   '<tr><td bgcolor="#AAAAAA">'.$items{$_}.'</td><td bgcolor="#CCCCCC">'.
   &evalgraph($dynmeta{$_})."</td></tr>\n");
    }         }    
    &Apache::lonnet::declutter($uri)=~/^(\w+)\/(\w+)\//;     $r->print('</table>');
      $disuri=~/^(\w+)\/(\w+)\//;   
    if ((($ENV{'user.domain'} eq $1) && ($ENV{'user.name'} eq $2))     if ((($ENV{'user.domain'} eq $1) && ($ENV{'user.name'} eq $2))
        || ($ENV{'user.role.ca./'.$1.'/'.$2})) {         || ($ENV{'user.role.ca./'.$1.'/'.$2})) {
       $r->print(        $r->print(
   '<h4>Evaluation Comments (visible to author and co-authors only)</h4>'.    '<h4>Evaluation Comments (visible to author and co-authors only)</h4>'.
       $dynmeta{'comments'});              '<blockquote>'.$dynmeta{'comments'}.'</blockquote>');      
    }     }
   # ------------------------------------------------------------- All other stuff
    $r->print(     $r->print(
  '<h3>Additional Metadata (non-standard, parameters, exports)</h3>');   '<h3>Additional Metadata (non-standard, parameters, exports)</h3>');
    foreach (sort keys %content) {     foreach (sort keys %content) {
Line 199  ENDHEAD Line 278  ENDHEAD
       my $display=&Apache::lonnet::metadata($uri,$name.'.display');        my $display=&Apache::lonnet::metadata($uri,$name.'.display');
       unless ($display) { $display=$name; };        unless ($display) { $display=$name; };
       my $otherinfo='';        my $otherinfo='';
       map {        foreach ('name','part','type','default') {
           if (defined(&Apache::lonnet::metadata($uri,$name.'.'.$_))) {            if (defined(&Apache::lonnet::metadata($uri,$name.'.'.$_))) {
              $otherinfo.=' '.$_.'='.               $otherinfo.=' '.$_.'='.
  &Apache::lonnet::metadata($uri,$name.'.'.$_).'; ';   &Apache::lonnet::metadata($uri,$name.'.'.$_).'; ';
           }            }
       } ('name','part','type','default');         }
       $r->print('<b>'.$display.':</b> '.$content{$name});        $r->print('<b>'.$display.':</b> '.$content{$name});
       if ($otherinfo) {        if ($otherinfo) {
          $r->print(' ('.$otherinfo.')');           $r->print(' ('.$otherinfo.')');

Removed from v.1.10  
changed lines
  Added in v.1.14


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