--- loncom/interface/loncreatecourse.pm	2005/04/07 06:56:23	1.78
+++ loncom/interface/loncreatecourse.pm	2006/05/11 01:16:44	1.87
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Create a course
 #
-# $Id: loncreatecourse.pm,v 1.78 2005/04/07 06:56:23 albertel Exp $
+# $Id: loncreatecourse.pm,v 1.87 2006/05/11 01:16:44 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -90,7 +90,6 @@ sub writefile {
     my %crsdata=&Apache::lonnet::coursedescription($courseid);
     return &Apache::lonnet::finishuserfileupload(
 					  $crsdata{'num'},$crsdata{'domain'},
-					  $crsdata{'home'},
 					  'output',$which);
 }
 
@@ -160,6 +159,14 @@ sub copyresourcedb {
     my %newdata=();
     undef %newdata;
     my $startdate=$data{$origcrsid.'.0.opendate'};
+    if (!$startdate) {
+	# now global start date for assements try the enrollment start
+	my %start=&Apache::lonnet::get('environment',
+				   ['default_enrollment_start_date'],
+				   $origcrsdata{'domain'},$origcrsdata{'num'});
+
+	$startdate = $start{'default_enrollment_start_date'};
+    }
     my $today=time;
     my $delta=0;
     if ($startdate) {
@@ -194,7 +201,13 @@ sub copyresourcedb {
 	$thiskey=~s/^$origcrsid/$newcrsid/;
 	$newdata{$thiskey}=$data{$_};
 	if ($data{$_.'.type'}=~/^date_(start|end)$/) {
-	    $newdata{$thiskey}=$newdata{$thiskey}+$delta;
+	    if ($delta > 0) {
+		$newdata{$thiskey}=$newdata{$thiskey}+$delta;
+	    } else {
+		# no delta, it's unlikely we want the old dates and times
+		delete($newdata{$thiskey});
+		delete($newdata{$thiskey.'.type'});
+	    }
 	}
     }
     return &Apache::lonnet::put
@@ -215,11 +228,17 @@ sub copyuserfiles {
 
 sub copydbfiles {
     my ($origcrsid,$newcrsid)=@_;
+
+    my ($origcrs_discussion) = ($origcrsid=~m|^/(.*)|);
+    $origcrs_discussion=~s|/|_|g;
     foreach (&crsdirlist($origcrsid)) {
 	if ($_=~/\.db$/) {
 	    unless 
-             ($_=~/^(nohist\_|discussiontimes|classlist|versionupdate|resourcedata)/) {
+             ($_=~/^(nohist\_|discussiontimes|classlist|versionupdate|resourcedata|\Q$origcrs_discussion\E|slots|slot_reservations|(grading|review)queue|CODEs)/) {
 		 &copydb($origcrsid,$newcrsid,$_);
+		 my $histfile=$_;
+		 $histfile=~s/\.db$/\.hist/;
+		 &copyfile($origcrsid,$newcrsid,$histfile);
 	     }
 	}
     }
@@ -250,7 +269,6 @@ sub print_course_creation_page {
     }
     $course_home .= "\n</select>\n";
     my $domform = &Apache::loncommon::select_dom_form($defdom,'ccdomain');
-    my $bodytag=&Apache::loncommon::bodytag('Create a New Course');
     my $helplink=&Apache::loncommon::help_open_topic('Create_Course',&mt('Help on Creating Courses'));
     my $cloneform=&Apache::loncommon::select_dom_form
 	($env{'request.role.domain'},'clonedomain').
@@ -332,11 +350,8 @@ sub print_course_creation_page {
 		    'rshm' => 'Resource Space Home',
                     'opco' => "Open Course"
 				       );
-    my $html=&Apache::lonxml::xmlbegin();
-    $r->print(<<ENDDOCUMENT);
-$html
-<head>
-<script language="JavaScript" type="text/javascript">
+    my $js = <<END;
+<script type="text/javascript">
 var editbrowser = null;
 function openbrowser(formname,elementname) {
     var url = '/res/?';
@@ -357,9 +372,15 @@ function openbrowser(formname,elementnam
 $javascript_validations
 </script>
 $coursebrowserjs
-<title>The LearningOnline Network with CAPA</title>
-</head>
-$bodytag
+END
+
+    my $start_page = 
+        &Apache::loncommon::start_page('Create a New Course',$js);
+    my $end_page = 
+        &Apache::loncommon::end_page();
+
+    $r->print(<<ENDDOCUMENT);
+$start_page
 $helplink
 <form action="/adm/createcourse" method="post" name="ccrs">
 <h2>$lt{'cinf'}</h2>
@@ -563,8 +584,7 @@ $lt{'ndcl'}<br/>
 <input type="button" onClick="verify_message(this.form)" value="$lt{'opco'}" />
 </p>
 </form>
-</body>
-</html>
+$end_page
 ENDDOCUMENT
 }
 
@@ -602,15 +622,8 @@ sub create_course {
     }
 
     my $logmsg;
-    my $html=&Apache::lonxml::xmlbegin();
-    my $bodytag=&Apache::loncommon::bodytag('Create a New Course');
-    $r->print(<<ENDENHEAD);
-$html
-<head>
-<title>The LearningOnline Network with CAPA</title>
-</head>
-$bodytag
-ENDENHEAD
+    my $start_page=&Apache::loncommon::start_page('Create a New Course');
+    $r->print($start_page);
 
     my $args = {
                ccuname => $ccuname,
@@ -664,7 +677,7 @@ ENDENHEAD
             <input type="hidden" name="ccdomain" value="'.$ccdomain.'" />
             <input name="userrole" type="submit" value="'.
 		  &mt('Create User').'" />
-	</form></body></html>');
+	</form>'.&Apache::loncommon::end_page());
 	return;
     }
     # Check the proposed home server for the course
@@ -672,7 +685,7 @@ ENDENHEAD
         ($env{'request.role.domain'});
     if (! exists($host_servers{$env{'form.course_home'}})) {
         $r->print(&mt('Invalid home server for course').': '.
-                  $env{'form.course_home'}.'</body></html>');
+                  $env{'form.course_home'}.&Apache::loncommon::end_page());
         return;
     }
     my ($courseid,$crsudom,$crsunum);
@@ -692,7 +705,10 @@ ENDENHEAD
     }
 # Flush the course logs so reverse user roles immediately updated
     &Apache::lonnet::flushcourselogs();
-    $r->print('<p>'.&mt('Roles will be active at next login').'.</p></body></html>');
+    $r->print('<p>'.&mt('Roles will be active at next login').'.</p>'.
+	      '<p><a href="/adm/createcourse">'.
+	      &mt('Create Another Course').'</a></p>'.
+	      &Apache::loncommon::end_page());
 }
 
 sub construct_course {
@@ -782,7 +798,7 @@ sub construct_course {
             foreach my $item (@sections) {
                 my ($sec,$gp) = split/:/,$item;
                 my $class = $args->{'crscode'}.$sec;
-                my $addcheck = &Apache::lonnet::auto_new_course($crsunum,$crsudom,$class,$cenv{'internal.courseowner'});
+                my $addcheck = &Apache::lonnet::auto_new_course($$crsunum,$$crsudom,$class,$cenv{'internal.courseowner'});
                 $cenv{'internal.sectionnums'} .= $item.',';
                 unless ($addcheck eq 'ok') {
                     push @badclasses, $class;