Diff for /loncom/interface/lonmeta.pm between versions 1.190 and 1.198

version 1.190, 2006/12/05 02:55:53 version 1.198, 2007/01/15 23:39:16
Line 235  sub fieldnames { Line 235  sub fieldnames {
          'lowestgradelevel' => 'Lowest Grade Level',           'lowestgradelevel' => 'Lowest Grade Level',
          'highestgradelevel' => 'Highest Grade Level');           'highestgradelevel' => 'Highest Grade Level');
           
     if (! defined($file_type) || $file_type ne 'portfolio') {      if ( !defined($file_type) || ($file_type ne 'portfolio' && $file_type ne 'groups') ) {
         %fields =           %fields = 
         (%fields,          (%fields,
          'domain' => 'Domain',           'domain' => 'Domain',
Line 598  sub prettyinput { Line 598  sub prettyinput {
                 if ($meta_options{$item}) {                  if ($meta_options{$item}) {
                     push(@cur_values_inst,$item);                      push(@cur_values_inst,$item);
                 } else {                  } else {
                     $cur_values_stu .= $item.',';                      if ($item ne 'Not Specified') {
                           $cur_values_stu .= $item.',';
                       }
                 }                  }
             }              }
               my @key_order = sort(keys(%meta_options));
               unshift (@key_order,'Not Specified');
               $meta_options{'Not Specified'} = 'Not Specified';
               $meta_options{'select_form_order'} = \@key_order;
         } else {          } else {
             $cur_values_stu = $value;              $cur_values_stu = $value;
         }          }
Line 613  sub prettyinput { Line 619  sub prettyinput {
              || ($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 750  sub handler { Line 757  sub handler {
             %Apache::lonpublisher::metadatakeys=();              %Apache::lonpublisher::metadatakeys=();
             my $result=&Apache::lonnet::getfile($fn);              my $result=&Apache::lonnet::getfile($fn);
             &Apache::lonpublisher::metaeval($result);              &Apache::lonpublisher::metaeval($result);
             &Apache::lonnet::logthis("restricted is: ".$Apache::lonpublisher::metadatafields{'courserestricted'});  
             if ((!$Apache::lonpublisher::metadatafields{'courserestricted'}) ||              if ((!$Apache::lonpublisher::metadatafields{'courserestricted'}) ||
                 ($env{'form.changecourse'} eq 'true')) {                  ($env{'form.changecourse'} eq 'true')) {
                 &pre_select_course($r,$uri);                  &pre_select_course($r,$uri);
Line 1203  ENDEDIT Line 1209  ENDEDIT
  my @fields;   my @fields;
  my $added_metadata_fields;   my $added_metadata_fields;
  my @added_order;   my @added_order;
           if ($file_type eq 'groups') {
               $Apache::lonpublisher::metadatafields{'courserestricted'}=
                   'course.'.$env{'request.course.id'};
           }
           if ((! $Apache::lonpublisher::metadatafields{'courserestricted'}) &&
                   (! $env{'form.new_courserestricted'}) && (! $file_type eq 'groups')) {
               $Apache::lonpublisher::metadatafields{'courserestricted'}=
                   'none';
           } elsif ($env{'form.new_courserestricted'}) {
               $Apache::lonpublisher::metadatafields{'courserestricted'}=
                   $env{'form.new_courserestricted'};
           }
  if ($file_type eq 'portfolio' || $file_type eq 'groups') {   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
Line 1212  ENDEDIT Line 1230  ENDEDIT
         @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();                  if ($Apache::lonpublisher::metadatafields{'courserestricted'} =~ /^course\.($match_domain\_$match_courseid)$/) {
         if ($env{'course.'.$env{'request.course.id'}.'.metadata.addedorder'}) {                      my $assoc_crs = $1;
             @added_order = split(/,/,$env{'course.'.$env{'request.course.id'}.'.metadata.addedorder'});              $added_metadata_fields = &Apache::lonparmset::get_added_meta_fieldnames($assoc_crs);
         }              if ($env{'course.'.$assoc_crs.'.metadata.addedorder'}) {
         $env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.fieldlist'} = join(",",@fields);                  @added_order = split(/,/,$env{'course.'.$assoc_crs.'.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',
Line 1225  ENDEDIT Line 1246  ENDEDIT
        'lowestgradelevel','highestgradelevel','sourceavail','sourcerights',         'lowestgradelevel','highestgradelevel','sourceavail','sourcerights',
        'obsolete','obsoletereplacement');         'obsolete','obsoletereplacement');
         }          }
         if ($file_type eq 'groups') {  
             $Apache::lonpublisher::metadatafields{'courserestricted'}=  
                 'course.'.$env{'request.course.id'};   
         }  
         if ((! $Apache::lonpublisher::metadatafields{'courserestricted'}) &&  
                 (! $env{'form.new_courserestricted'}) && (! $file_type eq 'groups')) {  
             $Apache::lonpublisher::metadatafields{'courserestricted'}=  
                 'none';  
         } elsif ($env{'form.new_courserestricted'}) {  
             $Apache::lonpublisher::metadatafields{'courserestricted'}=  
                 $env{'form.new_courserestricted'};   
         }             
         if (! $Apache::lonpublisher::metadatafields{'copyright'}) {          if (! $Apache::lonpublisher::metadatafields{'copyright'}) {
                 $Apache::lonpublisher::metadatafields{'copyright'}=                  $Apache::lonpublisher::metadatafields{'copyright'}=
     'default';      'default';
Line 1250  ENDEDIT Line 1259  ENDEDIT
  $Apache::lonpublisher::metadatafields{'owner'} =   $Apache::lonpublisher::metadatafields{'owner'} =
     $env{'user.name'}.':'.$env{'user.domain'};      $env{'user.name'}.':'.$env{'user.domain'};
     }      }
   
     if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none') {      if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none') {
  $r->print(&mt('Associated with course [_1]',  
                   if ($file_type eq 'portfolio') {
       $r->print(&mt('Associated with course [_1]',
         '<strong><a href="'.$uri.'?changecourse=true">'.          '<strong><a href="'.$uri.'?changecourse=true">'.
         $env{$Apache::lonpublisher::metadatafields{'courserestricted'}.          $env{$Apache::lonpublisher::metadatafields{'courserestricted'}.
         ".description"}.          ".description"}.
       '</a></strong>').'<br />');        '</a></strong>').'<br />');
                   } else {
                       $r->print(&mt('Associated with course [_1]',
                           '<strong>'.
     $env{$Apache::lonpublisher::metadatafields{'courserestricted'}.
                           ".description"}.'</strong>').'<br />');
                   }
     } else {      } else {
  $r->print('<a href="'.$uri.'?changecourse=true">This resource is not associated with a course.</a><br />');   $r->print('<a href="'.$uri.'?changecourse=true">This resource is not associated with a course.</a><br />');
     }      }
Line 1342  ENDEDIT Line 1358  ENDEDIT
     ($path, $new_fn) = ($fn =~ m|/(portfolio.*)/([^/]*)$|);      ($path, $new_fn) = ($fn =~ m|/(portfolio.*)/([^/]*)$|);
         }          }
                 $r->print(&store_portfolio_metadata($formname,$file_content,$path,                  $r->print(&store_portfolio_metadata($formname,$file_content,$path,
                                                     $new_fn));                                                      $new_fn,$uri));
             } 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">'.
Line 1350  ENDEDIT Line 1366  ENDEDIT
       &mt('FAIL').'</font></p>');        &mt('FAIL').'</font></p>');
  } else {   } else {
     print $mfh ($file_content);      print $mfh ($file_content);
                       close($mfh);
                       &update_metadata_table($uri);
     $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>');
Line 1359  ENDEDIT Line 1377  ENDEDIT
  $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').'" />');
   
  if ($file_type eq 'portfolio') {   if ($file_type eq 'portfolio' || $file_type eq 'groups') {
     my ($port_path,$group) = &get_port_path_and_group($uri);      my ($port_path,$group) = &get_port_path_and_group($uri);
             if ($group) {              if ($group ne '') {
                 $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><br /><br /><form method="post" action="'.$port_path.'">');      $r->print('</form><br /><br /><form method="post" action="'.$port_path.'">');
     if ($group) {      if ($group ne '') {
         $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="'.$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').'" />');
  }   }
Line 1380  ENDEDIT Line 1398  ENDEDIT
 }  }
   
 sub store_portfolio_metadata {  sub store_portfolio_metadata {
     my ($formname,$content,$path,$new_fn) = @_;      my ($formname,$content,$path,$new_fn,$uri) = @_;
     $env{'form.'.$formname}=$content."\n";      $env{'form.'.$formname}=$content."\n";
     $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);
Line 1389  sub store_portfolio_metadata { Line 1407  sub store_portfolio_metadata {
                   &mt('Could not write metadata').', '.                    &mt('Could not write metadata').', '.
                   &mt('FAIL').'</font></p>';                    &mt('FAIL').'</font></p>';
     } else {      } else {
           &update_metadata_table($uri);
         return '<p><font color="blue">'.&mt('Wrote Metadata').          return '<p><font color="blue">'.&mt('Wrote Metadata').
                   ' '.&Apache::lonlocal::locallocaltime(time).'</font></p>';                    ' '.&Apache::lonlocal::locallocaltime(time).'</font></p>';
     }      }
 }  }
   
   sub update_metadata_table {
       my ($uri) = @_;
       my ($type,$udom,$uname,$file_name,$group) =
    &Apache::lonnet::parse_portfolio_url($uri);
       $file_name =~ s/\.meta$//;
       my $current_permissions =
           &Apache::lonnet::get_portfile_permissions($udom,$uname);
       my %access_controls =
           &Apache::lonnet::get_access_controls($current_permissions,$group,
                                                $file_name);
       my $access_hash = $access_controls{$file_name};
       my $available = 0;
       if (ref($access_hash) eq 'HASH') {
           foreach my $key (keys(%{$access_hash})) {
               my ($num,$scope,$end,$start) =
                   ($key =~ /^([^:]+):([a-z]+)_(\d*)_?(\d*)$/);
               if ($scope eq 'public' || $scope eq 'guest') {
                   $available = 1;
                   last;
               }
           }
       }
       if ($available) {
           my $result =
               &Apache::lonnet::update_portfolio_table($uname,$udom,
               $file_name,'portfolio_metadata',$group,'update');
       }
   }
   
   
 1;  1;
 __END__  __END__
   

Removed from v.1.190  
changed lines
  Added in v.1.198


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