--- loncom/interface/loncreatecourse.pm	2004/05/08 00:48:30	1.56
+++ loncom/interface/loncreatecourse.pm	2004/07/01 21:54:24	1.62
@@ -1,7 +1,7 @@
-# The LearningOnline Network
+#meserver The LearningOnline Network
 # Create a course
 #
-# $Id: loncreatecourse.pm,v 1.56 2004/05/08 00:48:30 www Exp $
+# $Id: loncreatecourse.pm,v 1.62 2004/07/01 21:54:24 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -42,17 +42,34 @@ use localenroll;
 
 # ================================================ Get course directory listing
 
+my @output=();
+
 sub crsdirlist {
     my ($courseid,$which)=@_;
+    @output=();
+    return &innercrsdirlist($courseid,$which);
+}
+
+sub innercrsdirlist {
+    my ($courseid,$which,$path)=@_;
+    my $dirptr=16384;
     unless ($which) { $which=''; }
+    unless ($path)  { $path=''; }
     my %crsdata=&Apache::lonnet::coursedescription($courseid);
     my @listing=&Apache::lonnet::dirlist
 	($which,$crsdata{'domain'},$crsdata{'num'},
 	 &Apache::loncommon::propath($crsdata{'domain'},$crsdata{'num'}));
-    my @output=();
     foreach (@listing) {
 	unless ($_=~/^\./) {
-	    push (@output,(split(/\&/,$_))[0]);
+	    my @unpackline = split (/\&/,$_);
+	    if ($unpackline[3]&$dirptr) {
+# is a directory, recurse
+		&innercrsdirlist($courseid,$which.'/'.$unpackline[0],
+				            $path.'/'.$unpackline[0]);
+	    } else { 
+# is a file, put into output
+		push (@output,$path.'/'.$unpackline[0]);
+	    }
 	}
     }
     return @output;
@@ -236,7 +253,8 @@ sub print_course_creation_page {
     my $coursebrowserjs=&Apache::loncommon::coursebrowser_javascript();
     my $starttime = time;
     my $endtime = time+(6*30*24*60*60); # 6 months from now, approx
-    my $date_table = &Apache::londropadd::date_setting_table($starttime,$endtime,'createcourse');
+    my $enroll_table = &Apache::londropadd::date_setting_table($starttime,$endtime,'create_enrolldates');
+    my $access_table = &Apache::londropadd::date_setting_table($starttime,$endtime,'create_defaultdates');
     my ($krbdef,$krbdefdom) =
     &Apache::loncommon::get_kerberos_defaults($defdom);
     my $javascript_validations=&Apache::londropadd::javascript_validations('createcourse',$krbdefdom);
@@ -298,6 +316,7 @@ sub print_course_creation_page {
                     'no'   => "No",
                     'audr' => "Automated drops",
                     'dacu' => "Duration of automated classlist updates",
+                    'dacc' => "Default start and end dates for student access",
                     'psam' => "Please select the authentication mechanism",
                     'pcda' => "Please choose the default authentication method to be used by new users added to this LON-CAPA domain by the automated enrollment process",
                     'nech' => "Notification of enrollment changes",
@@ -434,8 +453,11 @@ $lt{'aesc'}
 <input type="radio" name="autodrops" value="1" />$lt{'yes'} <input type="radio" name="autodrops" value="0" checked="true" />$lt{'no'}
 </p><p>
 <b>$lt{'dacu'}</b>
-$date_table
+$enroll_table
 </p><p>
+<b>$lt{'dacc'}</b>
+$access_table
+<p></p>
 <b>$lt{'psam'}.</b><br />
 $lt{'pcda'}.
 </p><p>
@@ -477,6 +499,7 @@ ENDDOCUMENT
 sub create_course {
     my $r=shift;
     my $topurl='/res/'.&Apache::lonnet::declutter($ENV{'form.topmap'});
+    my $this_server = $Apache::lonnet::perlvar{'lonHostID'};
     my $ccuname=$ENV{'form.ccuname'};
     my $ccdomain=$ENV{'form.ccdomain'};
     $ccuname=~s/\W//g;
@@ -523,7 +546,8 @@ ENDENHEAD
     my $courseid=&Apache::lonnet::createcourse($ENV{'request.role.domain'},
                                                $cdescr,$curl,
                                                $ENV{'form.course_home'},
-                                               $ENV{'form.nonstandard'});
+                                               $ENV{'form.nonstandard'},
+                                               $ENV{'form.crscode'});
 
     # Note: The testing routines depend on this being output; see 
     # Utils::Course. This needs to at least be output as a comment
@@ -625,7 +649,7 @@ ENDENHEAD
     if (@affiliates > 0) {
         my @badclasses = ();
         foreach my $class (@affiliates) {
-            my $addcheck =  &localenroll::new_course($class,$cenv{'internal.courseowner'});
+            my $addcheck = &Apache::lonnet::auto_new_course($crsunum,$crsudom,$class,$cenv{'internal.courseowner'});
             unless ($addcheck eq 'ok') {
                 push @badclasses, $class; 
             }
@@ -639,13 +663,17 @@ ENDENHEAD
             $r->print ("</ul><br/><br/></font>\n");
         }
     }
-    my $startdate = &Apache::lonhtmlcommon::get_date_from_form('startdate');
-    my $enddate   = &Apache::lonhtmlcommon::get_date_from_form('enddate');
+    my $enrollstart = &Apache::lonhtmlcommon::get_date_from_form('startenroll');
+    my $enrollend   = &Apache::lonhtmlcommon::get_date_from_form('endenroll');
+    my $startaccess = &Apache::lonhtmlcommon::get_date_from_form('startaccess');
+    my $endaccess = &Apache::lonhtmlcommon::get_date_from_form('endaccess');
     if ($ENV{'form.no_end_date'}) {
-      $enddate = 0;
+      $endaccess = 0;
     }
-    $cenv{'internal.autostart'}=$startdate;
-    $cenv{'internal.autoend'}=$enddate;
+    $cenv{'internal.autostart'}=$enrollstart;
+    $cenv{'internal.autoend'}=$enrollend;
+    $cenv{'default_enrollment_start_date'}=$startaccess;
+    $cenv{'default_enrollment_end_date'}=$endaccess;
     if ($ENV{'form.showphotos'}) {
       $cenv{'internal.showphotos'}=$ENV{'form.showphotos'};
     }