--- 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)/) { ©db($origcrsid,$newcrsid,$_); + my $histfile=$_; + $histfile=~s/\.db$/\.hist/; + ©file($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;