--- loncom/interface/lonmodifycourse.pm	2005/09/16 16:01:18	1.19
+++ loncom/interface/lonmodifycourse.pm	2006/07/11 02:28:22	1.26
@@ -1,3 +1,8 @@
+# The LearningOnline Network with CAPA
+# automated enrollment course setup handler
+#
+# $Id: lonmodifycourse.pm,v 1.26 2006/07/11 02:28:22 raeburn Exp $
+#
 # Copyright Michigan State University Board of Trustees
 #
 # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
@@ -30,6 +35,7 @@ use Apache::lonlocal;
 use Apache::londropadd;
 use LONCAPA::Enrollment;
 use lib '/home/httpd/lib/perl';
+use LONCAPA;
 
 sub print_course_selection_page {
     my ($r,$tasklongref) = @_;
@@ -45,7 +51,7 @@ sub print_course_selection_page {
     );
                                                                                       
 # Determine the courses
-    my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1,'.','.','.');
+    my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1,'.','.','.',undef,undef,'.');
     &print_header($r,$tasklongref);
     $r->print(<<ENDBLOCK);
 <form action="/adm/modifycourse" method="post" name="cmod">
@@ -96,12 +102,15 @@ ENDBLOCK
             if ($item =~ m/^($dom)_(\w+)$/) {
                 $crs = $2;
                 if ($courseIDs{$item} =~ /^([^:]*):([^:]*):([^:]*)/) {
-                    $description = &Apache::lonnet::unescape($1);
-                    $owner = &Apache::lonnet::unescape($3);
+                    $description = &unescape($1);
+                    $owner = &unescape($3);
+                    if (($owner ne '') && ($owner !~ /^([^:]+):([^:]+)$/)) {
+                        $owner = $owner.':'.$dom;
+                    }
                 } elsif ($courseIDs{$item} =~ /^([^:]*):([^:]*)$/) {
-                    $description = &Apache::lonnet::unescape($1);
+                    $description = &unescape($1);
                 } else {   
-                    $description = &Apache::lonnet::unescape($courseIDs{$item});
+                    $description = &unescape($courseIDs{$item});
                 }
 # Get course owner
                 if ($owner eq '') {
@@ -111,7 +120,16 @@ ENDBLOCK
                     }
                 }
                 unless ($owner eq '') {
-                    $ownername = &Apache::loncommon::plainname($owner,$dom);
+                    my ($owneruname,$ownerdom);
+                    if ($owner =~ /^([^:]+):([^:]+)$/) {
+                        $owneruname = $1;
+                        $ownerdom = $2;             
+                    } else {
+                        $owneruname = $owner;
+                        $ownerdom = $dom;
+                    }
+                    $ownername = &Apache::loncommon::plainname($owneruname,
+                                                               $ownerdom);
                 }
                 $r->print("<option value=\"$crs\">$showcode -- $description ---------- $ownername");
             }
