--- loncom/interface/loncreatecourse.pm 2004/11/23 06:58:34 1.70 +++ loncom/interface/loncreatecourse.pm 2006/01/16 23:11:50 1.85 @@ -1,7 +1,7 @@ # The LearningOnline Network # Create a course # -# $Id: loncreatecourse.pm,v 1.70 2004/11/23 06:58:34 raeburn Exp $ +# $Id: loncreatecourse.pm,v 1.85 2006/01/16 23:11:50 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -86,11 +86,10 @@ sub readfile { # ============================================================ Write a userfile sub writefile { - (my $courseid, my $which,$ENV{'form.output'})=@_; + (my $courseid, my $which,$env{'form.output'})=@_; my %crsdata=&Apache::lonnet::coursedescription($courseid); return &Apache::lonnet::finishuserfileupload( $crsdata{'num'},$crsdata{'domain'}, - $crsdata{'home'}, 'output',$which); } @@ -138,6 +137,9 @@ sub copydb { my %newcrsdata= &Apache::lonnet::coursedescription($newcrsid); my %data=&Apache::lonnet::dump ($which,$origcrsdata{'domain'},$origcrsdata{'num'}); + foreach my $key (keys(%data)) { + if ($key=~/^internal./) { delete($data{$key}); } + } return &Apache::lonnet::put ($which,\%data,$newcrsdata{'domain'},$newcrsdata{'num'}); } @@ -157,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) { @@ -190,8 +200,14 @@ sub copyresourcedb { my $thiskey=$_; $thiskey=~s/^$origcrsid/$newcrsid/; $newdata{$thiskey}=$data{$_}; - if ($data{$_.'.type'}=~/^date/) { - $newdata{$thiskey}=$newdata{$thiskey}+$delta; + if ($data{$_.'.type'}=~/^date_(start|end)$/) { + 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 @@ -212,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); } } } @@ -235,7 +257,7 @@ sub copycoursefiles { sub print_course_creation_page { my $r=shift; - my $defdom=$ENV{'request.role.domain'}; + my $defdom=$env{'request.role.domain'}; my %host_servers = &Apache::loncommon::get_library_servers($defdom); my $course_home = '
$lt{'irsp'}
@@ -544,11 +576,6 @@ $lt{'nccl'}
-
-
@@ -564,22 +591,84 @@ 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'};
+ my $ccuname=$env{'form.ccuname'};
+ my $ccdomain=$env{'form.ccdomain'};
$ccuname=~s/\W//g;
$ccdomain=~s/\W//g;
- my $cdescr=$ENV{'form.title'};
- my $curl=$ENV{'form.topmap'};
+
+ 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');
+
+ my $autharg;
+ my $authtype;
+
+ if ($env{'form.login'} eq 'krb') {
+ $authtype = 'krb';
+ $authtype .=$env{'form.krbver'};
+ $autharg = $env{'form.krbarg'};
+ } elsif ($env{'form.login'} eq 'int') {
+ $authtype ='internal';
+ if ((defined($env{'form.intarg'})) && ($env{'form.intarg'})) {
+ $autharg = $env{'form.intarg'};
+ }
+ } elsif ($env{'form.login'} eq 'loc') {
+ $authtype = 'localauth';
+ if ((defined($env{'form.locarg'})) && ($env{'form.locarg'})) {
+ $autharg = $env{'form.locarg'};
+ }
+ }
+
+ my $logmsg;
+ my $html=&Apache::lonxml::xmlbegin();
my $bodytag=&Apache::loncommon::bodytag('Create a New Course');
$r->print(<