--- loncom/interface/loncreatecourse.pm 2004/02/24 23:22:27 1.51
+++ loncom/interface/loncreatecourse.pm 2008/10/08 11:03:53 1.110
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Create a course
#
-# $Id: loncreatecourse.pm,v 1.51 2004/02/24 23:22:27 albertel Exp $
+# $Id: loncreatecourse.pm,v 1.110 2008/10/08 11:03:53 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -33,190 +33,23 @@ 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
-
-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) {
- 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::lonuserutils;
+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 = '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{'chsr'}:$course_home
-
-$lt{'cidn'} ($lt{'opt'})
-
-
-
$lt{'iinf'}
+
+
+
+
+
+ENDDOCUMENT
+
+ } elsif ($crstype eq 'Group') {
+ $r->print(<
+$lt{'ginf'}
-$lt{'stat'}
-
-$lt{'ccod'}
-
-($lt{'toin'})
+
-$lt{'snid'}
-
-($lt{'csli'})
-
-$lt{'crcs'}
-
-($lt{'cscs'})
+
+
+
-$lt{'crco'}
+$lt{'grco'}
-$lt{'assp'}
-
-$lt{'oaas'}:
-
+
$lt{'mssg'}
-$lt{'scpf'}:
-
-
-$lt{'scfc'}:
-
+
+
+
$lt{'cmmn'}
-$lt{'dsrd'}:
-
-$lt{'dsuc'}:
-
+
+
+
$lt{'acco'}
-$lt{'snak'}:
-
+
+
+
-$lt{'cc'}
+$lt{'rshm'}
-$lt{'user'}:
-
-$lt{'dmn'}: $domform
-
-$lt{'ierc'}:
-
-
-
$lt{'aens'}
-$lt{'aesc'}
+
-$lt{'aadd'}
-$lt{'yes'} $lt{'no'}
-
-$lt{'audr'}
-$lt{'yes'} $lt{'no'}
-
-$lt{'dacu'}
-$date_table
-
-$lt{'psam'}.
-$lt{'pcda'}.
-
-$krbform
-
-$intform
-
-$locform
-
-$lt{'nech'}
-$lt{'nccl'}
-$lt{'yes'} $lt{'no'}
-
-$lt{'irsp'} $lt{'yes'} $lt{'no'}
-
-
-
+
$lt{'grts'}
+$lt{'grtq'}
+Mb
+
+
+$lt{'gc'}
+
+
+
+
+
+
+
+
+
-