--- loncom/interface/loncreatecourse.pm 2004/07/02 00:27:44 1.63 +++ loncom/interface/loncreatecourse.pm 2004/10/15 22:48:48 1.69 @@ -1,7 +1,7 @@ -#meserver The LearningOnline Network +# The LearningOnline Network # Create a course # -# $Id: loncreatecourse.pm,v 1.63 2004/07/02 00:27:44 www Exp $ +# $Id: loncreatecourse.pm,v 1.69 2004/10/15 22:48:48 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -123,7 +123,9 @@ sub copyfile { &readfile($origcrsid,$which), ( '/uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/' - => '/uploaded/'. $newcrsdata{'domain'}.'/'. $newcrsdata{'num'}.'/' + => '/uploaded/'. $newcrsdata{'domain'}.'/'. $newcrsdata{'num'}.'/', + '/public/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/' + => '/public/'. $newcrsdata{'domain'}.'/'. $newcrsdata{'num'}.'/' ))); } } @@ -202,7 +204,9 @@ sub copyresourcedb { sub copyuserfiles { my ($origcrsid,$newcrsid)=@_; foreach (&crsdirlist($origcrsid,'userfiles')) { - ©file($origcrsid,$newcrsid,$_); + if ($_ !~m|^scantron_|) { + ©file($origcrsid,$newcrsid,$_); + } } } # ========================================================== Copy all userfiles @@ -278,7 +282,7 @@ sub print_course_creation_page { 'snid' => "Section Numbers and corresponding LON-CAPA section/group IDs", 'csli' => "a comma separated list of institutional section numbers, each separated by a colon from the (optional) corresponding section/group ID to be used in LON-CAPA e.g., 001:1,002:2", 'crcs' => "Crosslisted courses", - 'cscs' => "a comma separated list of course sections crosslisted with the current course, with each entry including the institutional course section name followed by a colon and then the (optional) groupID to be used in LON-CAPA, e.g., fs03ent231001:ent1,fs03bot231001:bot1,fs03zol231002:bot2", + 'cscs' => "a comma separated list of course sections crosslisted with the current course, with each entry including the institutional course section name followed by a colon and then the (optional) groupID to be used in LON-CAPA, e.g., fs03ent231001:ent1,fs03bot231001:bot1,fs03zol231002:zol2", 'crco' => "Course Content", 'cncr' => "Completely new course", 'cecr' => "Clone an existing course", @@ -356,28 +360,41 @@ $helplink

$lt{'cinf'}

-$lt{'ctit'}: - -

-$lt{'chsr'}:$course_home +

-$lt{'cidn'} ($lt{'opt'}) - + +

+

$lt{'iinf'}

$lt{'stat'}

-$lt{'ccod'} -
+ +
($lt{'toin'})

-$lt{'snid'} -
+ +
($lt{'csli'})

-$lt{'crcs'} -
+ +
($lt{'cscs'})

$lt{'crco'}

@@ -385,61 +402,92 @@ $lt{'stat'} $lt{'cncr'}$lt{'cecr'}

-$lt{'map'}: - + $lt{'smap'}

-$lt{'sacr'}
+ +
($lt{'ocik'}): - -

-

+ +

$lt{'fres'}
($lt{'stco'}): -$lt{'blnk'} +   -$lt{'sllb'} +   -$lt{'navi'} +

-$lt{'cid'}: + +
+
-$lt{'dmn'}: -$cloneform
 

$lt{'asov'}.

$lt{'assp'}

-$lt{'oaas'}: - +

$lt{'mssg'}

-$lt{'scpf'}: - +
-$lt{'scfc'}: - +

$lt{'cmmn'}

-$lt{'dsrd'}: -
-$lt{'dsuc'}: - + +
+

$lt{'acco'}

-$lt{'snak'}: -
-$lt{'kaut'}: - + +
+

$lt{'rshm'}

-$lt{'rshm'}: - +

$lt{'aens'}

@@ -447,10 +495,13 @@ $lt{'aesc'}

$lt{'aadd'} -$lt{'yes'} $lt{'no'} + +

$lt{'audr'} -$lt{'yes'} $lt{'no'} + +

$lt{'dacu'} $enroll_table @@ -469,24 +520,40 @@ $locform

$lt{'nech'}
$lt{'nccl'}
-$lt{'yes'} $lt{'no'} -

-$lt{'irsp'} $lt{'yes'} $lt{'no'} + + +

+$lt{'irsp'} + +


$lt{'cc'}

-$lt{'user'}: -

-$lt{'dmn'}: $domform -

-$lt{'ierc'}: - + +

+ +

+

- +

