Diff for /loncom/interface/lonmeta.pm between versions 1.174 and 1.187

version 1.174, 2006/09/11 22:48:47 version 1.187, 2006/11/20 18:54:55
Line 95  sub get_dynamic_metadata_from_sql { Line 95  sub get_dynamic_metadata_from_sql {
         while (my $result = <$fh>) {          while (my $result = <$fh>) {
             chomp($result);              chomp($result);
             next if (! $result);              next if (! $result);
             my %hash=&LONCAPA::lonmetadata::metadata_col_to_hash(map { &unescape($_) } split(/\,/,$result));              my %hash=&LONCAPA::lonmetadata::metadata_col_to_hash('metadata',
    map { &unescape($_) } split(/\,/,$result));
             foreach my $key (keys(%hash)) {              foreach my $key (keys(%hash)) {
                 $ReturnHash{$hash{'url'}}->{$key}=$hash{$key};                  $ReturnHash{$hash{'url'}}->{$key}=$hash{$key};
             }              }
Line 468  sub prettyprint { Line 469  sub prettyprint {
  ($type eq 'sequsage_list') ||   ($type eq 'sequsage_list') ||
  ($type eq 'dependencies')) {   ($type eq 'dependencies')) {
  return '<font size="-1"><ul>'.join("\n",map {   return '<font size="-1"><ul>'.join("\n",map {
             my $url = &Apache::lonnet::clutter($_);              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 '') {
                 $title = 'Untitled';                  $title = 'Untitled';
Line 505  sub prettyprint { Line 506  sub prettyprint {
     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='<font size="-1"><ul>';
    my %descriptions;
         foreach my $course (@Courses) {          foreach my $course (@Courses) {
             my %courseinfo =              my %courseinfo =
  &Apache::lonnet::coursedescription($course,   &Apache::lonnet::coursedescription($course,
Line 512  sub prettyprint { Line 514  sub prettyprint {
             if (! exists($courseinfo{'num'}) || $courseinfo{'num'} eq '') {              if (! exists($courseinfo{'num'}) || $courseinfo{'num'} eq '') {
                 next;                  next;
             }              }
             $Str .= '<li><a href="/public/'.$courseinfo{'domain'}.'/'.      $descriptions{join('\0',@courseinfo{'domain','description'})} .= 
    '<li><a href="/public/'.$courseinfo{'domain'}.'/'.
                 $courseinfo{'num'}.'/syllabus" target="preview">'.                  $courseinfo{'num'}.'/syllabus" target="preview">'.
                 $courseinfo{'description'}.'</a></li>';                  $courseinfo{'description'}.' ('.$courseinfo{'domain'}.
    ')</a></li>';
         }          }
    foreach my $course (sort {lc($a) cmp lc($b)} (keys(%descriptions))) {
       $Str .= $descriptions{$course};
    }
   
  return $Str.'</ul></font>';   return $Str.'</ul></font>';
     }      }
     # No pretty print found      # No pretty print found
Line 605  sub prettyinput { Line 613  sub prettyinput {
         if (($type eq 'keywords') || ($type eq 'subject')          if (($type eq 'keywords') || ($type eq 'subject')
              || ($type eq 'author')||($type eq  'notes')               || ($type eq 'author')||($type eq  'notes')
              || ($type eq  'abstract')|| ($type eq  'title')|| ($type eq  'standards')               || ($type eq  'abstract')|| ($type eq  'title')|| ($type eq  'standards')
              || (exists($env{'course.'.$env{'request.course.id'}.'metadata.'.$type.'.added'}))) {               || (exists($env{'course.'.$env{'request.course.id'}.'.metadata.'.$type.'.added'}))) {
             if ($values) {              if ($values) {
                 if ($only_one) {                  if ($only_one) {
                     $output .= (&Apache::loncommon::select_form($cur_values_inst[0],'new_'.$type,%meta_options));                      $output .= (&Apache::loncommon::select_form($cur_values_inst[0],'new_'.$type,%meta_options));
Line 620  sub prettyinput { Line 628  sub prettyinput {
                       $relatedvalue);                         $relatedvalue); 
             }              }
             return ($output);              return ($output);
         }          } 
         if (($type eq 'lowestgradelevel') ||          if (($type eq 'lowestgradelevel') ||
     ($type eq 'highestgradelevel')) {      ($type eq 'highestgradelevel')) {
     return &Apache::loncommon::select_level_form($value,$fieldname).      return &Apache::loncommon::select_level_form($value,$fieldname).
Line 738  sub handler { Line 746  sub handler {
         if ($env{'form.store'}) {          if ($env{'form.store'}) {
             &present_editable_metadata($r,$uri,'portfolio');              &present_editable_metadata($r,$uri,'portfolio');
         } else {          } else {
             &pre_select_course($r,$uri);              my $fn=&Apache::lonnet::filelocation('',$uri);
               %Apache::lonpublisher::metadatafields=();
               %Apache::lonpublisher::metadatakeys=();
               my $result=&Apache::lonnet::getfile($fn);
               &Apache::lonpublisher::metaeval($result);
               &Apache::lonnet::logthis("restricted is: ".$Apache::lonpublisher::metadatafields{'courserestricted'});
               if (!$Apache::lonpublisher::metadatafields{'courserestricted'}) {
                   &pre_select_course($r,$uri);
               } else {
                   &present_editable_metadata($r,$uri,'portfolio');
               }
         }          }
     } 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 Catalog Information',
  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
Line 822  sub present_uneditable_metadata { Line 839  sub present_uneditable_metadata {
     # displayed url      # displayed url
     my ($thisversion)=($uri=~/\.(\d+)\.(\w+)\.meta$/);      my ($thisversion)=($uri=~/\.(\d+)\.(\w+)\.meta$/);
     $uri=~s/\.meta$//;      $uri=~s/\.meta$//;
     my $disuri=&Apache::lonnet::clutter($uri);      my $disuri=&Apache::lonnet::clutter_with_no_wrapper($uri);
     $disuri=~s/^\/adm\/wrapper//;  
     # version      # version
     my $versiondisplay='';      my $versiondisplay='';
     if (!$uploaded) {      if (!$uploaded) {
Line 1186  ENDEDIT Line 1202  ENDEDIT
  my $output;   my $output;
  my @fields;   my @fields;
  my $added_metadata_fields;   my $added_metadata_fields;
  if ($file_type eq 'portfolio') {   my @added_order;
    if ($file_type eq 'portfolio' || $file_type eq 'groups') {
     if(exists ($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.fieldlist'})) {      if(exists ($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.fieldlist'})) {
         # retrieve fieldnames (in order) from the course restricted list          # retrieve fieldnames (in order) from the course restricted list
         @fields = (split /,/,$env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.fieldlist'});          @fields = (split(/,/,$env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.fieldlist'}));
     } else {      } else {
         # no saved field list, use default list          # no saved field list, use default list
         @fields =  ('author','title','subject','keywords','abstract',          @fields =  ('author','title','subject','keywords','abstract',
     'notes','lowestgradelevel',      'notes','lowestgradelevel',
                     'highestgradelevel','standards');                      'highestgradelevel','standards');
         $added_metadata_fields = &Apache::lonparmset::get_added_meta_fieldnames();          $added_metadata_fields = &Apache::lonparmset::get_added_meta_fieldnames();
         $env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.fieldlist'} = join (",",@fields);          if ($env{'course.'.$env{'request.course.id'}.'.metadata.addedorder'}) {
               @added_order = split(/,/,$env{'course.'.$env{'request.course.id'}.'.metadata.addedorder'});
           }
           $env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.fieldlist'} = join(",",@fields);
     }      }
  } else {   } else {
     @fields = ('author','title','subject','keywords','abstract','notes',      @fields = ('author','title','subject','keywords','abstract','notes',
                  'copyright','customdistributionfile','language',         'copyright','customdistributionfile','language',
                  'standards',         'standards',
                  'lowestgradelevel','highestgradelevel','sourceavail','sourcerights',         'lowestgradelevel','highestgradelevel','sourceavail','sourcerights',
                  'obsolete','obsoletereplacement');         'obsolete','obsoletereplacement');
         }          }
         if ($file_type eq 'groups') {          if ($file_type eq 'groups') {
             $Apache::lonpublisher::metadatafields{'courserestricted'}=              $Apache::lonpublisher::metadatafields{'courserestricted'}=
Line 1238  ENDEDIT Line 1258  ENDEDIT
  $r->print("This resource is not associated with a course.<br />");   $r->print("This resource is not associated with a course.<br />");
     }      }
  }   }
    if (@added_order) {
       foreach my $field_name (@added_order) {
                   push(@fields,$field_name);
                   $lt{$field_name} = $$added_metadata_fields{$field_name};
       }
    } else {
               foreach my $field_name (keys(%$added_metadata_fields)) {
                   push(@fields,$field_name);
                   $lt{$field_name} = $$added_metadata_fields{$field_name};
               }
           }
           $output.='<table>';
           my $row_alt = 1;
         foreach my $field_name (@fields) {          foreach my $field_name (@fields) {
               # $row_alt = ($row_alt) ? 0 : 1;
               my $row_class = ($row_alt) ? ' class="LC_metadata_light" ' : ' class="LC_metadata_dark" ';
             if (defined($env{'form.new_'.$field_name})) {              if (defined($env{'form.new_'.$field_name})) {
                 $Apache::lonpublisher::metadatafields{$field_name}=                  $Apache::lonpublisher::metadatafields{$field_name}=
                     join(',',&Apache::loncommon::get_env_multiple('form.new_'.$field_name));                      join(',',&Apache::loncommon::get_env_multiple('form.new_'.$field_name));
Line 1246  ENDEDIT Line 1281  ENDEDIT
             if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none'              if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none'
  && exists($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'})) {   && exists($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'})) {
                 # handle restrictions here                  # handle restrictions here
                 if (($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'} =~ m/active/) ||                  if ((($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'} =~ m/active/) ||
                     ($field_name eq 'courserestricted')){                      ($field_name eq 'courserestricted'))&&
                     $output.=("\n".'<p>'.$lt{$field_name}.': '.                      (!($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'} =~ m/deleted/))){
                       
                       $output.=("\n".'<tr '.$row_class.'><td><span class="LC_metadata">'.$lt{$field_name}.':</span></td><td> '.
                               &prettyinput($field_name,                                &prettyinput($field_name,
    $Apache::lonpublisher::metadatafields{$field_name},     $Apache::lonpublisher::metadatafields{$field_name},
                     'new_'.$field_name,'defaultmeta',                      'new_'.$field_name,'defaultmeta',
                     undef,undef,undef,undef,                      undef,undef,undef,undef,
                     $Apache::lonpublisher::metadatafields{'courserestricted'}).'</p>'."\n");                      $Apache::lonpublisher::metadatafields{'courserestricted'}).'</td></tr>'."\n");
                  }                   }
             } else {              } else {
   
                     $output.=('<p>'.$lt{$field_name}.': '.                      $output.=('<tr'.$row_class.'><td><span class="LC_metadata">'.$lt{$field_name}.':</span></td><td> '.
                             &prettyinput($field_name,        &prettyinput($field_name,
    $Apache::lonpublisher::metadatafields{$field_name},     $Apache::lonpublisher::metadatafields{$field_name},
    'new_'.$field_name,'defaultmeta').'</p>');     'new_'.$field_name,'defaultmeta').'</td></tr>');
                                 
             }              }
         }          }
         foreach my $field_name (keys(%$added_metadata_fields)) {          $output.='</table>';
             my $course = $env{'request.course.id'};  
             $output.=('<p>'.$$added_metadata_fields{$field_name}.': '.  
                     &prettyinput($field_name,$env{'course.'.$env{'request.course.id'}.'metadata.'.$field_name.'.value'},  
                     'new_'.$field_name,'addedmeta').'</p>')  
         }  
  if ($env{'form.store'}) {   if ($env{'form.store'}) {
     my $mfh;      my $mfh;
     my $formname='store';       my $formname='store'; 
Line 1278  ENDEDIT Line 1310  ENDEDIT
  $Apache::lonpublisher::metadatafields{'keywords'} =    $Apache::lonpublisher::metadatafields{'keywords'} = 
     join (',', &Apache::loncommon::get_env_multiple('form.new_keywords'));      join (',', &Apache::loncommon::get_env_multiple('form.new_keywords'));
     }      }
       foreach my $field (sort(keys(%Apache::lonpublisher::metadatafields))) {
     foreach my $field (sort keys %Apache::lonpublisher::metadatafields) {  
  next if ($field =~ /\./);   next if ($field =~ /\./);
  my $unikey=$field;   my $unikey=$field;
  $unikey=~/^([A-Za-z]+)/;   $unikey=~/^([A-Za-z_]+)/;
  my $tag=$1;   my $tag=$1;
  $tag=~tr/A-Z/a-z/;   $tag=~tr/A-Z/a-z/;
  $file_content.= "\n\<$tag";   $file_content.= "\n\<$tag";
  foreach my $key (split(/\,/,   foreach my $key (split(/\,/,
        $Apache::lonpublisher::metadatakeys{$unikey})         $Apache::lonpublisher::metadatakeys{$unikey})
  ) {   ) {
     my $value=      my $value=
  $Apache::lonpublisher::metadatafields{$unikey.'.'.$key};   $Apache::lonpublisher::metadatafields{$unikey.'.'.$key};
     $value=~s/\"/\'\'/g;      $value=~s/\"/\'\'/g;
     $file_content.=' '.$key.'="'.$value.'"' ;      $file_content.=' '.$key.'="'.$value.'"' ;
     # print $mfh ' '.$key.'="'.$value.'"';  
  }   }
  $file_content.= '>'.   $file_content.= '>'.
     &HTML::Entities::encode      &HTML::Entities::encode
Line 1310  ENDEDIT Line 1340  ENDEDIT
         }          }
                 $r->print(&store_portfolio_metadata($formname,$file_content,$path,                  $r->print(&store_portfolio_metadata($formname,$file_content,$path,
                                                     $new_fn));                                                      $new_fn));
                 if (! $env{'form.associate'}) {  
                     $r->print(&Apache::portfolio::done("Return to Portfolio",'/adm/portfolio'));  
                     return;  
                 }    
             } else {              } else {
  if (!  ($mfh=Apache::File->new('>'.$fn))) {   if (! ($mfh=Apache::File->new('>'.$fn))) {
     $r->print('<p><font color="red">'.      $r->print('<p><font color="red">'.
       &mt('Could not write metadata').', '.        &mt('Could not write metadata').', '.
       &mt('FAIL').'</font></p>');        &mt('FAIL').'</font></p>');
  } else {   } else {
     print $mfh $file_content;      print $mfh ($file_content);
     $r->print('<p><font color="blue">'.&mt('Wrote Metadata').      $r->print('<p><font color="blue">'.&mt('Wrote Metadata').
       ' '.&Apache::lonlocal::locallocaltime(time).        ' '.&Apache::lonlocal::locallocaltime(time).
       '</font></p>');        '</font></p>');
  }   }
                 if (! $env{'form.associate'}) {  
                     $r->print(&Apache::portfolio::done("Return to Portfolio",'/adm/portfolio'));  
                     return;  
                 }    
     }      }
  }   }
   
  $r->print($output.'<br /><input type="submit" name="store" value="'.   $r->print($output.'<br /><input type="submit" name="store" value="'.
                   &mt('Store Catalog Information').'" />');                    &mt('Store Catalog Information').'" />');
   
Line 1341  ENDEDIT Line 1362  ENDEDIT
                 $r->print('<input type="hidden" name="group" value="'.$group.'" />');                  $r->print('<input type="hidden" name="group" value="'.$group.'" />');
             }              }
             $r->print('<input type="hidden" name="currentpath" value="'.$env{'form.currentpath'}.'" />');              $r->print('<input type="hidden" name="currentpath" value="'.$env{'form.currentpath'}.'" />');
     $r->print('</form>      $r->print('</form><br /><br /><form method="post" action="'.$port_path.'">');
                <br /><br /><form method="post" action="'.$port_path.'">'.      if ($group) {
       '<input type="hidden" name="group" value="'.$group.'" />'.          $r->print('<input type="hidden" name="group" value="'.$group.'" />');
       '<input type="hidden" name="currentpath" value="'.$path.'" />'.      }
       $r->print('<input type="hidden" name="currentpath" value="'.$path.'" />'.
       '<input type="submit" name="cancel" value="'.&mt('Discard Edits and Return to Portfolio').'" />');        '<input type="submit" name="cancel" value="'.&mt('Discard Edits and Return to Portfolio').'" />');
  }   }
     }      }

Removed from v.1.174  
changed lines
  Added in v.1.187


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