Diff for /loncom/interface/lonmeta.pm between versions 1.219 and 1.229

version 1.219, 2008/12/12 10:01:25 version 1.229, 2009/04/04 20:06:37
Line 164  sub evalgraph { Line 164  sub evalgraph {
     my $val=int($value*10.+0.5)-10;      my $val=int($value*10.+0.5)-10;
     my $output='<table border="0" cellpadding="0" cellspacing="0"><tr>';      my $output='<table border="0" cellpadding="0" cellspacing="0"><tr>';
     if ($val>=20) {      if ($val>=20) {
  $output.='<td width="20" bgcolor="#555555">&nbsp;&nbsp;</td>';   $output.='<td width="20" bgcolor="#555555">'.('&nbsp;' x2).'</td>';
     } else {      } else {
         $output.='<td width="'.($val).'" bgcolor="#555555">&nbsp;</td>'.          $output.='<td width="'.($val).'" bgcolor="#555555">&nbsp;</td>'.
                  '<td width="'.(20-$val).'" bgcolor="#FF3333">&nbsp;</td>';                   '<td width="'.(20-$val).'" bgcolor="#FF3333">&nbsp;</td>';
Line 174  sub evalgraph { Line 174  sub evalgraph {
  $output.='<td width="'.($val-20).'" bgcolor="#33FF33">&nbsp;</td>'.   $output.='<td width="'.($val-20).'" bgcolor="#33FF33">&nbsp;</td>'.
                  '<td width="'.(40-$val).'" bgcolor="#555555">&nbsp;</td>';                   '<td width="'.(40-$val).'" bgcolor="#555555">&nbsp;</td>';
     } else {      } else {
         $output.='<td width="20" bgcolor="#555555">&nbsp;&nbsp;</td>';          $output.='<td width="20" bgcolor="#555555">'.('&nbsp;' x2).'</td>';
     }      }
     $output.='<td> ('.sprintf("%5.2f",$value).') </td></tr></table>';      $output.='<td> ('.sprintf("%5.2f",$value).') </td></tr></table>';
     return $output;      return $output;
Line 338  sub pre_select_course { Line 338  sub pre_select_course {
         &Apache::lonpublisher::metaeval($result);          &Apache::lonpublisher::metaeval($result);
     }      }
     $r->print('<hr /><form method="post" action="" >');      $r->print('<hr /><form method="post" action="" >');
     $r->print('<p>'.&mt('If you would like to associate this resource ([_1]) with a current or previous course, please select one from the list below, otherwise select, \'None\'','<tt>'.$res_uri.'</tt>').'</p>');      $r->print('<p>'.&mt('If you would like to associate this resource ([_1]) with a current or previous course, please select one from the list below, otherwise select, "None".','<tt>'.$res_uri.'</tt>').'</p>');
     $output = &select_course();      $output = &select_course();
     $r->print($output.'<br /><input type="submit" name="store" value="'.      $r->print($output.'<br /><input type="submit" name="store" value="'.
                   &mt('Associate Resource With Selected Course').'" />');                    &mt('Associate Resource With Selected Course').'" />');
Line 432  sub prettyprint { Line 432  sub prettyprint {
     }      }
     # Title      # Title
     if ($type eq 'title') {      if ($type eq 'title') {
  return '<font size="+1" face="arial">'.$value.'</font>';   return $value;
     }      }
     # Dates      # Dates
     if (($type eq 'creationdate') ||      if (($type eq 'creationdate') ||
Line 482  sub prettyprint { Line 482  sub prettyprint {
  ($type eq 'comefrom_list') ||   ($type eq 'comefrom_list') ||
  ($type eq 'sequsage_list') ||   ($type eq 'sequsage_list') ||
  ($type eq 'dependencies')) {   ($type eq 'dependencies')) {
  return '<font size="-1"><ul>'.join("\n",map {   return '<ul class="LC_fontsize_medium">'.join("\n",map {
             my $url = &Apache::lonnet::clutter_with_no_wrapper($_);              my $url = &Apache::lonnet::clutter_with_no_wrapper($_);
             my $title = &Apache::lonnet::gettitle($url);              my $title = &Apache::lonnet::gettitle($url);
             if ($title eq '') {              if ($title eq '') {
Line 500  sub prettyprint { Line 500  sub prettyprint {
                 }                   } 
             }              }
             $_ = '<li>'.$title.' '.              $_ = '<li>'.$title.' '.
  &Apache::lonhtmlcommon::crumbs($url,$target,$prefix,$form,'-1',$noformat).   &Apache::lonhtmlcommon::crumbs($url,$target,$prefix,$form,'0',$noformat).
                 '</li>'                  '</li>'
     } split(/\s*\,\s*/,$value)).'</ul></font>';      } split(/\s*\,\s*/,$value)).'</ul>';
     }      }
     # Evaluations      # Evaluations
     if (($type eq 'clear') ||      if (($type eq 'clear') ||
Line 519  sub prettyprint { Line 519  sub prettyprint {
     # List of courses      # List of courses
     if ($type=~/\_list/) {      if ($type=~/\_list/) {
         my @Courses = split(/\s*\,\s*/,$value);          my @Courses = split(/\s*\,\s*/,$value);
         my $Str='<font size="-1"><ul>';          my $Str='<ul class="LC_fontsize_medium">';
  my %descriptions;   my %descriptions;
         foreach my $course (@Courses) {          foreach my $course (@Courses) {
             my %courseinfo =              my %courseinfo =
Line 538  sub prettyprint { Line 538  sub prettyprint {
     $Str .= $descriptions{$course};      $Str .= $descriptions{$course};
  }   }
   
  return $Str.'</ul></font>';   return $Str.'</ul>';
     }      }
     # No pretty print found      # No pretty print found
     return $value;      return $value;
Line 555  sub selectbox { Line 555  sub selectbox {
         $functionref=\&direct;          $functionref=\&direct;
     }      }
     my $selout='<select name="'.$name.'">';      my $selout='<select name="'.$name.'">';
     foreach (@idlist) {      foreach my $id (@idlist) {
         $selout.='<option value=\''.$_.'\'';          $selout.='<option value="'.$id.'"';
         if ($_ eq $value) {          if ($id eq $value) {
     $selout.=' selected>'.&{$functionref}($_).'</option>';      $selout.=' selected="selected">'.&{$functionref}($id).'</option>';
  }          } else {
         else {$selout.='>'.&{$functionref}($_).'</option>';}              $selout.='>'.&{$functionref}($id).'</option>';
           }
     }      }
     return $selout.'</select>';      return $selout.'</select>';
 }  }
Line 577  sub relatedfield { Line 578  sub relatedfield {
         return $relatedsep.'&nbsp;';          return $relatedsep.'&nbsp;';
     }      }
     return $relatedsep.'<input type="checkbox" name="'.$fieldname.'_related"'.      return $relatedsep.'<input type="checkbox" name="'.$fieldname.'_related"'.
  ($relatedvalue?' checked="1"':'').' />';   ($relatedvalue?' checked="checked"':'').' />';
 }  }
   
 sub prettyinput {  sub prettyinput {
Line 690  sub prettyinput { Line 691  sub prettyinput {
     # Obsolete      # Obsolete
     if ($type eq 'obsolete') {      if ($type eq 'obsolete') {
  return '<input type="checkbox" name="'.$fieldname.'"'.   return '<input type="checkbox" name="'.$fieldname.'"'.
     ($value?' checked="1"':'').' />'.      ($value?' checked="checked"':'').' />'.
             &relatedfield(0,$relatedsearchflag,$relatedsep);               &relatedfield(0,$relatedsearchflag,$relatedsep); 
     }      }
     # Obsolete replacement file      # Obsolete replacement file
Line 761  sub handler { Line 762  sub handler {
     } elsif ($uri=~m|^/editupload/[^/]+/[^/]+/portfolio/|) {      } elsif ($uri=~m|^/editupload/[^/]+/[^/]+/portfolio/|) {
     ($resdomain,$resuser)=      ($resdomain,$resuser)=
  (&Apache::lonnet::declutter($uri)=~m|^($match_domain)/($match_name)/portfolio|);   (&Apache::lonnet::declutter($uri)=~m|^($match_domain)/($match_name)/portfolio|);
         $r->print(&Apache::loncommon::start_page('Edit Portfolio File Catalog Information',          $r->print(&Apache::loncommon::start_page('Edit Portfolio File Metadata',
  undef,   undef,
  {'domain' => $resdomain,}));   {'domain' => $resdomain,}));
         if ($env{'form.store'}) {          if ($env{'form.store'}) {
Line 780  sub handler { Line 781  sub handler {
             }              }
         }          }
     } elsif ($uri=~m|^/editupload/[^/]+/[^/]+/groups/|) {      } elsif ($uri=~m|^/editupload/[^/]+/[^/]+/groups/|) {
         $r->print(&Apache::loncommon::start_page('Edit Group Portfolio File Catalog Information',          $r->print(&Apache::loncommon::start_page('Edit Group Portfolio File Metadata',
  undef,   undef,
  {'domain' => $resdomain,}));   {'domain' => $resdomain,}));
         &present_editable_metadata($r,$uri,'groups');              &present_editable_metadata($r,$uri,'groups');    
     } elsif ($uri=~m|^/~|) {       } elsif ($uri=~m|^/~|) { 
         # Construction space          # Construction space
         $r->print(&Apache::loncommon::start_page('Edit Catalog Information',          $r->print(&Apache::loncommon::start_page('Edit Metadata',
  "\n".'<script type="text/javascript">'."\n".   "\n".'<script type="text/javascript">'."\n".
                                                 &Apache::loncommon::browser_and_searcher_javascript().                                                  &Apache::loncommon::browser_and_searcher_javascript().
                                                 "\n".'</script>',                                                  "\n".'</script>',
Line 832  sub report_bombs { Line 833  sub report_bombs {
 ENDCLEAR  ENDCLEAR
         my %brokenurls =           my %brokenurls = 
             &Apache::lonmsg::all_url_author_res_msg($author,$domain);              &Apache::lonmsg::all_url_author_res_msg($author,$domain);
         foreach (sort(keys(%brokenurls))) {          foreach my $key (sort(keys(%brokenurls))) {
             if ($_=~/^\Q$uri\E/) {              if ($key=~/^\Q$uri\E/) {
                 $r->print                  $r->print
                     ('<a href="'.&Apache::lonnet::clutter($_).'">'.$_.'</a>'.                      ('<a href="'.&Apache::lonnet::clutter($key).'">'.$key.'</a>'.
                      &Apache::lonmsg::retrieve_author_res_msg($_).                       &Apache::lonmsg::retrieve_author_res_msg($key).
                      '<hr />');                       '<hr />');
             }              }
         }          }
Line 859  sub present_uneditable_metadata { Line 860  sub present_uneditable_metadata {
     my $uploaded = ($uri =~ m|/uploaded/|);      my $uploaded = ($uri =~ m|/uploaded/|);
     my %content=();      my %content=();
     # Read file      # Read file
     foreach (split(/\,/,&Apache::lonnet::metadata($uri,'keys'))) {      foreach my $key (split(/\,/,&Apache::lonnet::metadata($uri,'keys'))) {
         $content{$_}=&Apache::lonnet::metadata($uri,$_);          $content{$key}=&Apache::lonnet::metadata($uri,$key);
     }      }
     # Render Output      # Render Output
     # displayed url      # displayed url
Line 926  sub present_uneditable_metadata { Line 927  sub present_uneditable_metadata {
    'obsolete',      'obsolete', 
    'obsoletereplacement');     'obsoletereplacement');
     }      }
       my $rownum = 0;
     foreach my $field (@fields) {      foreach my $field (@fields) {
           my $lastrow = '';
           $rownum ++;
           $lastrow = 1 if ($rownum == @fields); 
         $table.=&Apache::lonhtmlcommon::row_title($lt{$field})          $table.=&Apache::lonhtmlcommon::row_title($lt{$field})
                .&prettyprint($field,$content{$field})                 .&prettyprint($field,$content{$field})
                .&Apache::lonhtmlcommon::row_closure();                 .&Apache::lonhtmlcommon::row_closure($lastrow);
         delete($content{$field});          delete($content{$field});
     }      }
     #      #
Line 970  sub print_dynamic_metadata { Line 975  sub print_dynamic_metadata {
         exists($dynmeta{'course'})) {          exists($dynmeta{'course'})) {
         $r->print('<h4>'.&mt('Access and Usage Statistics').'</h4>'.          $r->print('<h4>'.&mt('Access and Usage Statistics').'</h4>'.
                   &Apache::lonhtmlcommon::start_pick_box());                    &Apache::lonhtmlcommon::start_pick_box());
         foreach ('count',          my @counts = ('count','sequsage','sequsage_list',
                  'sequsage','sequsage_list',                        'comefrom','comefrom_list','goto',
                  'comefrom','comefrom_list',                        'goto_list','course','course_list');
                  'goto','goto_list',          my $rownum = 0;
                  'course','course_list') {          foreach my $item (@counts) {
             $r->print(&Apache::lonhtmlcommon::row_title($lt{$_})              my $lastrow = '';
                      .&prettyprint($_,$dynmeta{$_})              $rownum ++;
                      .&Apache::lonhtmlcommon::row_closure()              $lastrow = 1 if ($rownum == @counts);
               $r->print(&Apache::lonhtmlcommon::row_title($lt{$item})
                        .&prettyprint($item,$dynmeta{$item})
                        .&Apache::lonhtmlcommon::row_closure($lastrow)
             );              );
         }          }
         $r->print(&Apache::lonhtmlcommon::end_pick_box());          $r->print(&Apache::lonhtmlcommon::end_pick_box());
Line 1000  sub print_dynamic_metadata { Line 1008  sub print_dynamic_metadata {
                      .&prettyprint('stdno',$dynmeta{'stdno'})                       .&prettyprint('stdno',$dynmeta{'stdno'})
                      .&Apache::lonhtmlcommon::row_closure()                       .&Apache::lonhtmlcommon::row_closure()
             );              );
             foreach ('avetries','difficulty','disc') {              my @stats = ('avetries','difficulty','disc');
                 $r->print(&Apache::lonhtmlcommon::row_title($lt{$_})              my $rownum = 0;
                          .&prettyprint($_,sprintf('%5.2f',$dynmeta{$_}))              foreach my $item (@stats) {
                          .&Apache::lonhtmlcommon::row_closure()                  my $lastrow = '';
                   $rownum ++;
                   $lastrow = 1 if ($rownum == @stats);
                   $r->print(&Apache::lonhtmlcommon::row_title($lt{$item})
                            .&prettyprint($item,sprintf('%5.2f',$dynmeta{$item}))
                            .&Apache::lonhtmlcommon::row_closure($lastrow)
                 );                  );
             }              }
             $r->print(&Apache::lonhtmlcommon::end_pick_box());              $r->print(&Apache::lonhtmlcommon::end_pick_box());
Line 1041  sub print_dynamic_metadata { Line 1054  sub print_dynamic_metadata {
                     '<td align="right">'.$data->{'sections'}.'</td>';                      '<td align="right">'.$data->{'sections'}.'</td>';
                 $table .=                  $table .=
                     '<td align="right">'.$data->{'stdno'}.'</td>';                      '<td align="right">'.$data->{'stdno'}.'</td>';
                 foreach ('avetries','difficulty','disc') {                  foreach my $item ('avetries','difficulty','disc') {
                     $table .= '<td align="right">';                      $table .= '<td align="right">';
                     if (exists($data->{$_})) {                      if (exists($data->{$item})) {
                         $table .= sprintf('%.2f',$data->{$_}).'&nbsp;';                          $table .= sprintf('%.2f',$data->{$item}).'&nbsp;';
                     } else {                      } else {
                         $table .= '';                          $table .= '';
                     }                      }
Line 1076  sub print_dynamic_metadata { Line 1089  sub print_dynamic_metadata {
         exists($dynmeta{'technical'})){           exists($dynmeta{'technical'})){ 
         $r->print('<h4>'.&mt('Evaluation Data').'</h4>'.          $r->print('<h4>'.&mt('Evaluation Data').'</h4>'.
                   &Apache::lonhtmlcommon::start_pick_box());                    &Apache::lonhtmlcommon::start_pick_box());
         foreach ('clear','depth','helpful','correct','technical') {          my @criteria = ('clear','depth','helpful','correct','technical');
             $r->print(&Apache::lonhtmlcommon::row_title($lt{$_})          my $rownum = 0;
                      .&prettyprint($_,$dynmeta{$_})          foreach my $item (@criteria) {
                      .&Apache::lonhtmlcommon::row_closure()              my $lastrow = '';
               $rownum ++;
               $lastrow = 1 if ($rownum == @criteria);
               $r->print(&Apache::lonhtmlcommon::row_title($lt{$item})
                        .&prettyprint($item,$dynmeta{$item})
                        .&Apache::lonhtmlcommon::row_closure($lastrow)
             );              );
         }          }
         $r->print(&Apache::lonhtmlcommon::end_pick_box());          $r->print(&Apache::lonhtmlcommon::end_pick_box());
Line 1112  sub print_dynamic_metadata { Line 1130  sub print_dynamic_metadata {
               &mt('Additional Metadata (non-standard, parameters, exports)').                &mt('Additional Metadata (non-standard, parameters, exports)').
               '</h3>');                '</h3>');
     $r->print(&Apache::lonhtmlcommon::start_pick_box());      $r->print(&Apache::lonhtmlcommon::start_pick_box());
     foreach (sort(keys(%content))) {      my @names;
         my $name=$_;      foreach my $key (sort(keys(%content))) {
         if ($name!~/\.display$/) {          if ($key!~/\.display$/) {
               push(@names,$key);
           }
       }
       if (@names > 0) {
           my $rownum = 0;
           foreach my $name (@names) {
               my $lastrow = '';
               $rownum ++;
               $lastrow = 1 if ($rownum == @names);
   
             my $display=&Apache::lonnet::metadata($uri,              my $display=&Apache::lonnet::metadata($uri,
                                                   $name.'.display');                                                    $name.'.display');
             if (! $display) {               if (! $display) { 
                 $display=$name;                  $display=$name;
             };              };
             my $otherinfo='';              my $otherinfo='';
             foreach ('name','part','type','default') {              foreach my $item ('name','part','type','default') {
                 if (defined(&Apache::lonnet::metadata($uri,                  if (defined(&Apache::lonnet::metadata($uri,
                                                       $name.'.'.$_))) {                                                        $name.'.'.$item))) {
                     $otherinfo.=' '.$_.'='.                      $otherinfo.=' '.$item.'='.
                         &Apache::lonnet::metadata($uri,                          &Apache::lonnet::metadata($uri,
                                                   $name.'.'.$_).'; ';                                                    $name.'.'.$item).'; ';
                 }                  }
             }              }
             $r->print(&Apache::lonhtmlcommon::row_title($display)              $r->print(&Apache::lonhtmlcommon::row_title($display)
Line 1135  sub print_dynamic_metadata { Line 1163  sub print_dynamic_metadata {
             if ($otherinfo) {              if ($otherinfo) {
                 $r->print(' ('.$otherinfo.')');                  $r->print(' ('.$otherinfo.')');
             }              }
             $r->print(&Apache::lonhtmlcommon::row_closure());              $r->print(&Apache::lonhtmlcommon::row_closure($lastrow));
         }          }
     }      }
     $r->print(&Apache::lonhtmlcommon::end_pick_box());      $r->print(&Apache::lonhtmlcommon::end_pick_box());
Line 1439  sub store_metadata { Line 1467  sub store_metadata {
         $output .= $result;          $output .= $result;
     } else {      } else {
         if (! ($mfh=Apache::File->new('>'.$fn))) {          if (! ($mfh=Apache::File->new('>'.$fn))) {
             $output .= '<p><font color="red">';              $output .= '<p class="LC_error">';
             if ($caller eq 'transfer') {              if ($caller eq 'transfer') {
                 $output .= &mt('Could not transfer data in added fields to notes');                  $output .= &mt('Could not transfer data in added fields to notes');
             } else {               } else { 
                 $output .= &mt('Could not write metadata');                  $output .= &mt('Could not write metadata');
             }              }
             $output .= ', '.&mt('FAIL').'</font></p>';              $output .= ', '.&mt('FAIL').'</p>';
             $outcome = 'fail';              $outcome = 'fail';
         } else {          } else {
             print $mfh ($file_content);              print $mfh ($file_content);
             close($mfh);              close($mfh);
             &update_metadata_table($uri);              &update_metadata_table($uri);
             $output .= '<p><font color="blue">';              $output .= '<p class="LC_success">';
             if ($caller eq 'transfer') {              if ($caller eq 'transfer') {
                 $output .= &mt('Transferred data in added fields to notes');                  $output .= &mt('Transferred data in added fields to notes');
             } else {              } else {
                 $output .= &mt('Wrote Metadata');                  $output .= &mt('Wrote Metadata');
             }              }
             $output .= ' '.&Apache::lonlocal::locallocaltime(time).              $output .= ' '.&Apache::lonlocal::locallocaltime(time).
                        '</font></p>';                         '</p>';
             $outcome = 'ok';              $outcome = 'ok';
         }          }
     }      }
Line 1486  sub store_portfolio_metadata { Line 1514  sub store_portfolio_metadata {
     $env{'form.'.$formname.'.filename'}=$new_fn;      $env{'form.'.$formname.'.filename'}=$new_fn;
     my $result =&Apache::lonnet::userfileupload($formname,'',$path);      my $result =&Apache::lonnet::userfileupload($formname,'',$path);
     if ($result =~ /(error|notfound)/) {      if ($result =~ /(error|notfound)/) {
         $output = '<p><font color="red">';          $output = '<p class="LC_error">';
         if ($caller eq 'transfer') {          if ($caller eq 'transfer') {
             $output .=               $output .= 
                 &mt('Could not transfer data in added fields to notes');                   &mt('Could not transfer data in added fields to notes'); 
         } else {          } else {
             $output .= &mt('Could not write metadata');              $output .= &mt('Could not write metadata');
         }          }
         $output .= ', '.&mt('FAIL').'</font></p>';          $output .= ', '.&mt('FAIL').'</p>';
         $outcome = 'fail';          $outcome = 'fail';
     } else {      } else {
         &update_metadata_table($uri);          &update_metadata_table($uri);
         $output = '<p><font color="blue">';          $output = '<p class="LC_success">';
         if ($caller eq 'transfer') {          if ($caller eq 'transfer') {
             $output .= &mt('Transferred data in added fields to notes');              $output .= &mt('Transferred data in added fields to notes');
         } else {          } else {
             $output .= &mt('Wrote Metadata');              $output .= &mt('Wrote Metadata');
         }          }
         $output .= ' '.&Apache::lonlocal::locallocaltime(time).          $output .= ' '.&Apache::lonlocal::locallocaltime(time).
                    '</font></p>';                     '</p>';
         $outcome = 'ok';          $outcome = 'ok';
     }      }
     return ($outcome,$output);      return ($outcome,$output);

Removed from v.1.219  
changed lines
  Added in v.1.229


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