--- loncom/interface/loncreatecourse.pm 2004/06/08 22:09:44 1.58
+++ loncom/interface/loncreatecourse.pm 2007/06/01 18:07:47 1.101.2.1
@@ -1,7 +1,7 @@
-#meserver The LearningOnline Network
+# The LearningOnline Network
# Create a course
#
-# $Id: loncreatecourse.pm,v 1.58 2004/06/08 22:09:44 raeburn Exp $
+# $Id: loncreatecourse.pm,v 1.101.2.1 2007/06/01 18:07:47 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -33,192 +33,24 @@ use strict;
use Apache::Constants qw(:common :http);
use Apache::lonnet;
use Apache::loncommon;
-use Apache::lonratedt;
use Apache::londocs;
use Apache::lonlocal;
use Apache::londropadd;
-use lib '/home/httpd/lib/perl';
-use localenroll;
-
-# ================================================ Get course directory listing
-
-#FIXME - doesn't support directories under /userfiles/ BUG#2999
-sub crsdirlist {
- my ($courseid,$which)=@_;
- unless ($which) { $which=''; }
- 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) {
- #FIXME if list is a DIR need to recurse
- unless ($_=~/^\./) {
- push (@output,(split(/\&/,$_))[0]);
- }
- }
- return @output;
-}
-
-# ============================================================= Read a userfile
-
-sub readfile {
- my ($courseid,$which)=@_;
- my %crsdata=&Apache::lonnet::coursedescription($courseid);
- return &Apache::lonnet::getfile('/uploaded/'.$crsdata{'domain'}.'/'.
- $crsdata{'num'}.'/'.$which);
-}
-
-# ============================================================ Write a userfile
-
-sub writefile {
- (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);
-}
-
-# ===================================================================== Rewrite
-
-sub rewritefile {
- my ($contents,%rewritehash)=@_;
- foreach (keys %rewritehash) {
- my $pattern=$_;
- $pattern=~s/(\W)/\\$1/gs;
- my $new=$rewritehash{$_};
- $contents=~s/$pattern/$new/gs;
- }
- return $contents;
-}
-
-# ============================================================= Copy a userfile
-
-sub copyfile {
- my ($origcrsid,$newcrsid,$which)=@_;
- unless ($which=~/\.sequence$/) {
- return &writefile($newcrsid,$which,
- &readfile($origcrsid,$which));
- } else {
- my %origcrsdata=&Apache::lonnet::coursedescription($origcrsid);
- my %newcrsdata= &Apache::lonnet::coursedescription($newcrsid);
- return &writefile($newcrsid,$which,
- &rewritefile(
- &readfile($origcrsid,$which),
- (
- '/uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/'
- => '/uploaded/'. $newcrsdata{'domain'}.'/'. $newcrsdata{'num'}.'/'
- )));
- }
-}
-
-# =============================================================== Copy a dbfile
-
-sub copydb {
- my ($origcrsid,$newcrsid,$which)=@_;
- $which=~s/\.db$//;
- my %origcrsdata=&Apache::lonnet::coursedescription($origcrsid);
- my %newcrsdata= &Apache::lonnet::coursedescription($newcrsid);
- my %data=&Apache::lonnet::dump
- ($which,$origcrsdata{'domain'},$origcrsdata{'num'});
- return &Apache::lonnet::put
- ($which,\%data,$newcrsdata{'domain'},$newcrsdata{'num'});
-}
-
-# ========================================================== Copy resourcesdata
-
-sub copyresourcedb {
- my ($origcrsid,$newcrsid)=@_;
- my %origcrsdata=&Apache::lonnet::coursedescription($origcrsid);
- my %newcrsdata= &Apache::lonnet::coursedescription($newcrsid);
- my %data=&Apache::lonnet::dump
- ('resourcedata',$origcrsdata{'domain'},$origcrsdata{'num'});
- $origcrsid=~s/^\///;
- $origcrsid=~s/\//\_/;
- $newcrsid=~s/^\///;
- $newcrsid=~s/\//\_/;
- my %newdata=();
- undef %newdata;
- my $startdate=$data{$origcrsid.'.0.opendate'};
- my $today=time;
- my $delta=0;
- if ($startdate) {
- my $oneday=60*60*24;
- $delta=$today-$startdate;
- $delta=int($delta/$oneday)*$oneday;
- }
-# ugly retro fix for broken version of types
- foreach (keys %data) {
- if ($_=~/\wtype$/) {
- my $newkey=$_;
- $newkey=~s/type$/\.type/;
- $data{$newkey}=$data{$_};
- delete $data{$_};
- }
- }
-# adjust symbs
- my $pattern='uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/';
- $pattern=~s/(\W)/\\$1/gs;
- my $new= 'uploaded/'. $newcrsdata{'domain'}.'/'. $newcrsdata{'num'}.'/';
- foreach (keys %data) {
- if ($_=~/$pattern/) {
- my $newkey=$_;
- $newkey=~s/$pattern/$new/;
- $data{$newkey}=$data{$_};
- delete $data{$_};
- }
- }
-# adjust dates
- foreach (keys %data) {
- my $thiskey=$_;
- $thiskey=~s/^$origcrsid/$newcrsid/;
- $newdata{$thiskey}=$data{$_};
- if ($data{$_.'.type'}=~/^date/) {
- $newdata{$thiskey}=$newdata{$thiskey}+$delta;
- }
- }
- return &Apache::lonnet::put
- ('resourcedata',\%newdata,$newcrsdata{'domain'},$newcrsdata{'num'});
-}
-
-# ========================================================== Copy all userfiles
-
-sub copyuserfiles {
- my ($origcrsid,$newcrsid)=@_;
- foreach (&crsdirlist($origcrsid,'userfiles')) {
- ©file($origcrsid,$newcrsid,$_);
- }
-}
-# ========================================================== Copy all userfiles
-
-sub copydbfiles {
- my ($origcrsid,$newcrsid)=@_;
- foreach (&crsdirlist($origcrsid)) {
- if ($_=~/\.db$/) {
- unless
- ($_=~/^(nohist\_|discussiontimes|classlist|versionupdate|resourcedata)/) {
- ©db($origcrsid,$newcrsid,$_);
- }
- }
- }
-}
-
-# ======================================================= Copy all course files
-
-sub copycoursefiles {
- my ($origcrsid,$newcrsid)=@_;
- ©userfiles($origcrsid,$newcrsid);
- ©dbfiles($origcrsid,$newcrsid);
- ©resourcedb($origcrsid,$newcrsid);
-}
+use Apache::lonclonecourse;
+use LONCAPA::batchcreatecourse;
+use LONCAPA;
# ===================================================== Phase one: fill-in form
sub print_course_creation_page {
my $r=shift;
- my $defdom=$ENV{'request.role.domain'};
- my %host_servers = &Apache::loncommon::get_library_servers($defdom);
+ my $crstype = 'Course';
+# my $crstype = 'Group';
+# if ($env{'form.phase'} eq 'courseone') {
+# $crstype = 'Course';
+# }
+ my $defdom=$env{'request.role.domain'};
+ my %host_servers = &Apache::lonnet::get_servers($defdom,'library');
my $course_home = '
$lt{'aadd'}
-$lt{'yes'} $lt{'no'}
+
+
$lt{'audr'}
-$lt{'yes'} $lt{'no'}
+
+
$lt{'dacu'}
-$date_table
+$enroll_table
+$lt{'dacc'}
+$access_table
+
$lt{'psam'}.
$lt{'pcda'}.
@@ -449,51 +386,265 @@ $locform
$lt{'nech'}
$lt{'nccl'}
-$lt{'yes'} $lt{'no'}
-
-$lt{'irsp'} $lt{'yes'} $lt{'no'}
+
+
+
+$lt{'ndcl'}
+
+
+
+$lt{'irsp'}
+
+
+
+
+
$lt{'cgrs'}
+$lt{'cgrq'}
+Mb
$lt{'cc'}
-$lt{'user'}:
+
+
+
+
+
+
+
+
+
+
+ENDDOCUMENT
+ } elsif ($crstype eq 'Group') {
+ $r->print(<
+$lt{'ginf'}
+
+
+
+
-$lt{'dmn'}: $domform
+
+
+$lt{'grco'}
+
+
+
+
$lt{'mssg'}
+
+
+
+
+
+$lt{'cmmn'}
+
+
+
+
+
+$lt{'acco'}
+
+
+
+
+
+$lt{'rshm'}
+
+
+
+
+
$lt{'grts'}
+$lt{'grtq'}
+Mb
+
+
+$lt{'gc'}
+
+
-$lt{'ierc'}:
-
+
-
-
+
+
+
-