--- loncom/interface/lonmodifycourse.pm	2004/11/23 07:02:32	1.13
+++ loncom/interface/lonmodifycourse.pm	2005/02/17 08:29:43	1.15
@@ -45,7 +45,7 @@ sub print_course_selection_page {
     );
                                                                                       
 # Determine the courses
-    my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1);
+    my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1,'.','.');
     &print_header($r,$tasklongref);
     $r->print(<<ENDBLOCK);
 <form action="/adm/modifycourse" method="post" name="cmod">
@@ -65,23 +65,19 @@ ENDBLOCK
     foreach my $key (sort keys %courseIDs) {
 # Get current code
         my $crs;
-        my $currcode;
-        if ($key =~ m/^($dom)_(\w+)$/) {
+        my ($description,$currcode,$owner);
+        if ($courseIDs{$key} =~ m/^([^:]*):([^:]+)/ ) {
+            $currcode = $2;
+        } elsif ($key =~ m/^($dom)_(\w+)$/) {
             $crs = $2;
             my %settings = &Apache::lonnet::get('environment',['internal.coursecode'],$dom,$crs);
             if (defined($settings{'internal.coursecode'}) ) {
                 $currcode = $settings{'internal.coursecode'};
-                if ($currcode eq '') {
-                    $currcode = "___".$iter;
-                    $iter ++;
-                }
-	    } else {
-                $currcode = "___".$iter;
-                $iter ++;
             }
-        } else {
+        }
+        if ($currcode eq '') {
             $currcode = "___".$iter;
-            $iter ++;
+                $iter ++;
         }
         unless (grep/^$currcode$/,@codes) {
             push @codes,$currcode;
@@ -99,15 +95,22 @@ ENDBLOCK
             unless ($code =~m/^___\d+$/) {  $showcode = $code; }
             if ($item =~ m/^($dom)_(\w+)$/) {
                 $crs = $2;
-                if ($courseIDs{$item} =~ /^([^:]*):/) {
+                if ($courseIDs{$item} =~ /^([^:]*):([^:]*):([^:]*)/) {
+                    $description = &Apache::lonnet::unescape($1);
+                    $owner = &Apache::lonnet::unescape($3);
+                } elsif ($courseIDs{$item} =~ /^([^:]*):([^:]*)$/) {
                     $description = &Apache::lonnet::unescape($1);
                 } else {   
                     $description = &Apache::lonnet::unescape($courseIDs{$item});
                 }
 # Get course owner
-                my %settings = &Apache::lonnet::get('environment',['internal.courseowner'],$dom,$crs);
-                if ( defined($settings{'internal.courseowner'}) ) {
-                    $owner = $settings{'internal.courseowner'};
+                if ($owner eq '') {
+                    my %settings = &Apache::lonnet::get('environment',['internal.courseowner'],$dom,$crs);
+                    if ( defined($settings{'internal.courseowner'}) ) {
+                        $owner = $settings{'internal.courseowner'};
+                    }
+                }
+                unless ($owner eq '') {
                     $ownername = &Apache::loncommon::plainname($owner,$dom);
                 }
                 $r->print("<option value=\"$crs\">$showcode -- $description ---------- $ownername");
@@ -139,6 +142,7 @@ sub print_course_modification_page {
     } else {
         $ok_course = &check_course($dom,$course);
     }
+    print STDERR "Response was $ok_course for $dom,$course\n";
 
     unless ($ok_course eq 'ok') {
         &print_header($r,$tasklongref,'',\$javascript_validations);
@@ -333,13 +337,13 @@ all settings except course code, course
             my $colflag = $i%2;
             $ownertable .= "<tr bgcolor=\"$bgcolors[$colflag]\" align=\"left\">";
             if ($local_ccs[$i] eq $enrollvar{'courseowner'}) {
-                  $ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$i\" checked=\"true\"/></td>";
+                  $ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$local_ccs[$i]\" checked=\"true\"/></td>";
             } else {
-                $ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$i\" /></td>";
+                $ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$local_ccs[$i]\" /></td>";
             }
             $ownertable .= "
                  <td>$pname{$local_ccs[$i]}</td>
-                 <td><input type=\"hidden\" name=\"username_$i\" value=\"$local_ccs[$i]\" />$local_ccs[$i]</td>
+                 <td>$local_ccs[$i]</td>
                  <td>$cc_status{$local_ccs[$i]} $lt{'ccor'}</td></tr>";
         }
         $ownertable .= "</table>
@@ -505,12 +509,9 @@ sub modify_course {
     }
 
     if ( exists($ENV{'form.courseowner'}) ) {
-         my $ownerparam = 'username_'.$ENV{'form.courseowner'};
-         if ( exists($ENV{"form.$ownerparam"}) ) {  
-            $newattr{'courseowner'}=$ENV{"form.$ownerparam"};
-            unless ( $newattr{'courseowner'} eq $currattr{'courseowner'} ) {
-                $changeowner = 1;
-            }
+        $newattr{'courseowner'}=$ENV{'form.courseowner'};
+        unless ( $newattr{'courseowner'} eq $currattr{'courseowner'} ) {
+            $changeowner = 1;
         } 
     }
 													      
@@ -518,10 +519,12 @@ sub modify_course {
         $newattr{'coursecode'}=$ENV{'form.coursecode'};
         unless ( $newattr{'coursecode'} eq $currattr{'coursecode'} ) {
             $changecode = 1;
-            my $courseid_entry = &Apache::lonnet::escape($dom.'_'.$crs).'='.&Apache::lonnet::escape($description).'='.&Apache::lonnet::escape($ENV{'form.coursecode'});
-            &Apache::lonnet::courseidput($dom,$courseid_entry,&Apache::lonnet::homeserver($crs,$dom));
         }
     }
+    if ($changeowner == 1 || $changecode == 1) {
+        my $courseid_entry = &Apache::lonnet::escape($dom.'_'.$crs).'='.&Apache::lonnet::escape($description).':'.&Apache::lonnet::escape($ENV{'form.coursecode'}).':'.&Apache::lonnet::escape($ENV{'form.courseowner'});
+        &Apache::lonnet::courseidput($dom,$courseid_entry,&Apache::lonnet::homeserver($crs,$dom));
+    }
 
     foreach (@params) {
         if ($currattr{$_} eq $newattr{$_}) {
@@ -658,9 +661,11 @@ sub print_header {
             $page .=  " -&gt; <b>".$$tasklongref{$action}."</b>";
         }
     }
+    my $html=&Apache::lonxml::xmlbegin();
     $r->print("
-<html>
-<head>");
+$html
+<head>
+");
     if ($action eq 'display') {
         $r->print("
 <script language=\"JavaScript\" type=\"text/javascript\">
@@ -697,7 +702,7 @@ ENDBASE
 
 sub check_course {
     my ($dom,$course) = @_;
-    my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1);
+    my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1,'.','.');
     foreach my $key (sort keys %courseIDs) {
         if ($key =~ m/^($dom)_(\w+)$/) {
             if ($2 eq $course) {