--- loncom/interface/lonpopulate.pm 2003/12/15 07:55:59 1.7 +++ loncom/interface/lonpopulate.pm 2003/12/29 16:34:39 1.8 @@ -1,5 +1,5 @@ # automated enrollment configuration handler -# $Id: lonpopulate.pm,v 1.7 2003/12/15 07:55:59 raeburn Exp $ +# $Id: lonpopulate.pm,v 1.8 2003/12/29 16:34:39 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -645,9 +645,8 @@ ENDTWO } } if (@sections > 0) { - if (@sections > 1) { - my $secshow = @sections; - $r->print(" + my $secshow = @sections; + $r->print("

@@ -669,27 +668,27 @@ your changes. - "); - for (my $i=0; $i<@sections; $i++) { - my $colflag = $i%2; - my $shrflag = 0; - $r->print(" + "); + for (my $i=0; $i<@sections; $i++) { + my $colflag = $i%2; + my $shrflag = 0; + $r->print(""); - } else { - $r->print(""); - } + "); + if (grep/^$sections[$i]$/,@currsections) { + $r->print("Enrollment active"); + $shrflag = 1; + } else { + $r->print("Enrollment inactive"); } - $r->print(" + if ($shrflag) { + $r->print(""); + } else { + $r->print(""); + } + } + $r->print("
LON-CAPA section/group ID Enrollment in this course?
$sections[$i] - "); - if (grep/^$sections[$i]$/,@currsections) { - $r->print("Enrollment active"); - $shrflag = 1; - } else { - $r->print("Enrollment inactive"); - } - if ($shrflag) { - $r->print("

@@ -703,23 +702,7 @@ your changes. - "); - } else { - $r->print("
-
- - - -
- $$tasktitleref{$action}
-
- - - - -
As your institution's course catalog only includes a single section for this course, there are no additional sections that can be set for inclusion in the LON-CAPA roster for the course.
- "); - } + "); } else { $r->print("

@@ -1315,15 +1298,18 @@ sub print_crosslistings_response () { sub print_sections_menu () { my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; - my %settings = &Apache::lonnet::get('environment',['internal.sectionnums','internal.coursecode'],$dom,$crs); + my %settings = &Apache::lonnet::get('environment',['internal.sectionnums','internal.coursecode','internal.courseowner'],$dom,$crs); my @currsections = (); my @sections = (); + my @badowner = (); + my @badsections = (); my $seccount = 0; my $removecount = 0; my $addcount = 0; my $secstr = ''; my $response = ''; my $coursecode = $settings{'internal.coursecode'}; + my $owner = $settings{'internal.courseowner'}; if ($settings{'internal.sectionnums'} =~ m/,/) { @currsections = split/,/,$settings{'internal.sectionnums'}; } elsif ($settings{'internal.sectionnums'} ne '') { @@ -1331,35 +1317,49 @@ sub print_sections_menu () { } if ( exists($ENV{'form.secshow'}) ) { - for (my $i=0; $i<$ENV{'form.secshow'}; $i++) { - my $gp = "loncapasec_".$i; - my $secnum = "secnum_".$i; - my $sec = "sec_".$i; - if ( exists( $ENV{"form.$sec"} ) ) { - my $secentry; - if ( exists( $ENV{"form.$secnum"} ) ) { - $secentry = $ENV{"form.$secnum"}.':'; - } - if ( exists( $ENV{"form.$gp"} ) ) { - $secentry .= $ENV{"form.$gp"}; - } - push @sections, $secentry; - $seccount ++; - unless (grep/^$ENV{"form.$secnum"}:/,@currsections) { - $addcount ++; - } - } - } - if (@currsections > 0) { - for (my $i=0; $i<@currsections; $i++) { - if ($currsections[$i] =~ m/^(\w+:)/ ) { - my $oldsec = $1; - unless (grep/^$oldsec/,@sections) { - $removecount ++; - } - } - } - } + for (my $i=0; $i<$ENV{'form.secshow'}; $i++) { + my $gp = "loncapasec_".$i; + my $secnum = "secnum_".$i; + my $sec = "sec_".$i; + if ( exists( $ENV{"form.$sec"} ) ) { + my $secentry; + if ( exists( $ENV{"form.$secnum"} ) ) { + $secentry = $ENV{"form.$secnum"}.':'; + } + if ( exists( $ENV{"form.$gp"} ) ) { + $secentry .= $ENV{"form.$gp"}; + } + if ( grep/^$ENV{"form.$secnum"}:/,@currsections) { + push @sections, $secentry; + $seccount ++; + } else { + my $newsec = $coursecode.$ENV{"form.$secnum"}; + my $coursecheck = &localenroll::validate_courseID($newsec); + if ($coursecheck eq 'ok') { + my $addcheck = &localenroll::new_course($newsec,$owner); + if ($addcheck eq 'ok') { + push @sections,$ENV{"form.$secnum"}.":".$ENV{"form.$gp"}; + $seccount ++; + $addcount ++; + } else { + push @badowner,$ENV{"form.$secnum"}.":".$ENV{"form.$gp"}; + } + } else { + push @badsections, $ENV{"form.$secnum"}.":".$ENV{"form.$gp"}.":".$coursecheck; + } + } + } + } + if (@currsections > 0) { + for (my $i=0; $i<@currsections; $i++) { + if ($currsections[$i] =~ m/^(\w+:)/ ) { + my $oldsec = $1; + unless (grep/^$oldsec/,@sections) { + $removecount ++; + } + } + } + } } elsif (@currsections > 0) { for (my $i=0; $i<@currsections; $i++) { my $sec = "sec_".$i; @@ -1407,6 +1407,24 @@ sections which contribute to enrollment } } + if (@badsections > 0) { + $response .= "The sections listed below could not be included in the sections for this LON-CAPA course, because they are not valid section numbers according to your institution's official schedule of classes and sections.


\n"; + } + + if (@badowner > 0) { + $response .= "The sections listed below could not be included in the sections for this LON-CAPA course, because the owner of this course - $owner - does not have rights to view enrollment in those classes as determined by your instititution's policies on access to official classlists.


\n"; + } + if ( exists($ENV{'form.numsec'}) ) { my $numsec = $ENV{'form.numsec'}; if ($numsec > 0) { @@ -1454,15 +1472,18 @@ sections which contribute to enrollment sub print_sections_response () { my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; - my %settings = &Apache::lonnet::get('environment',['internal.sectionnums','internal.coursecode'],$dom,$crs); + my %settings = &Apache::lonnet::get('environment',['internal.sectionnums','internal.coursecode','internal.courseowner'],$dom,$crs); my @currsections = (); my @sections = (); my @allsections = (); + my @badowner = (); + my @badsections = (); my $numsec = 0; my $secstr = $settings{'internal.sectionnums'}; my $coursecode = $settings{'internal.coursecode'}; + my $owner = $settings{'internal.courseowner'}; my $response = ''; - + my $putreply = ''; if ($secstr =~ m/,/) { @allsections = split/,/,$secstr; } else { @@ -1472,18 +1493,31 @@ sub print_sections_response () { if ( exists($ENV{'form.numsec'}) ) { $numsec = $ENV{'form.numsec'}; } - + if ($numsec > 0) { for (my $i=0; $i<$numsec; $i++) { my $sec = "newsec_".$i; my $gp = "newsecgp_".$i; if ( exists($ENV{"form.$sec"}) ) { - push @sections,$ENV{"form.$sec"}.":".$ENV{"form.$gp"}; + unless ( (grep/^$ENV{"form.$sec"}:/,@allsections) || (grep/^$ENV{"form.$sec"}:/,@sections) ) { + my $newsec = $coursecode.$ENV{"form.$sec"}; + my $coursecheck = &localenroll::validate_courseID($newsec); + if ($coursecheck eq 'ok') { + my $addcheck = &localenroll::new_course($newsec,$owner); + if ($addcheck eq 'ok') { + push @sections,$ENV{"form.$sec"}.":".$ENV{"form.$gp"}; + } else { + push @badowner,$ENV{"form.$sec"}.":".$ENV{"form.$gp"}; + } + } else { + push @badsections, $ENV{"form.$sec"}.":".$ENV{"form.$gp"}.":".$coursecheck; + } + } } } push @allsections, @sections; } - + if (@sections > 0 ) { unless ($secstr eq '') { $secstr .= ","; } if (@sections > 1) { @@ -1492,20 +1526,39 @@ sub print_sections_response () { $secstr .= $sections[0]; } my %cenv = ('internal.sectionnums' => $secstr); - my $reply = &Apache::lonnet::put('environment',\%cenv,$dom,$crs); - if ($reply !~ /^ok$/) { - $response = "There was a problem processing your requested changes. The automated enrollment settings for this course have been left unchanged.
"; - } else { - $response = "Students enrolling in the sections listed below will be automatically added to the class roster for LON-CAPA course $realm ($coursecode), if you have chosen to enable a nightly automated enrollment update.

\n"; - + + if (@badsections > 0) { + $response .= "The sections listed below could not be included in the sections for this LON-CAPA course, because they are not valid section numbers according to your institution's official schedule of classes and sections.


\n"; + } + + if (@badowner > 0) { + $response .= "The sections listed below could not be included in the sections for this LON-CAPA course, because the owner of this course - $owner - does not have rights to view enrollment in those classes as determined by your instititution's policies on access to official classlists.


\n"; + } + &print_reply($r,$response,$$tasktitleref{$action}); return; } @@ -1518,7 +1571,7 @@ sub print_photos_response () { if ( exists($ENV{'form.showphotos'}) ) { $showphotos=$ENV{'form.showphotos'}; } - + my $response = ""; my %cenv = ('internal.showphotos' => $showphotos); my $reply = &Apache::lonnet::put('environment',\%cenv,$dom,$crs);