@@ -160,7 +178,7 @@ sub print_course_modification_page {
             'noen' => "No end date",
             'ownr' => "Owner",
             'name' => "Name",
-            'unme' => "Username",
+            'unme' => "Username:Domain",
             'stus' => "Status",
             'aecs' => "Automated Enrollment Course Settings",
             'cose' => "Course settings for LON-CAPA courses that control automated student enrollment based on classlist data available from your institution's student information system fall into two groups: (a) settings that can be modified by a Course Coordinator using the ",
@@ -190,26 +208,42 @@ all settings except course code, course
     $enrollvar{'autharg'} = '';
     $enrollvar{'authtype'} = '';
     foreach my $item (keys %settings) {
-        if ($item =~ m/^internal\.(.+)$/) {
-            if ( ($1 eq "autoadds") || ($1 eq "autodrops") ) {
+	if ($item =~ m/^internal\.(.+)$/) {
+	    my $type = $1;
+
+            if ( ($type eq "autoadds") || ($type eq "autodrops") ) {
 	        if ($settings{$item} == 1) {
-	            $enrollvar{$1} = "ON";
+	            $enrollvar{$type} = "ON";
 	        } else {
-	            $enrollvar{$1} = "OFF";
+	            $enrollvar{$type} = "OFF";
 	        }
-            } elsif ( ($1 eq "autostart") || ($1 eq "autoend") ) {
-	        if ( ($1 eq "autoend") && ($settings{$item} == 0) ) {
-	            $enrollvar{$1} = $lt{'noen'};
+            } elsif ( ($type eq "autostart") || ($type eq "autoend") ) {
+	        if ( ($type eq "autoend") && ($settings{$item} == 0) ) {
+	            $enrollvar{$type} = $lt{'noen'};
 	        } else {
-	            $enrollvar{$1} = localtime($settings{$item});
+	            $enrollvar{$type} = localtime($settings{$item});
 	        }
-            } elsif ($1 eq "courseowner" || $1 eq "authtype" || $1 eq "autharg" || $1 eq "sectionnums" || $1 eq "coursecode" || $1 eq "crosslistings") {
-	        $enrollvar{$1} = $settings{$item};
+	    } elsif ($type eq "sectionums") {
+		$enrollvar{$type} = $settings{$item};
+		$enrollvar{$type} =~ s/,/, /g;
+            } elsif ($type eq "authtype" 
+		     || $type eq "autharg"    || $type eq "coursecode"
+		     || $type eq "crosslistings") {
+	        $enrollvar{$type} = $settings{$item};
+            } elsif ($type eq 'courseowner') {
+                if ($settings{$item} =~ /^[^:]+:[^:]+$/) {
+                    $enrollvar{$type} = $settings{$item};
+                } else {
+                    if ($settings{$item} ne '') {
+                        $enrollvar{$type} = $settings{$item}.':'.$dom;
+                    }
+                }
             }
         } elsif ($item =~ m/^default_enrollment_(start|end)_date$/) {
-            if ( ($1 eq 'end') && ($settings{$item} == 0) ) {
+	    my $type = $1;
+            if ( ($type eq 'end') && ($settings{$item} == 0) ) {
                 $enrollvar{$item} = $lt{'noen'};
-            } elsif ( ($1 eq 'start') && ($settings{$item} eq '') ) {
+            } elsif ( ($type eq 'start') && ($settings{$item} eq '') ) {
                 $enrollvar{$item} = 'When enrolled';
             } else {
                 $enrollvar{$item} = localtime($settings{$item});
@@ -222,23 +256,31 @@ all settings except course code, course
     my %cc_status = ();
     my %pname = ();
     my $active_cc;
-    foreach (@coursepersonnel) {
-        my @roleinfo = split/:/,$_;
-        if ( ($roleinfo[0] eq 'cc')  && ($roleinfo[2] eq $dom) )  {
-            unless (grep/^$roleinfo[1]$/,@local_ccs) {
-                $active_cc = &Apache::loncommon::check_user_status($roleinfo[2],$roleinfo[1],$dom,$course,'cc');
+    foreach my $person (@coursepersonnel) {
+        my ($role,$user) = split(/:/,$person,2);
+        $user =~ s/:$//;
+        if (($role eq 'cc') && ($user ne ''))  {
+            if (!grep(/^\Q$user\E$/,@local_ccs)) {
+                my ($ccname,$ccdom) = split(/:/,$user);
+                $active_cc = 
+                   &Apache::loncommon::check_user_status($ccdom,$ccname,$dom,
+                                                         $course,'cc');
                 if ($active_cc eq 'active') {
-                    push @local_ccs, $roleinfo[1];
-                    $pname{$roleinfo[1]} = &Apache::loncommon::plainname($roleinfo[1],$roleinfo[2]);
-                    $cc_status{$roleinfo[1]} = $lt{'actv'};
+                    push(@local_ccs,$user);
+                    $pname{$user} = &Apache::loncommon::plainname($ccname,$ccdom);
+                    $cc_status{$user} = $lt{'actv'};
                 }
             }
         }
     }
-    unless ( (grep/^$enrollvar{'courseowner'}$/,@local_ccs) || ($enrollvar{'courseowner'} eq '') )  {
-        push @local_ccs, $enrollvar{'courseowner'};
-        $pname{$enrollvar{'courseowner'}} =  &Apache::loncommon::plainname($enrollvar{'courseowner'},$dom);
-        $active_cc = &Apache::loncommon::check_user_status($dom,$enrollvar{'coursecode'},$dom,$course,'cc');
+    if ( (!grep(/^$enrollvar{'courseowner'}$/,@local_ccs)) && 
+             ($enrollvar{'courseowner'} ne '') )  {
+        my ($owneruname,$ownerdom) = split(/:/,$enrollvar{'courseowner'});
+        push(@local_ccs,$enrollvar{'courseowner'});
+        $pname{$enrollvar{'courseowner'}} = 
+                         &Apache::loncommon::plainname($owneruname,$ownerdom);
+        $active_cc = &Apache::loncommon::check_user_status($ownerdom,$owneruname,
+                                                           $dom,$course,'cc');
         if ($active_cc eq 'active') {
             $cc_status{$enrollvar{'courseowner'}} = $lt{'actv'};
         } else {
@@ -246,7 +288,7 @@ all settings except course code, course
         }
     }
     my $numlocalcc = @local_ccs;
-    my $bodytag=&Apache::loncommon::bodytag(&mt("Modify Course Settings"));
+
     my $helplink=&Apache::loncommon::help_open_topic('Modify_Course',&mt("Help on Modifying Courses"));
     my ($krbdef,$krbdefdom)=&Apache::loncommon::get_kerberos_defaults($dom);
     my $curr_authtype = '';
@@ -336,7 +378,7 @@ 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=\"$local_ccs[$i]\" checked=\"true\"/></td>";
+                  $ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$local_ccs[$i]\" checked=\"checked\" /></td>";
             } else {
                 $ownertable .= "<td><input type=\"radio\" name=\"courseowner\" value=\"$local_ccs[$i]\" /></td>";
             }
@@ -521,7 +563,7 @@ sub modify_course {
         }
     }
     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'});
+        my $courseid_entry = &escape($dom.'_'.$crs).'='.&escape($description).':'.&escape($env{'form.coursecode'}).':'.&escape($env{'form.courseowner'});
         &Apache::lonnet::courseidput($dom,$courseid_entry,&Apache::lonnet::homeserver($crs,$dom));
     }
 
@@ -635,7 +677,6 @@ sub modify_course {
 sub print_header {
     my ($r,$tasklongref,$description,$javascriptref) = @_;
     my %lt =&Apache::lonlocal::texthash(
-             'vmcs' => 'View/Modify Course Settings',
              'chco' => 'Choose a course',
              'main' => 'Main Menu',
              'comg' => 'Course Manager',
@@ -648,7 +689,7 @@ sub print_header {
         $description = $lt{'comg'};
     }
     my $page = '';
-    my $bodytag=&Apache::loncommon::bodytag($lt{'vmcs'});
+
     if ($action eq 'start') {  
         $page = "<b>$lt{'chco'}</b>";
     } else {
@@ -660,21 +701,16 @@ sub print_header {
             $page .=  " -&gt; <b>".$$tasklongref{$action}."</b>";
         }
     }
-    my $html=&Apache::lonxml::xmlbegin();
-    $r->print("
-$html
-<head>
-");
+
+    my $js;
     if ($action eq 'display') {
-        $r->print("
-<script language=\"JavaScript\" type=\"text/javascript\">
-$$javascriptref
-</script>");
+	$js = '<script  type="text/javascript">
+                  '.$$javascriptref.'
+               </script>';
     }
+    $r->print(&Apache::loncommon::start_page('View/Modify Course Settings',
+					     $js));
     $r->print(<<ENDTHIS);
-<title>The LearningOnline Network with CAPA</title>
-</head>
-$bodytag
 <table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
   <td bgcolor="#CCCC99">
@@ -690,18 +726,14 @@ ENDTHIS
 }
 
 sub print_footer {
-    my $r = shift;
-    $r->print(<<ENDBASE);
-<br/>
-</body>
-</html>
-ENDBASE
+    my ($r) = @_;
+    $r->print('<br />'.&Apache::loncommon::end_page());
     return;
 }
 
 sub check_course {
     my ($dom,$course) = @_;
-    my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1,'.','.','.');
+    my %courseIDs = &Apache::lonnet::courseiddump($dom,'.',1,'.','.','.',undef,undef,'.');
     foreach my $key (sort keys %courseIDs) {
         if ($key =~ m/^($dom)_(\w+)$/) {
             if ($2 eq $course) {
@@ -737,7 +769,7 @@ sub handler {
                        'default_enrollment_start_date' => 'Date of first student access',
                        'default_enrollment_end_date' => 'Date of last student access',
                        'coursecode' => 'Official course code',
-                       'courseowner' => "Username of course owner (\@$dom)",
+                       'courseowner' => "Username:domain of course owner",
                        'notifylist' => 'Course Coordinators to be notified of enrollment changes',
                        'sectionnums' => 'Course section number(:groupID)',
                        'crosslistings' => 'Crosslisted class(:groupID)',