--- loncom/interface/lonmeta.pm	2006/09/13 22:08:07	1.176
+++ loncom/interface/lonmeta.pm	2006/10/23 20:53:46	1.184
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Metadata display handler
 #
-# $Id: lonmeta.pm,v 1.176 2006/09/13 22:08:07 banghart Exp $
+# $Id: lonmeta.pm,v 1.184 2006/10/23 20:53:46 banghart Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -95,7 +95,8 @@ sub get_dynamic_metadata_from_sql {
         while (my $result = <$fh>) {
             chomp($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)) {
                 $ReturnHash{$hash{'url'}}->{$key}=$hash{$key};
             }
@@ -468,7 +469,7 @@ sub prettyprint {
 	($type eq 'sequsage_list') ||
 	($type eq 'dependencies')) {
 	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);
             if ($title eq '') {
                 $title = 'Untitled';
@@ -505,6 +506,7 @@ sub prettyprint {
     if ($type=~/\_list/) {
         my @Courses = split(/\s*\,\s*/,$value);
         my $Str='<font size="-1"><ul>';
+	my %descriptions;
         foreach my $course (@Courses) {
             my %courseinfo =
 		&Apache::lonnet::coursedescription($course,
@@ -512,10 +514,16 @@ sub prettyprint {
             if (! exists($courseinfo{'num'}) || $courseinfo{'num'} eq '') {
                 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{'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>';
     }
     # No pretty print found
@@ -821,8 +829,7 @@ sub present_uneditable_metadata {
     # displayed url
     my ($thisversion)=($uri=~/\.(\d+)\.(\w+)\.meta$/);
     $uri=~s/\.meta$//;
-    my $disuri=&Apache::lonnet::clutter($uri);
-    $disuri=~s/^\/adm\/wrapper//;
+    my $disuri=&Apache::lonnet::clutter_with_no_wrapper($uri);
     # version
     my $versiondisplay='';
     if (!$uploaded) {
@@ -1185,7 +1192,8 @@ ENDEDIT
 	my $output;
 	my @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'})) {
 	        # retrieve fieldnames (in order) from the course restricted list
 	        @fields = (split /,/,$env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.fieldlist'});
@@ -1195,7 +1203,9 @@ ENDEDIT
 			    'notes','lowestgradelevel',
 	                    'highestgradelevel','standards');
 	        $added_metadata_fields = &Apache::lonparmset::get_added_meta_fieldnames();
-	        
+	        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 {
@@ -1238,11 +1248,16 @@ ENDEDIT
 		$r->print("This resource is not associated with a course.<br />");
 	    }
 	}
-        foreach my $field_name(keys (%$added_metadata_fields)) {
-            push (@fields,$field_name);
-            $Apache::lonpublisher::metadatafields{$field_name} =
-                     $$added_metadata_fields{$field_name};
-            $lt{$field_name} = $$added_metadata_fields{$field_name};
+	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};
+            }
         }
         foreach my $field_name (@fields) {
             if (defined($env{'form.new_'.$field_name})) {
@@ -1252,8 +1267,9 @@ ENDEDIT
             if ($Apache::lonpublisher::metadatafields{'courserestricted'} ne 'none'
 		&& exists($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'})) {
                 # handle restrictions here
-                if (($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'} =~ m/active/) ||
-                    ($field_name eq 'courserestricted')){
+                if ((($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'} =~ m/active/) ||
+                    ($field_name eq 'courserestricted'))&&
+                    (!($env{$Apache::lonpublisher::metadatafields{'courserestricted'}.'.metadata.'.$field_name.'.options'} =~ m/deleted/))){
                     $output.=("\n".'<p>'.$lt{$field_name}.': '.
                               &prettyinput($field_name,
 				   $Apache::lonpublisher::metadatafields{$field_name},
@@ -1281,7 +1297,7 @@ ENDEDIT
 	    foreach my $field (sort keys %Apache::lonpublisher::metadatafields) {
 		next if ($field =~ /\./);
 		my $unikey=$field;
-		$unikey=~/^([A-Za-z]+)/;
+		$unikey=~/^([A-Za-z_]+)/;
 		my $tag=$1;
 		$tag=~tr/A-Z/a-z/;
 		$file_content.= "\n\<$tag";