--- loncom/interface/lonmeta.pm	2006/08/21 18:04:20	1.171
+++ loncom/interface/lonmeta.pm	2006/09/13 20:12:20	1.175
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Metadata display handler
 #
-# $Id: lonmeta.pm,v 1.171 2006/08/21 18:04:20 banghart Exp $
+# $Id: lonmeta.pm,v 1.175 2006/09/13 20:12:20 banghart Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -237,12 +237,6 @@ sub fieldnames {
     
     if (! defined($file_type) || $file_type ne 'portfolio') {
         %fields = 
-	    (%fields,
-	     'courserestricted' => 'Course Restricting Metadata');
-    }
-         
-    if (! defined($file_type) || $file_type ne 'portfolio') {
-        %fields = 
         (%fields,
          'domain' => 'Domain',
          'mime' => 'MIME Type',
@@ -607,9 +601,11 @@ sub prettyinput {
             return (&select_course());
             # return ('<input type="hidden" name="new_courserestricted" value="'.$course_key.'" />');
         }
+        my $course = $env{'request.course.id'};
         if (($type eq 'keywords') || ($type eq 'subject')
              || ($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'}))) {
             if ($values) {
                 if ($only_one) {
                     $output .= (&Apache::loncommon::select_form($cur_values_inst[0],'new_'.$type,%meta_options));
@@ -745,10 +741,10 @@ sub handler {
             &pre_select_course($r,$uri);
         }
     } 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,
 						 {'domain' => $resdomain,}));
-        &present_editable_metadata($r,$uri,'portfolio');    
+        &present_editable_metadata($r,$uri,'groups');    
     } elsif ($uri=~m|^/~|) { 
         # Construction space
         $r->print(&Apache::loncommon::start_page('Edit Catalog nformation',
@@ -1109,7 +1105,7 @@ sub print_dynamic_metadata {
 #####################################################
 #####################################################
 sub present_editable_metadata {
-    my ($r,$uri, $file_type) = @_;
+    my ($r,$uri,$file_type) = @_;
     # Construction Space Call
     # Header
     my $disuri=$uri;
@@ -1188,10 +1184,19 @@ ENDEDIT
         my %lt=&fieldnames($file_type);
 	my $output;
 	my @fields;
+	my $added_metadata_fields;
 	if ($file_type eq 'portfolio') {
-	    @fields =  ('author','title','subject','keywords','abstract',
-			'notes','lowestgradelevel',
-	                'highestgradelevel','standards');
+	    if(exists ($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.fieldlist'})) {
+	        # retrieve fieldnames (in order) from the course restricted list
+	        @fields = (split /,/,$env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.fieldlist'});
+	    } else {
+	        # no saved field list, use default list
+	        @fields =  ('author','title','subject','keywords','abstract',
+			    'notes','lowestgradelevel',
+	                    'highestgradelevel','standards');
+	        $added_metadata_fields = &Apache::lonparmset::get_added_meta_fieldnames();
+	        $env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.fieldlist'} = join (",",@fields);
+	    }
 	} else {
 	    @fields = ('author','title','subject','keywords','abstract','notes',
                  'copyright','customdistributionfile','language',
@@ -1199,8 +1204,12 @@ ENDEDIT
                  'lowestgradelevel','highestgradelevel','sourceavail','sourcerights',
                  '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'})) {
+                (! $env{'form.new_courserestricted'}) && (! $file_type eq 'groups')) {
             $Apache::lonpublisher::metadatafields{'courserestricted'}=
                 'none';
         } elsif ($env{'form.new_courserestricted'}) {
@@ -1211,7 +1220,7 @@ ENDEDIT
                 $Apache::lonpublisher::metadatafields{'copyright'}=
 		    'default';
         }
-	if ($file_type eq 'portfolio') {
+	if (($file_type eq 'portfolio') || ($file_type eq 'groups'))  {
 	    if (! $Apache::lonpublisher::metadatafields{'mime'}) {
                 ($Apache::lonpublisher::metadatafields{'mime'}) =
 		    ( $target=~/\.(\w+)$/ );
@@ -1229,7 +1238,6 @@ ENDEDIT
 	    }
 	}
         foreach my $field_name (@fields) {
-
             if (defined($env{'form.new_'.$field_name})) {
                 $Apache::lonpublisher::metadatafields{$field_name}=
                     join(',',&Apache::loncommon::get_env_multiple('form.new_'.$field_name));
@@ -1255,6 +1263,12 @@ ENDEDIT
                
             }
         }
+        foreach my $field_name (keys(%$added_metadata_fields)) {
+            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'}) {
 	    my $mfh;
 	    my $formname='store'; 
@@ -1263,22 +1277,20 @@ ENDEDIT
 		$Apache::lonpublisher::metadatafields{'keywords'} = 
 		    join (',', &Apache::loncommon::get_env_multiple('form.new_keywords'));
 	    }
-
-	    foreach (sort keys %Apache::lonpublisher::metadatafields) {
-		next if ($_ =~ /\./);
-		my $unikey=$_;
+	    foreach my $field (sort keys %Apache::lonpublisher::metadatafields) {
+		next if ($field =~ /\./);
+		my $unikey=$field;
 		$unikey=~/^([A-Za-z]+)/;
 		my $tag=$1;
 		$tag=~tr/A-Z/a-z/;
 		$file_content.= "\n\<$tag";
-		foreach (split(/\,/,
+		foreach my $key (split(/\,/,
 			       $Apache::lonpublisher::metadatakeys{$unikey})
 			 ) {
 		    my $value=
-			$Apache::lonpublisher::metadatafields{$unikey.'.'.$_};
+			$Apache::lonpublisher::metadatafields{$unikey.'.'.$key};
 		    $value=~s/\"/\'\'/g;
-		    $file_content.=' '.$_.'="'.$value.'"' ;
-		    # print $mfh ' '.$_.'="'.$value.'"';
+		    $file_content.=' '.$key.'="'.$value.'"' ;
 		}
 		$file_content.= '>'.
 		    &HTML::Entities::encode
@@ -1286,22 +1298,16 @@ ENDEDIT
 		     '<>&"').
 		     '</'.$tag.'>';
 	    }
-	    if ($fn =~ m|^$Apache::lonnet::perlvar{'lonDocRoot'}/userfiles/portfolio/|) {
-		my ($path, $new_fn) = ($fn =~ m|/(portfolio.*)/([^/]*)$|);
+	    if ($fn =~ m|^$Apache::lonnet::perlvar{'lonDocRoot'}/userfiles|) {
+	        my ($path, $new_fn);
+	        if ($fn =~ m|\w+/groups/\w+/portfolio/|) {
+                    ($path, $new_fn) = ($fn =~ m|/(groups/\w+/portfolio.*)/([^/]*)$|);
+	        } else {
+		    ($path, $new_fn) = ($fn =~ m|/(portfolio.*)/([^/]*)$|);
+	        }
                 $r->print(&store_portfolio_metadata($formname,$file_content,$path,
                                                     $new_fn));
-                unless ($env{'form.associate'}) {
-                    $r->print(&Apache::portfolio::done("Return to Portfolio",'/adm/portfolio'));
-                    return;
-                }  
-            } elsif ($fn =~  m|^$Apache::lonnet::perlvar{'lonDocRoot'}/userfiles/groups/\w+/portfolio/|) {
-                my ($path, $new_fn) = ($fn =~ m|/(groups/\w+/portfolio.*)/([^/]*)$|);
-                $r->print(&store_portfolio_metadata($formname,$file_content,$path,$new_fn));
-                unless ($env{'form.associate'}) {
-                    $r->print(&Apache::portfolio::done("Return to Portfolio",'/adm/portfolio'));
-                    return;
-                }  
-	    } else {
+            } else {
 		if (!  ($mfh=Apache::File->new('>'.$fn))) {
 		    $r->print('<p><font color="red">'.
 			      &mt('Could not write metadata').', '.
@@ -1312,13 +1318,8 @@ ENDEDIT
 			      ' '.&Apache::lonlocal::locallocaltime(time).
 			      '</font></p>');
 		}
-                unless ($env{'form.associate'}) {
-                    $r->print(&Apache::portfolio::done("Return to Portfolio",'/adm/portfolio'));
-                    return;
-                }  
 	    }
 	}
-	
 	$r->print($output.'<br /><input type="submit" name="store" value="'.
                   &mt('Store Catalog Information').'" />');
 
@@ -1328,10 +1329,11 @@ ENDEDIT
                 $r->print('<input type="hidden" name="group" value="'.$group.'" />');
             }
             $r->print('<input type="hidden" name="currentpath" value="'.$env{'form.currentpath'}.'" />');
-	    $r->print('</form>
-               <br /><br /><form method="post" action="'.$port_path.'">'.
-		      '<input type="hidden" name="group" value="'.$group.'" />'.
-		      '<input type="hidden" name="currentpath" value="'.$path.'" />'.
+	    $r->print('</form><br /><br /><form method="post" action="'.$port_path.'">');
+	    if ($group) {
+	        $r->print('<input type="hidden" name="group" value="'.$group.'" />');
+	    }
+	    $r->print('<input type="hidden" name="currentpath" value="'.$path.'" />'.
 		      '<input type="submit" name="cancel" value="'.&mt('Discard Edits and Return to Portfolio').'" />');
 	}
     }