@@ -581,6 +648,10 @@ ENDENHEAD $cenv{'url'}=$oldcenv{'url'}; # Restore title $cenv{'description'}=$oldcenv{'description'}; +# restore grading mode + if (defined($oldcenv{'grading'})) { + $cenv{'grading'}=$oldcenv{'grading'}; + } # Mark as cloned $cenv{'clonedfrom'}=$cloneid; delete($cenv{'default_enrollment_start_date'}); @@ -590,44 +661,63 @@ ENDENHEAD # # Set environment (will override cloned, if existing) # - my @affiliates = (); # Used to accumulate sections and crosslistings + my @sections = (); + my @xlists = (); if ($ENV{'form.crsid'}) { $cenv{'courseid'}=$ENV{'form.crsid'}; } if ($ENV{'form.crscode'}) { $cenv{'internal.coursecode'}=$ENV{'form.crscode'}; } + if ($ccuname) { + $cenv{'internal.courseowner'} = $ccuname; + } else { + $cenv{'internal.courseowner'} = $ENV{'user.name'}; + } + + my @badclasses = (); # Used to accumulate sections/crosslistings that did not pass classlist access check for course owner. if ($ENV{'form.crssections'}) { - $cenv{'internal.sectionnums'}=$ENV{'form.crssections'}; - my @sections = (); - if ($cenv{'internal.sectionnums'} =~ m/,/) { - @sections = split/,/,$cenv{'internal.sectionnums'}; + $cenv{'internal.sectionnums'} = ''; + if ($ENV{'form.crssections'} =~ m/,/) { + @sections = split/,/,$ENV{'form.crssections'}; } else { - $sections[0] = $cenv{'internal.sectionnums'}; + $sections[0] = $ENV{'form.crssections'}; } if (@sections > 0) { - foreach (@sections) { - my ($sec,$gp) = split/:/,$_; - push @affiliates,$ENV{'form.crscode'}.$sec; + foreach my $item (@sections) { + my ($sec,$gp) = split/:/,$item; + my $class = $ENV{'form.crscode'}.$sec; + my $addcheck = &Apache::lonnet::auto_new_course($crsunum,$crsudom,$class,$cenv{'internal.courseowner'}); + if ($addcheck eq 'ok') { + $cenv{'internal.sectionnums'} .= $item.','; + } else { + push @badclasses, $class; + } } + $cenv{'internal.sectionnums'} =~ s/,$//; } } # do not hide course coordinator from staff listing, # even if privileged $cenv{'nothideprivileged'}=$ccuname.':'.$ccdomain; if ($ENV{'form.crsxlist'}) { - $cenv{'internal.crosslistings'}=$ENV{'form.crsxlist'}; - my @xlists = (); - if ($cenv{'internal.crosslistings'} =~ m/,/) { - @xlists = split/,/,$cenv{'internal.crosslistings'}; + $cenv{'internal.crosslistings'}=''; + if ($ENV{'form.crsxlist'} =~ m/,/) { + @xlists = split/,/,$ENV{'form.crsxlist'}; } else { - $xlists[0] = $cenv{'internal.crosslistings'}; + $xlists[0] = $ENV{'form.crsxlist'}; } if (@xlists > 0) { - foreach (@xlists) { - my ($xl,$gp) = split/:/,$_; - push @affiliates,$xl; + foreach my $item (@xlists) { + my ($xl,$gp) = split/:/,$item; + my $addcheck = &Apache::lonnet::auto_new_course($crsunum,$crsudom,$xl,$cenv{'internal.courseowner'}); + if ($addcheck eq 'ok') { + $cenv{'internal.crosslistings'} .= $item.','; + } else { + push @badclasses, $xl; + } } + $cenv{'internal.crosslistings'} =~ s/,$//; } } if ($ENV{'form.autoadds'}) { @@ -638,30 +728,20 @@ ENDENHEAD } if ($ENV{'form.notify'}) { if ($ccuname) { - $cenv{'internal.notifylist'} = $ccuname; + $cenv{'internal.notifylist'} = $ccuname.'@'.$ccdomain; } } - if ($ccuname) { - $cenv{'internal.courseowner'} = $ccuname; - } else { - $cenv{'internal.courseowner'} = $ENV{'user.name'}; - } - if (@affiliates > 0) { - my @badclasses = (); - foreach my $class (@affiliates) { - my $addcheck = &Apache::lonnet::auto_new_course($crsunum,$crsudom,$class,$cenv{'internal.courseowner'}); - unless ($addcheck eq 'ok') { - push @badclasses, $class; - } - } - if (@badclasses > 0) { - $r->print(''. - "The courses listed below were included as sections or crosslistings affiliated with your new LON-CAPA course. If automated course roster updates are enabled for this class, these particular sections/crosslistings will not contribute towards enrollment, because the user identified as the course owner for this LON-CAPA course ($cenv{'internal.courseowner'}) - does not have rights to access enrollment in these classes (as determined by your instititution's policies on access to official classlists).


\n"); + if (@badclasses > 0) { + my %lt=&Apache::lonlocal::texthash( + 'tclb' => 'The courses listed below have not been included as sections or crosslistings affiliated with your new LON-CAPA course. If automated course roster updates are enabled for this class, these particular sections/crosslistings will not contribute towards enrollment, because the user identified as the course owner for this LON-CAPA course', + 'dnhr' => 'does not have rights to access enrollment in these classes', + 'adby' => 'as determined by the policies of your institution on access to official classlists' + ); + $r->print(''.$lt{'tclb'}.' ('.$cenv{'internal.courseowner'}.') - '.$lt{'dnhr'}.' ('.$lt{'adby'}.').


\n"); } my $enrollstart = &Apache::lonhtmlcommon::get_date_from_form('startenroll'); my $enrollend = &Apache::lonhtmlcommon::get_date_from_form('endenroll'); @@ -747,7 +827,7 @@ ENDENHEAD $cenv{'internal.encpref'}=100+int(9*rand(99)); # # By default, use standard grading - $cenv{'grading'} = 'standard'; + if (!defined($cenv{'grading'})) { $cenv{'grading'} = 'standard'; } $r->print('
'.&mt('Setting environment').': '. &Apache::lonnet::put('environment',\%cenv,$crsudom,$crsunum).'
');