[LON-CAPA-cvs] cvs: loncom /interface lonpopulate.pm
raeburn
lon-capa-cvs@mail.lon-capa.org
Mon, 29 Dec 2003 16:34:39 -0000
This is a MIME encoded message
--raeburn1072715679
Content-Type: text/plain
raeburn Mon Dec 29 11:34:39 2003 EDT
Modified files:
/loncom/interface lonpopulate.pm
Log:
Added call to localenroll::new_course() when a new section is added, so that checking of valid sections (and valid course owners) will now occur if localenroll::new_course has been customized appropriately. Modified display of sections where call to localenroll::get_sections() returns a single section, so that (a) a section can be added if one was NOT selected when the course was created, and (b) the LON-CAPA section/group ID can be changed for an existing (single section).
--raeburn1072715679
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20031229113439.txt"
Index: loncom/interface/lonpopulate.pm
diff -u loncom/interface/lonpopulate.pm:1.7 loncom/interface/lonpopulate.pm:1.8
--- loncom/interface/lonpopulate.pm:1.7 Mon Dec 15 02:55:59 2003
+++ loncom/interface/lonpopulate.pm Mon Dec 29 11:34:39 2003
@@ -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 @@
}
}
if (@sections > 0) {
- if (@sections > 1) {
- my $secshow = @sections;
- $r->print("
+ my $secshow = @sections;
+ $r->print("
<form name=\"enter\" method=\"post\"><br/>
<table width=\"100%\" border=\"0\" cellpadding=\"3\" cellspacing=\"3\">
<tr>
@@ -669,27 +668,27 @@
<td><b>LON-CAPA section/group ID</b></td>
<td><b>Enrollment in this course?</b></td>
</tr>
- ");
- for (my $i=0; $i<@sections; $i++) {
- my $colflag = $i%2;
- my $shrflag = 0;
- $r->print("<tr bgcolor=\"$bgcolors[$colflag]\" align=\"left\">
+ ");
+ for (my $i=0; $i<@sections; $i++) {
+ my $colflag = $i%2;
+ my $shrflag = 0;
+ $r->print("<tr bgcolor=\"$bgcolors[$colflag]\" align=\"left\">
<td>$sections[$i]<input type=\"hidden\" name=\"secnum_$i\" value=\"$sections[$i]\" /></td>
<td>
- ");
- if (grep/^$sections[$i]$/,@currsections) {
- $r->print("Enrollment active");
- $shrflag = 1;
- } else {
- $r->print("Enrollment inactive");
- }
- if ($shrflag) {
- $r->print("</td><td><input type=\"text\" size=\"10\" name=\"loncapasec_$i\" value=\"$sec_id{$sections[$i]}\"></td><td><input type=\"checkbox\" name=\"sec_$i\" checked=\"true\" /></td></tr>");
- } else {
- $r->print("</td><td><input type=\"text\" size=\"10\" name=\"loncapasec_$i\" value=\"\"><td><input type=\"checkbox\" name=\"sec_$i\" /></td></tr>");
- }
+ ");
+ if (grep/^$sections[$i]$/,@currsections) {
+ $r->print("Enrollment active");
+ $shrflag = 1;
+ } else {
+ $r->print("Enrollment inactive");
}
- $r->print("
+ if ($shrflag) {
+ $r->print("</td><td><input type=\"text\" size=\"10\" name=\"loncapasec_$i\" value=\"$sec_id{$sections[$i]}\"></td><td><input type=\"checkbox\" name=\"sec_$i\" checked=\"true\" /></td></tr>");
+ } else {
+ $r->print("</td><td><input type=\"text\" size=\"10\" name=\"loncapasec_$i\" value=\"\"><td><input type=\"checkbox\" name=\"sec_$i\" /></td></tr>");
+ }
+ }
+ $r->print("
</table>
<br/>
<table width=\"100%\" border=\"0\" cellspacing=\"3\" cellpadding=\"3\">
@@ -703,23 +702,7 @@
<input type=\"hidden\" name=\"action\" value=\"$action\">
<input type=\"hidden\" name=\"state\" value=\"process\">
</form>
- ");
- } else {
- $r->print("<br/>
- <table width=\"100%\" border=\"0\" cellpadding=\"3\" cellspacing=\"3\">
- <tr>
- <td align=\"left\">
- <b>$$tasktitleref{$action}</b><br/>
- </td>
- </tr>
- </table>
- <table border=\"0\" cellspacing=\"2\" cellpadding=\"2\">
- <tr>
- <td>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.</td>
- </tr>
- </table>
- ");
- }
+ ");
} else {
$r->print("
<form name=\"enter\" method=\"post\"><br/>
@@ -1315,15 +1298,18 @@
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 @@
}
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 @@
}
}
+ 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.<br/><ul>\n";
+ foreach (@badsections) {
+ my ($secnum,$gp,$prob) = split/:/,$_;
+ $response .= "<li>$secnum - ID: $gp - Error: $prob</li>\n";
+ }
+ $response .= "</ul><br/><br/>\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.<br/><ul>\n";
+ foreach (@badowner) {
+ my ($secnum,$gp) = split/:/,$_;
+ $response .= "<li>$secnum - ID: $gp</li>\n";
+ }
+ $response .= "</ul><br/><br/>\n";
+ }
+
if ( exists($ENV{'form.numsec'}) ) {
my $numsec = $ENV{'form.numsec'};
if ($numsec > 0) {
@@ -1454,15 +1472,18 @@
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 @@
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 @@
$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.<br/>";
- } 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.<br/><ul>\n";
+ $putreply = &Apache::lonnet::put('environment',\%cenv,$dom,$crs);
+ if ($putreply !~ /^ok$/) {
+ $response = "There was a problem processing your requested changes. The automated enrollment settings for this course have been left unchanged.<br/><br/>";
}
}
-
- foreach (@allsections) {
- my ($sec,$gp) = split/:/,$_;
- $response .= "<li>$sec - ID: $gp</li>\n";
+
+ if ($putreply =~ /^ok/) {
+ $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.<br/><ul>\n";
+ foreach (@allsections) {
+ my ($sec,$gp) = split/:/,$_;
+ $response .= "<li>$sec - ID: $gp</li>\n";
+ }
+ $response .= "</ul><br/><br/>\n";
}
- $response .= "</ul><br/>\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.<br/><ul>\n";
+ foreach (@badsections) {
+ my ($secnum,$gp,$prob) = split/:/,$_;
+ $response .= "<li>$secnum - ID: $gp - Error: $prob</li>\n";
+ }
+ $response .= "</ul><br/><br/>\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.<br/><ul>\n";
+ foreach (@badowner) {
+ my ($secnum,$gp) = split/:/,$_;
+ $response .= "<li>$secnum - ID: $gp</li>\n";
+ }
+ $response .= "</ul><br/><br/>\n";
+ }
+
&print_reply($r,$response,$$tasktitleref{$action});
return;
}
@@ -1518,7 +1571,7 @@
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);
--raeburn1072715679--