--- loncom/interface/lonpopulate.pm 2004/06/17 18:31:24 1.14 +++ loncom/interface/lonpopulate.pm 2004/06/28 15:41:20 1.15 @@ -1,5 +1,5 @@ # automated enrollment configuration handler -# $Id: lonpopulate.pm,v 1.14 2004/06/17 18:31:24 raeburn Exp $ +# $Id: lonpopulate.pm,v 1.15 2004/06/28 15:41:20 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1046,7 +1046,7 @@ ENDTWO - +
ENDTHREE @@ -1083,8 +1083,8 @@ ENDFOUR ############################################################### sub print_doc_base { - my $r = shift; - $r->print(<print(<
@@ -1096,422 +1096,421 @@ ENDBASE ################################################################### sub print_chgsettings_response { - my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; - my %settings = &Apache::lonnet::get('environment',['internal.sectionnums','internal.crosslistings','internal.autostart','internal.autoend','internal.autoadds','internal.autodrops'],$dom,$crs); - my $currend = ''; - my $currstart = ''; - my $currsecs = ''; - my $currxlists = ''; - my $curradds = ''; - my $currdrops = ''; - if ( defined($settings{'internal.autoadds'}) ) { - $curradds = $settings{'internal.autoadds'}; - } - if ( defined($settings{'internal.autodrops'}) ) { - $currdrops = $settings{'internal.autodrops'}; - } - if ( defined($settings{'internal.autostart'}) ) { - $currstart = $settings{'internal.autostart'}; - } - if ( defined($settings{'internal.autoend'}) ) { - $currend = $settings{'internal.autoend'}; - } - if ( defined($settings{'internal.sectionnums'}) ) { - $currsecs = $settings{'internal.sectionnums'}; - } - if ( defined($settings{'internal.crosslistings'}) ) { - $currxlists = $settings{'internal.crosslistings'} - } - my $autoadds = ''; - my $autodrops = ''; + my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; + my %settings = &Apache::lonnet::get('environment',['internal.sectionnums','internal.crosslistings','internal.autostart','internal.autoend','internal.autoadds','internal.autodrops'],$dom,$crs); + my $currend = ''; + my $currstart = ''; + my $currsecs = ''; + my $currxlists = ''; + my $curradds = ''; + my $currdrops = ''; + if ( defined($settings{'internal.autoadds'}) ) { + $curradds = $settings{'internal.autoadds'}; + } + if ( defined($settings{'internal.autodrops'}) ) { + $currdrops = $settings{'internal.autodrops'}; + } + if ( defined($settings{'internal.autostart'}) ) { + $currstart = $settings{'internal.autostart'}; + } + if ( defined($settings{'internal.autoend'}) ) { + $currend = $settings{'internal.autoend'}; + } + if ( defined($settings{'internal.sectionnums'}) ) { + $currsecs = $settings{'internal.sectionnums'}; + } + if ( defined($settings{'internal.crosslistings'}) ) { + $currxlists = $settings{'internal.crosslistings'} + } + my $autoadds = ''; + my $autodrops = ''; - if ( exists($ENV{'form.autoadds'}) ) { - $autoadds=$ENV{'form.autoadds'}; - } - if ( exists($ENV{'form.autodrops'}) ) { - $autodrops=$ENV{'form.autodrops'}; - } + if ( exists($ENV{'form.autoadds'}) ) { + $autoadds=$ENV{'form.autoadds'}; + } + if ( exists($ENV{'form.autodrops'}) ) { + $autodrops=$ENV{'form.autodrops'}; + } - my $response = ""; - my $warning = ""; - my $warn_prefix = ""; - my $warn_suffix = ""; - my $warnfiller = ""; - my %cenv = ('internal.autoadds' => $autoadds, - 'internal.autodrops' => $autodrops); - 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 { - if ($autoadds) { - if ($curradds) { - $response = "Nightly additions based on classlist changes still enabled
"; - } else { - $response = "Nightly additions based on classlist changes now enabled
"; - } - } else { - if ($curradds) { - $response = "Nightly additions based on classlist changes now disabled
"; - } else { - $response = "Nightly additions based on classlist changes still disabled
"; - } - } - if ($autodrops) { - if ($currdrops) { - $response .= "Nightly removals based on classlist changes still enabled
"; - } else { - $response .= "Nightly removals based on classlist changes now enabled
"; - } - } else { - if ($currdrops) { - $response .= "Nightly removals based on classlist changes now disabled
"; - } else { - $response .= "Nightly removals based on classlist changes still disabled"; - } - } - if ($autoadds || $autodrops) { - $warning = &warning_message($dom,$crs,$action); - $warn_prefix = "
Warning. Although you indicated that nightly "; - $warn_suffix = " should be enabled, additional action is required.
"; - } - if ($autoadds) { - if ($autodrops) { - $warnfiller = "adds and drops"; - } else { - $warnfiller = "adds"; - } - } else { - if ($autodrops) { - $warnfiller = "drops"; - } - } - unless ($warning eq '') { - $response = $warn_prefix.$warnfiller.$warn_suffix.$warning; - } - } - &print_reply($r,$response,$$tasktitleref{$action}); - return; + my $response = ""; + my $warning = ""; + my $warn_prefix = ""; + my $warn_suffix = ""; + my $warnfiller = ""; + my %cenv = ('internal.autoadds' => $autoadds, + 'internal.autodrops' => $autodrops); + 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 { + if ($autoadds) { + if ($curradds) { + $response = "Nightly additions based on classlist changes still enabled
"; + } else { + $response = "Nightly additions based on classlist changes now enabled
"; + } + } else { + if ($curradds) { + $response = "Nightly additions based on classlist changes now disabled
"; + } else { + $response = "Nightly additions based on classlist changes still disabled
"; + } + } + if ($autodrops) { + if ($currdrops) { + $response .= "Nightly removals based on classlist changes still enabled
"; + } else { + $response .= "Nightly removals based on classlist changes now enabled
"; + } + } else { + if ($currdrops) { + $response .= "Nightly removals based on classlist changes now disabled
"; + } else { + $response .= "Nightly removals based on classlist changes still disabled"; + } + } + if ($autoadds || $autodrops) { + $warning = &warning_message($dom,$crs,$action); + $warn_prefix = "
Warning. Although you indicated that nightly "; + $warn_suffix = " should be enabled, additional action is required.
"; + } + if ($autoadds) { + if ($autodrops) { + $warnfiller = "adds and drops"; + } else { + $warnfiller = "adds"; + } + } else { + if ($autodrops) { + $warnfiller = "drops"; + } + } + unless ($warning eq '') { + $response = $warn_prefix.$warnfiller.$warn_suffix.$warning; + } + } + &print_reply($r,$response,$$tasktitleref{$action}); + return; } sub print_setdates_response { - my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; - my %settings = &Apache::lonnet::get('environment',['internal.autostart','internal.autoend'],$dom,$crs); - my $currstart = $settings{'internal.autostart'}; - my $currend = $settings{'internal.autoend'}; - my $response = ''; - my ($autostart,$autoend) = &get_dates_from_form(); - my $showstart = &Apache::lonlocal::locallocaltime($autostart); - my $showend = ''; - my $warning = ''; - my $warn_prefix = ''; - if ($autoend) { - $showend = &Apache::lonlocal::locallocaltime($autoend); - } else { - $showend = "'No end date'"; - } - - my %cenv = ('internal.autostart' => $autostart, - 'internal.autoend' => $autoend); - 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 { - if ($currstart == $autostart) { - $response = "The first date for automated enrollment has been left unchanged as $showstart.
"; - } else { - $response = "The first date for automated enrollment has been changed to $showstart.
"; - } - if ($currend == $autoend) { - $response .= "The last date for automated enrollment has been left unchanged as $showend.
"; - } else { - $response .= "The last date for automated enrollment has been changed to $showend.
"; - } + my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; + my %settings = &Apache::lonnet::get('environment',['internal.autostart','internal.autoend'],$dom,$crs); + my $currstart = $settings{'internal.autostart'}; + my $currend = $settings{'internal.autoend'}; + my $response = ''; + my ($autostart,$autoend) = &get_dates_from_form(); + my $showstart = &Apache::lonlocal::locallocaltime($autostart); + my $showend = ''; + my $warning = ''; + my $warn_prefix = ''; + if ($autoend) { + $showend = &Apache::lonlocal::locallocaltime($autoend); + } else { + $showend = "'No end date'"; + } + + my %cenv = ('internal.autostart' => $autostart, + 'internal.autoend' => $autoend); + 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 { + if ($currstart == $autostart) { + $response = "The first date for automated enrollment has been left unchanged as $showstart.
"; + } else { + $response = "The first date for automated enrollment has been changed to $showstart.
"; + } + if ($currend == $autoend) { + $response .= "The last date for automated enrollment has been left unchanged as $showend.
"; + } else { + $response .= "The last date for automated enrollment has been changed to $showend.
"; + } # Generate message in case where old first enrollment date was later than today, but new first enrollment date is now today or earlier. - my $rosterupdated = 0; - my $firstaccess = ""; - my $nextupdate = ""; - my $lastupdate = ""; - - my $nowstamp = time; - my @date_list=localtime(time); - my $cur_year = $date_list[5]; - my $curday = $date_list[3]; - my $curmonth = $date_list[4]; - my $lastmidnt = timelocal(0,0,0,$date_list[3],$date_list[4],$date_list[5]); - my $nextmidnt = 86400 + $lastmidnt; - - my $todayupdate = timelocal(0,30,1,$date_list[3],$date_list[4],$date_list[5]); - my $lastupdate = $todayupdate - 86400; - if ($nowstamp < $todayupdate) { - $nextupdate = "today"; - } else { - $nextupdate = "tomorrow"; - } - if ($currstart < $lastupdate) { - $rosterupdated = 1; - } - if ($autostart < $nextmidnt ) { - if ( $autostart >= $lastmidnt) { - $firstaccess = "today"; - } else { - $firstaccess = "a date prior to today"; - } - if (($nowstamp >= $autostart) && ($rosterupdated == 0)) { - $response .= qq|
Although you have now set the first enrollment date to $firstaccess, automatic enrollment will not occur until the next automatic enrollment update occurs for all LON-CAPA courses at 1.30 am $nextupdate. If you wish to immediately enroll registered students included in the institutional classlist for this class, please visit the roster update page.
|; - } - } - $warning = &warning_message($dom,$crs,$action); - $warn_prefix = "
Warning. Although you set a start and end date for auto-enrollment, additional action is required.
"; - unless ($warning eq '') { - $response .= $warn_prefix.$warning; - } - } - &print_reply($r,$response,$$tasktitleref{$action}); - return; + my $rosterupdated = 0; + my $firstaccess = ""; + my $nextupdate = ""; + my $lastupdate = ""; + + my $nowstamp = time; + my @date_list=localtime(time); + my $cur_year = $date_list[5]; + my $curday = $date_list[3]; + my $curmonth = $date_list[4]; + my $lastmidnt = timelocal(0,0,0,$date_list[3],$date_list[4],$date_list[5]); + my $nextmidnt = 86400 + $lastmidnt; + + my $todayupdate = timelocal(0,30,1,$date_list[3],$date_list[4],$date_list[5]); + my $lastupdate = $todayupdate - 86400; + if ($nowstamp < $todayupdate) { + $nextupdate = "today"; + } else { + $nextupdate = "tomorrow"; + } + if ($currstart < $lastupdate) { + $rosterupdated = 1; + } + if ($autostart < $nextmidnt ) { + if ( $autostart >= $lastmidnt) { + $firstaccess = "today"; + } else { + $firstaccess = "a date prior to today"; + } + if (($nowstamp >= $autostart) && ($rosterupdated == 0)) { + $response .= qq|
Although you have now set the first enrollment date to $firstaccess, automatic enrollment will not occur until the next automatic enrollment update occurs for all LON-CAPA courses at 1.30 am $nextupdate. If you wish to immediately enroll registered students included in the institutional classlist for this class, please visit the roster update page.
|; + } + } + $warning = &warning_message($dom,$crs,$action); + $warn_prefix = "
Warning. Although you set a start and end date for auto-enrollment, additional action is required.
"; + unless ($warning eq '') { + $response .= $warn_prefix.$warning; + } + } + &print_reply($r,$response,$$tasktitleref{$action}); + return; } sub print_setaccess_response { - my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; - my %settings = &Apache::lonnet::get('environment',['default_enrollment_start_date','default_enrollment_end_date','internal.autostart'],$dom,$crs); - my $currstart = $settings{'default_enrollment_start_date'}; - my $currend = $settings{'default_enrollment_end_date'}; - my $autostart = $settings{'internal.autostart'}; - my $response = ''; - my ($startaccess,$endaccess) = &get_dates_from_form(); - my $showstart = &Apache::lonlocal::locallocaltime($startaccess); - my $showend = ''; - my $warning = ''; - my $warn_prefix = ''; - if ($endaccess) { - $showend = &Apache::lonlocal::locallocaltime($endaccess); - } else { - $showend = "'No end date'"; - } - - my %cenv = ('default_enrollment_start_date' => $startaccess, - 'default_enrollment_end_date' => $endaccess); - 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 { - if ($currstart == $startaccess) { - $response = "The first access date for students added via automated enrollment has been left unchanged as $showstart.
"; - } else { - $response = "The first access date for students added via automated enrollment has been changed to + my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; + my %settings = &Apache::lonnet::get('environment',['default_enrollment_start_date','default_enrollment_end_date','internal.autostart'],$dom,$crs); + my $currstart = $settings{'default_enrollment_start_date'}; + my $currend = $settings{'default_enrollment_end_date'}; + my $autostart = $settings{'internal.autostart'}; + my $response = ''; + my ($startaccess,$endaccess) = &get_dates_from_form(); + my $showstart = &Apache::lonlocal::locallocaltime($startaccess); + my $showend = ''; + my $warning = ''; + my $warn_prefix = ''; + if ($endaccess) { + $showend = &Apache::lonlocal::locallocaltime($endaccess); + } else { + $showend = "'No end date'"; + } + + my %cenv = ('default_enrollment_start_date' => $startaccess, + 'default_enrollment_end_date' => $endaccess); + 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 { + if ($currstart == $startaccess) { + $response = "The first access date for students added via automated enrollment has been left unchanged as $showstart.
"; + } else { + $response = "The first access date for students added via automated enrollment has been changed to $showstart.
"; - } - if ($currend == $endaccess) { - $response .= "The last access date for students added via automated enrollment has been left unchanged as $showend.
"; - } else { - $response .= "The last access date for students automated enrollment has been changed to + } + if ($currend == $endaccess) { + $response .= "The last access date for students added via automated enrollment has been left unchanged as $showend.
"; + } else { + $response .= "The last access date for students automated enrollment has been changed to $showend.
"; - } - + } + # Generate message in case where old first access date was later than today, but new first access date is now today or earlier. - - my $accessgiven= 0; - my $firstaccess = ""; - my $nextupdate = ""; - my $lastupdate = ""; - - my $nowstamp = time; - my @date_list=localtime(time); - my $cur_year = $date_list[5]; - my $curday = $date_list[3]; - my $curmonth = $date_list[4]; - my $lastmidnt = timelocal(0,0,0,$date_list[3],$date_list[4],$date_list[5]); - my $nextmidnt = 86400 + $lastmidnt; - - my $todayupdate = timelocal(0,30,1,$date_list[3],$date_list[4],$date_list[5]); - my $tomorrowupdate = $todayupdate + 86400; - my $lastupdate = $todayupdate - 86400; - - if ($autostart < $nextmidnt) { - if ($nowstamp < $todayupdate) { - $nextupdate = "at 1.30 am today"; - } else { - $nextupdate = "at 1.30 am tomorrow"; - } - } else { - my @enrollstart = &Apache::lonlocal::locallocaltime($autostart); - $nextupdate = timelocal(0,30,1,$enrollstart[3],$enrollstart[4],$enrollstart[5]); - unless (($enrollstart[2] < 1) || ($enrollstart[2] == 1 && $enrollstart[1] <=30)) { - $nextupdate += 86400; - } - $nextupdate = &Apache::lonlocal::locallocaltime($nextupdate); - } - if (($currstart < $lastupdate) && ($autostart < $lastupdate)) { - $accessgiven = 1; - } - if ($startaccess < $nextmidnt ) { - if ( $startaccess >= $lastmidnt) { - $firstaccess = "today"; - } else { - $firstaccess = "a date prior to today"; - } - if (($nowstamp >= $startaccess) && ($accessgiven == 0)) { - $response .= qq|
Although you have now set the first access date to $firstaccess, automatic enrollment will not occur until the next automatic enrollment update occurs for all LON-CAPA courses $nextupdate. If you wish to grant immediate course access for registered students included in the institutional classlist for this class, please visit the roster update page.
|; - } - } - $warning = &warning_message($dom,$crs,$action); - $warn_prefix = "
Warning. Although you have set default first and last access dates for students who are added via automatic enrollment, additional action is required.
"; - unless ($warning eq '') { - $response .= $warn_prefix.$warning; - } - } - &print_reply($r,$response,$$tasktitleref{$action}); - return; + + my $accessgiven= 0; + my $firstaccess = ""; + my $nextupdate = ""; + my $lastupdate = ""; + + my $nowstamp = time; + my @date_list=localtime(time); + my $cur_year = $date_list[5]; + my $curday = $date_list[3]; + my $curmonth = $date_list[4]; + my $lastmidnt = timelocal(0,0,0,$date_list[3],$date_list[4],$date_list[5]); + my $nextmidnt = 86400 + $lastmidnt; + + my $todayupdate = timelocal(0,30,1,$date_list[3],$date_list[4],$date_list[5]); + my $tomorrowupdate = $todayupdate + 86400; + my $lastupdate = $todayupdate - 86400; + + if ($autostart < $nextmidnt) { + if ($nowstamp < $todayupdate) { + $nextupdate = "at 1.30 am today"; + } else { + $nextupdate = "at 1.30 am tomorrow"; + } + } else { + my @enrollstart = &Apache::lonlocal::locallocaltime($autostart); + $nextupdate = timelocal(0,30,1,$enrollstart[3],$enrollstart[4],$enrollstart[5]); + unless (($enrollstart[2] < 1) || ($enrollstart[2] == 1 && $enrollstart[1] <=30)) { + $nextupdate += 86400; + } + $nextupdate = &Apache::lonlocal::locallocaltime($nextupdate); + } + if (($currstart < $lastupdate) && ($autostart < $lastupdate)) { + $accessgiven = 1; + } + if ($startaccess < $nextmidnt ) { + if ( $startaccess >= $lastmidnt) { + $firstaccess = "today"; + } else { + $firstaccess = "a date prior to today"; + } + if (($nowstamp >= $startaccess) && ($accessgiven == 0)) { + $response .= qq|
Although you have now set the first access date to $firstaccess, automatic enrollment will not occur until the next automatic enrollment update occurs for all LON-CAPA courses $nextupdate. If you wish to grant immediate course access for registered students included in the institutional classlist for this class, please visit the roster update page.
|; + } + } + $warning = &warning_message($dom,$crs,$action); + $warn_prefix = "
Warning. Although you have set default first and last access dates for students who are added via automatic enrollment, additional action is required.
"; + unless ($warning eq '') { + $response .= $warn_prefix.$warning; + } + } + &print_reply($r,$response,$$tasktitleref{$action}); + return; } sub print_notify_response { - my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; + my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; # Get current settings - my %settings = &Apache::lonnet::get('environment',['internal.notifylist','internal.coursecode'],$dom,$crs); - my $notifylist = $settings{'internal.notifylist'}; - my $coursecode = $settings{'internal.coursecode'}; - my @currpeople = (); - my $notify = 0; - my @people = (); - my $peoplestr = ""; - my $response = ""; - my $noprocess = 0; - - if ($notifylist =~ m/,/) { - @currpeople = split/,/,$notifylist; - } else { - $currpeople[0] = $notifylist; - } - my $currcount = 0; - foreach (@currpeople) { - unless ($_ eq '') { $currcount ++; } - } + my %settings = &Apache::lonnet::get('environment',['internal.notifylist','internal.coursecode'],$dom,$crs); + my $notifylist = $settings{'internal.notifylist'}; + my $coursecode = $settings{'internal.coursecode'}; + my @currpeople = (); + my $notify = 0; + my @people = (); + my $peoplestr = ""; + my $response = ""; + my $noprocess = 0; - if ( exists($ENV{'form.notify'}) ) { - $notify=$ENV{'form.notify'}; - } - if ( exists($ENV{'form.notifyshow'}) ) { - my $notifyshow = $ENV{'form.notifyshow'}; - for (my $i=0; $i<$notifyshow; $i++) { - if ( exists($ENV{"form.note_$i"}) ) { - if ( exists($ENV{"form.notifyname_$i"}) ) { - unless ( $ENV{"form.notifyname_$i"} eq '' ) { - push @people, $ENV{"form.notifyname_$i"}; - } - } - } - } - if ($notify) { $peoplestr = join(",",@people); } - } else { - if ($notify) { - if ($currcount) { - $response = "There was a problem retrieving the updated list of recipients of notification messages. The notification settings for this course have been left unchanged.
."; - $peoplestr = $notifylist; - @people = @currpeople; - $noprocess = 1; - } - } - } - unless ($noprocess == 1) { - my %cenv = ('internal.notifylist' => $peoplestr); - my $reply = &Apache::lonnet::put('environment',\%cenv,$dom,$crs); - if ($reply !~ /^ok$/) { - $response = "There was a problem processing your requested changes. The notification settings for this course have been left unchanged.
"; - } else { - if ($notify) { - if (@people) { - if ($currcount) { - $response .= "Notification of enrollment changes still enabled
"; - } else { - $response .= "Notification of enrollment changes now enabled
"; - } - $response .= "
The following will receive notification if there are any changes in enrollment in LON-CAPA course: $realm ($coursecode) as a result of the nightly enrollment check:
\n"; - } else { - $response = "Notification of enrollment changes was not enabled as no course coordinators were selected as recipients.
"; - } - } else { - if ($currcount) { - $response = "Notification of enrollment changes now disabled
"; - } else { - $response = "Notification of enrollment changes still disabled
"; - } - } - } - } - &print_reply($r,$response,$$tasktitleref{$action}); - return; + if ($notifylist =~ m/,/) { + @currpeople = split/,/,$notifylist; + } else { + $currpeople[0] = $notifylist; + } + my $currcount = 0; + foreach (@currpeople) { + unless ($_ eq '') { $currcount ++; } + } + + if ( exists($ENV{'form.notify'}) ) { + $notify=$ENV{'form.notify'}; + } + if ( exists($ENV{'form.notifyshow'}) ) { + my $notifyshow = $ENV{'form.notifyshow'}; + for (my $i=0; $i<$notifyshow; $i++) { + if ( exists($ENV{"form.note_$i"}) ) { + if ( exists($ENV{"form.notifyname_$i"}) ) { + unless ( $ENV{"form.notifyname_$i"} eq '' ) { + push @people, $ENV{"form.notifyname_$i"}; + } + } + } + } + if ($notify) { $peoplestr = join(",",@people); } + } else { + if ($notify) { + if ($currcount) { + $response = "There was a problem retrieving the updated list of recipients of notification messages. The notification settings for this course have been left unchanged.
."; + $peoplestr = $notifylist; + @people = @currpeople; + $noprocess = 1; + } + } + } + unless ($noprocess == 1) { + my %cenv = ('internal.notifylist' => $peoplestr); + my $reply = &Apache::lonnet::put('environment',\%cenv,$dom,$crs); + if ($reply !~ /^ok$/) { + $response = "There was a problem processing your requested changes. The notification settings for this course have been left unchanged.
"; + } else { + if ($notify) { + if (@people) { + if ($currcount) { + $response .= "Notification of enrollment changes still enabled
"; + } else { + $response .= "Notification of enrollment changes now enabled
"; + } + $response .= "
The following will receive notification if there are any changes in enrollment in LON-CAPA course: $realm ($coursecode) as a result of the nightly enrollment check:
\n"; + } else { + $response = "Notification of enrollment changes was not enabled as no course coordinators were selected as recipients.
"; + } + } else { + if ($currcount) { + $response = "Notification of enrollment changes now disabled
"; + } else { + $response = "Notification of enrollment changes still disabled
"; + } + } + } + } + &print_reply($r,$response,$$tasktitleref{$action}); + return; } sub print_crosslistings_menu () { - my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; - my %settings = &Apache::lonnet::get('environment',['internal.crosslistings','internal.coursecode'],$dom,$crs); - my @currxlists = (); - my @xlists = (); - my $crosscount = 0; - my $removecount = 0; - my $xliststr = ''; - my $response = ''; - my $coursecode = $settings{'internal.coursecode'}; - if ($settings{'internal.crosslistings'} =~ m/,/) { - @currxlists = split/,/,$settings{'internal.crosslistings'}; - } elsif ($settings{'internal.crosslistings'} ne '') { - $currxlists[0] = $settings{'internal.crosslistings'}; - } + my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; + my %settings = &Apache::lonnet::get('environment',['internal.crosslistings','internal.coursecode'],$dom,$crs); + my @currxlists = (); + my @xlists = (); + my $crosscount = 0; + my $removecount = 0; + my $xliststr = ''; + my $response = ''; + my $coursecode = $settings{'internal.coursecode'}; + if ($settings{'internal.crosslistings'} =~ m/,/) { + @currxlists = split/,/,$settings{'internal.crosslistings'}; + } elsif ($settings{'internal.crosslistings'} ne '') { + $currxlists[0] = $settings{'internal.crosslistings'}; + } - if (@currxlists > 0) { - for (my $i=0; $i<@currxlists; $i++) { - my $xlist = "cross_".$i; - my $gp = "gp_".$i; - if ( exists($ENV{"form.$xlist"}) ) { - my $xlistentry = ''; - if ($currxlists[$i] =~ m/^([^:]+)/) { - $xlistentry = $1.':'; - } - if ( exists($ENV{"form.$gp"}) ) { - $xlistentry .= $ENV{"form.$gp"}; - } - push @xlists,$xlistentry; - $crosscount ++; - } else { - $removecount ++; - } - } - } + if (@currxlists > 0) { + for (my $i=0; $i<@currxlists; $i++) { + my $xlist = "cross_".$i; + my $gp = "gp_".$i; + if ( exists($ENV{"form.$xlist"}) ) { + my $xlistentry = ''; + if ($currxlists[$i] =~ m/^([^:]+)/) { + $xlistentry = $1.':'; + } + if ( exists($ENV{"form.$gp"}) ) { + $xlistentry .= $ENV{"form.$gp"}; + } + push @xlists,$xlistentry; + $crosscount ++; + } else { + $removecount ++; + } + } + } - if ($crosscount > 1) { - $xliststr = join(",",@xlists); - } else { - $xliststr = $xlists[0]; - } - my %cenv = ('internal.crosslistings' => $xliststr); - 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 { - if ($removecount > 0) { - $response = "A total of $removecount courses are no longer crosslisted with LON-CAPA course: $realm ($coursecode).

"; - } - if ($crosscount > 0) { - $response .= "The $crosscount courses listed below remain crosslisted with this LON-CAPA course, and students enrolling in these course sections will be automatically added to the class roster for the course, if you have chosen to enable a nightly automated enrollment update.

\n"; - } - } - if ( exists($ENV{'form.numcross'}) ) { - my $numcross = $ENV{'form.numcross'}; - if ($numcross > 0) { - my @bgcolors=("#eeeeee","#cccccc"); - $response .= qq( - You indicated that you wish to add an additional $numcross crosslisting(s). For each new crosslisting enter the insititutional course section code (e.g., fs03zol101001, for section 001 of zol101 for fs03 semester), and the LON-CAPA section/group ID you wish to assign to students who will be enrolled in your LON-CAPA class as a result of their registration in the crosslisted course section. The LON-CAPA section/group ID can be left blank, if you do not wish to tie a section/group ID to this crosslisting. The institutional course section code should only contain letters and/or numbers, and must be consistent with the scheme adopted by your Domain Coordinator to map course codes (and section numbers) to your institution's student information system.

+ if ($crosscount > 1) { + $xliststr = join(",",@xlists); + } else { + $xliststr = $xlists[0]; + } + my %cenv = ('internal.crosslistings' => $xliststr); + 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 { + if ($removecount > 0) { + $response = "A total of $removecount courses are no longer crosslisted with LON-CAPA course: $realm ($coursecode).

"; + } + if ($crosscount > 0) { + $response .= "The $crosscount courses listed below remain crosslisted with this LON-CAPA course, and students enrolling in these course sections will be automatically added to the class roster for the course, if you have chosen to enable a nightly automated enrollment update.

\n"; + } + } + if ( exists($ENV{'form.numcross'}) ) { + my $numcross = $ENV{'form.numcross'}; + if ($numcross > 0) { + my @bgcolors=("#eeeeee","#cccccc"); + $response .= qq(You indicated that you wish to add an additional $numcross crosslisting(s). For each new crosslisting enter the insititutional course section code (e.g., fs03zol101001, for section 001 of zol101 for fs03 semester), and the LON-CAPA section/group ID you wish to assign to students who will be enrolled in your LON-CAPA class as a result of their registration in the crosslisted course section. The LON-CAPA section/group ID can be left blank, if you do not wish to tie a section/group ID to this crosslisting. The institutional course section code should only contain letters and/or numbers, and must be consistent with the scheme adopted by your Domain Coordinator to map course codes (and section numbers) to your institution\'s student information system.

@@ -1521,17 +1520,17 @@ sub print_crosslistings_menu () { - ); - for (my $i=0; $i<$numcross; $i++) { - my $colflag = $i%2; - $response .= qq( + ); + for (my $i=0; $i<$numcross; $i++) { + my $colflag = $i%2; + $response .= qq( - ); - } - $response .= qq(
Crosslisting LON-CAPA section/groupID
+ ); + } + $response .= qq( @@ -1544,272 +1543,272 @@ sub print_crosslistings_menu () {
- ); - } - } - &print_reply($r,$response,$$tasktitleref{$action}); - return; + ); + } + } + &print_reply($r,$response,$$tasktitleref{$action}); + return; } sub print_crosslistings_response () { - my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; - my %settings = &Apache::lonnet::get('environment',['internal.crosslistings','internal.coursecode','internal.courseowner'],$dom,$crs); - my @currxlists = (); - my @xlists = (); - my @allxlists = (); - my @badxlists = (); - my @badowner = (); - my $numcross = 0; - my $xliststr = $settings{'internal.crosslistings'}; - my $coursecode = $settings{'internal.coursecode'}; - my $owner = $settings{'internal.courseowner'}; - my $response = ''; - my $warning = ''; - my $warn_prefix = ''; - - if ($xliststr =~ m/,/) { - @allxlists = split/,/,$xliststr; - } else { - unless ($xliststr eq '') { $allxlists[0] = $xliststr; } - } - - if ( exists($ENV{'form.numcross'}) ) { - $numcross = $ENV{'form.numcross'}; - } + my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; + my %settings = &Apache::lonnet::get('environment',['internal.crosslistings','internal.coursecode','internal.courseowner'],$dom,$crs); + my @currxlists = (); + my @xlists = (); + my @allxlists = (); + my @badxlists = (); + my @badowner = (); + my $numcross = 0; + my $xliststr = $settings{'internal.crosslistings'}; + my $coursecode = $settings{'internal.coursecode'}; + my $owner = $settings{'internal.courseowner'}; + my $response = ''; + my $warning = ''; + my $warn_prefix = ''; - if ($numcross > 0) { - for (my $i=0; $i<$numcross; $i++) { - my $xl = "newcross_".$i; - my $gp = "newgroupid_".$i; - if ( exists($ENV{"form.$xl"}) ) { - my $coursecheck = ''; - $coursecheck = &Apache::lonnet::auto_validate_courseID($crs,$dom,$ENV{"form.$xl"}); - if ($coursecheck eq 'ok') { - my $addcheck = ''; - $addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$ENV{"form.$xl"},$owner); - if ($addcheck eq 'ok') { - push @xlists,$ENV{"form.$xl"}.":".$ENV{"form.$gp"}; - } else { - push @badowner,$ENV{"form.$xl"}.":".$ENV{"form.$gp"}; - } - } else { - push @badxlists, $ENV{"form.$xl"}.":".$ENV{"form.$gp"}.":".$coursecheck; - } - } - } - push @allxlists, @xlists; - } + if ($xliststr =~ m/,/) { + @allxlists = split/,/,$xliststr; + } else { + unless ($xliststr eq '') { $allxlists[0] = $xliststr; } + } - if (@xlists > 0 ) { - unless ($xliststr eq '') { $xliststr .= ","; } - if (@xlists > 1) { - $xliststr .= join(",",@xlists); - } else { - $xliststr .= $xlists[0]; - } - my %cenv = ('internal.crosslistings' => $xliststr); - 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 = "The courses listed below are now crosslisted with this LON-CAPA course, and students enrolling in these course sections will be automatically added to the class roster for the course, if you have chosen to enable a nightly automated enrollment update.


\n"; - } - } else { - if ($xliststr =~ m/:/) { - my @oldxlists = (); - if ($xliststr =~ m/,/) { - @oldxlists = split/,/,$xliststr; - } else { - $oldxlists[0] = $xliststr; - } - $response .= "Although no new crosslistings were added, the courses listed below continue to be crosslisted with your LON-CAPA course.


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


\n"; - } + if ( exists($ENV{'form.numcross'}) ) { + $numcross = $ENV{'form.numcross'}; + } - if (@badowner > 0) { - $response .= "The courses listed below could not be included in the crosslistings 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 ($numcross > 0) { + for (my $i=0; $i<$numcross; $i++) { + my $xl = "newcross_".$i; + my $gp = "newgroupid_".$i; + if ( exists($ENV{"form.$xl"}) ) { + my $coursecheck = ''; + $coursecheck = &Apache::lonnet::auto_validate_courseID($crs,$dom,$ENV{"form.$xl"}); + if ($coursecheck eq 'ok') { + my $addcheck = ''; + $addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$ENV{"form.$xl"},$owner); + if ($addcheck eq 'ok') { + push @xlists,$ENV{"form.$xl"}.":".$ENV{"form.$gp"}; + } else { + push @badowner,$ENV{"form.$xl"}.":".$ENV{"form.$gp"}; + } + } else { + push @badxlists, $ENV{"form.$xl"}.":".$ENV{"form.$gp"}.":".$coursecheck; + } + } + } + push @allxlists, @xlists; + } + + if (@xlists > 0 ) { + unless ($xliststr eq '') { $xliststr .= ","; } + if (@xlists > 1) { + $xliststr .= join(",",@xlists); + } else { + $xliststr .= $xlists[0]; + } + my %cenv = ('internal.crosslistings' => $xliststr); + 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 = "The courses listed below are now crosslisted with this LON-CAPA course, and students enrolling in these course sections will be automatically added to the class roster for the course, if you have chosen to enable a nightly automated enrollment update.


\n"; + } + } else { + if ($xliststr =~ m/:/) { + my @oldxlists = (); + if ($xliststr =~ m/,/) { + @oldxlists = split/,/,$xliststr; + } else { + $oldxlists[0] = $xliststr; + } + $response .= "Although no new crosslistings were added, the courses listed below continue to be crosslisted with your LON-CAPA course.


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


\n"; + } + + if (@badowner > 0) { + $response .= "The courses listed below could not be included in the crosslistings 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 (@allxlists > 0) { - $warning = &warning_message($dom,$crs,$action); - $warn_prefix = "
Warning. Although you have selected crosslisted courses to contribute enrollment to this course, additional action is required.
"; - unless ($warning eq '') { - $response .= $warn_prefix.$warning; - } - } + if (@allxlists > 0) { + $warning = &warning_message($dom,$crs,$action); + $warn_prefix = "
Warning. Although you have selected crosslisted courses to contribute enrollment to this course, additional action is required.
"; + unless ($warning eq '') { + $response .= $warn_prefix.$warning; + } + } - &print_reply($r,$response,$$tasktitleref{$action}); - return; + &print_reply($r,$response,$$tasktitleref{$action}); + return; } sub print_sections_menu () { - my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; - 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 $warning = ""; - my $warn_prefix = ""; - 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 '') { - $currsections[0] = $settings{'internal.sectionnums'}; - } - - 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"}; - } - if ( grep/^$ENV{"form.$secnum"}:/,@currsections) { - push @sections, $secentry; - $seccount ++; - } else { - my $newsec = $coursecode.$ENV{"form.$secnum"}; - my $coursecheck = &Apache::lonnet::auto_validate_courseID($crs,$dom,$newsec); - if ($coursecheck eq 'ok') { - my $addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$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; - my $gp = "secgp_".$i; - if ( exists($ENV{"form.$sec"}) ) { - my $secentry = ''; - if ($currsections[$i] =~ m/^(\w+:)/ ) { - $secentry = $1; - } - if ( exists($ENV{"form.$gp"}) ) { - $secentry .= $ENV{"form.$gp"}; - } - push @sections,$secentry; - $seccount ++; - } else { - $removecount ++; - } - } - } - - if ($seccount > 1) { - $secstr = join(",",@sections); - } else { - $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 { - if ($removecount > 0) { - $response = "A total of $removecount sections have been removed from the list of sections which contribute to enrollment in LON-CAPA course: $realm ($coursecode).

"; - } - if ($addcount > 0) { - $response .= "A total of $addcount sections have been added to the list of + my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; + 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 $warning = ""; + my $warn_prefix = ""; + 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 '') { + $currsections[0] = $settings{'internal.sectionnums'}; + } + + 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"}; + } + if ( grep/^$ENV{"form.$secnum"}:/,@currsections) { + push @sections, $secentry; + $seccount ++; + } else { + my $newsec = $coursecode.$ENV{"form.$secnum"}; + my $coursecheck = &Apache::lonnet::auto_validate_courseID($crs,$dom,$newsec); + if ($coursecheck eq 'ok') { + my $addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$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; + my $gp = "secgp_".$i; + if ( exists($ENV{"form.$sec"}) ) { + my $secentry = ''; + if ($currsections[$i] =~ m/^(\w+:)/ ) { + $secentry = $1; + } + if ( exists($ENV{"form.$gp"}) ) { + $secentry .= $ENV{"form.$gp"}; + } + push @sections,$secentry; + $seccount ++; + } else { + $removecount ++; + } + } + } + + if ($seccount > 1) { + $secstr = join(",",@sections); + } else { + $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 { + if ($removecount > 0) { + $response = "A total of $removecount sections have been removed from the list of sections which contribute to enrollment in LON-CAPA course: $realm ($coursecode).

"; + } + if ($addcount > 0) { + $response .= "A total of $addcount sections have been added to the list of sections which contribute to enrollment in LON-CAPA course: $realm ($coursecode).

"; - } - if ($seccount > 0) { - $response .= "Students enrolling in the $seccount section(s) listed below will be automatically added to the class roster for the course, 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"; - } - - if ($seccount > 0) { - $warning = &warning_message($dom,$crs,$action); - $warn_prefix = "
Warning. Although you have selected sections to contribute enrollment to this course, additional action is required.
"; - unless ($warning eq '') { - $response .= $warn_prefix.$warning; - } - } - - if ( exists($ENV{'form.numsec'}) ) { - my $numsec = $ENV{'form.numsec'}; - if ($numsec > 0) { - my @bgcolors=("#eeeeee","#cccccc"); - $response .= qq( - You indicated that you wish to incorporate student enrollment in your LON-CAPA course from an additional $numsec section(s). For each new section enter the insititutional section code (e.g., 004), and the LON-CAPA section/group ID you wish to assign to students who will be enrolled in your LON-CAPA class as a result of their registration in this particular section. The LON-CAPA section/group ID can be left blank, if you do not wish to designate a section/group ID for this course section. The institutional section code should only contain letters and/or numbers, and must be consistent with the scheme adopted by your Domain Coordinator to map course section numbers to your institution's student information system.

+ } + if ($seccount > 0) { + $response .= "Students enrolling in the $seccount section(s) listed below will be automatically added to the class roster for the course, 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"; + } + + if ($seccount > 0) { + $warning = &warning_message($dom,$crs,$action); + $warn_prefix = "
Warning. Although you have selected sections to contribute enrollment to this course, additional action is required.
"; + unless ($warning eq '') { + $response .= $warn_prefix.$warning; + } + } + + if ( exists($ENV{'form.numsec'}) ) { + my $numsec = $ENV{'form.numsec'}; + if ($numsec > 0) { + my @bgcolors=("#eeeeee","#cccccc"); + $response .= qq( + You indicated that you wish to incorporate student enrollment in your LON-CAPA course from an additional $numsec section(s). For each new section enter the insititutional section code (e.g., 004), and the LON-CAPA section/group ID you wish to assign to students who will be enrolled in your LON-CAPA class as a result of their registration in this particular section. The LON-CAPA section/group ID can be left blank, if you do not wish to designate a section/group ID for this course section. The institutional section code should only contain letters and/or numbers, and must be consistent with the scheme adopted by your Domain Coordinator to map course section numbers to your institution\'s student information system.

@@ -1819,17 +1818,17 @@ sections which contribute to enrollment - ); - for (my $i=0; $i<$numsec; $i++) { - my $colflag = $i%2; - $response .= qq( + ); + for (my $i=0; $i<$numsec; $i++) { + my $colflag = $i%2; + $response .= qq( - ); - } - $response .= qq(
Section number LON-CAPA section/groupID
+ ); + } + $response .= qq( @@ -1842,243 +1841,243 @@ sections which contribute to enrollment
- ); - } - } - &print_reply($r,$response,$$tasktitleref{$action}); - return; + ); + } + } + &print_reply($r,$response,$$tasktitleref{$action}); + return; } sub print_sections_response () { - my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; - 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 = ''; - my $warning = ''; - my $warn_prefix = ''; - if ($secstr =~ m/,/) { - @allsections = split/,/,$secstr; - } else { - unless ($secstr eq '') { $allsections[0] = $secstr; } - } - - 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"}) ) { - unless ( (grep/^$ENV{"form.$sec"}:/,@allsections) || (grep/^$ENV{"form.$sec"}:/,@sections) ) { - my $newsec = $coursecode.$ENV{"form.$sec"}; - my $coursecheck = &Apache::lonnet::auto_validate_courseID($crs,$dom,$newsec); - if ($coursecheck eq 'ok') { - my $addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$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) { - $secstr .= join(",",@sections); - } else { - $secstr .= $sections[0]; - } - my %cenv = ('internal.sectionnums' => $secstr); - $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.

"; - } - } + my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; + 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 = ''; + my $warning = ''; + my $warn_prefix = ''; + if ($secstr =~ m/,/) { + @allsections = split/,/,$secstr; + } else { + unless ($secstr eq '') { $allsections[0] = $secstr; } + } + + 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"}) ) { + unless ( (grep/^$ENV{"form.$sec"}:/,@allsections) || (grep/^$ENV{"form.$sec"}:/,@sections) ) { + my $newsec = $coursecode.$ENV{"form.$sec"}; + my $coursecheck = &Apache::lonnet::auto_validate_courseID($crs,$dom,$newsec); + if ($coursecheck eq 'ok') { + my $addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$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) { + $secstr .= join(",",@sections); + } else { + $secstr .= $sections[0]; + } + my %cenv = ('internal.sectionnums' => $secstr); + $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.

"; + } + } - 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.


\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.


\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 (@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 (@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 (@allsections > 0) { - $warning = &warning_message($dom,$crs,$action); - $warn_prefix = "
Warning. Although you have selected sections to contribute enrollment to this course, additional action is required.
"; - unless ($warning eq '') { - $response .= $warn_prefix.$warning; - } - } + if (@allsections > 0) { + $warning = &warning_message($dom,$crs,$action); + $warn_prefix = "
Warning. Although you have selected sections to contribute enrollment to this course, additional action is required.
"; + unless ($warning eq '') { + $response .= $warn_prefix.$warning; + } + } - &print_reply($r,$response,$$tasktitleref{$action}); - return; + &print_reply($r,$response,$$tasktitleref{$action}); + return; } sub print_photos_response () { - my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; - my %settings = &Apache::lonnet::get('environment',['internal.showphotos'],$dom,$crs); - my $currphotos = $settings{'internal.showphotos'}; - my $showphotos = ''; - 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); - if ($reply !~ /^ok$/) { - $response = "There was a problem processing your requested change. The student photo import setting for this course has been left unchanged.
"; - } else { - if ($showphotos) { - if ($currphotos) { - $response = "Retrieval of student photos is still enabled
"; - } else { - $response = "Retrieval of student photos in now enabled
"; - } - } else { - if ($currphotos) { - $response = "Retrieval of student photos is now disabled
"; - } else { - $response = "Retrieval of student photos is still disabled
"; - } - } - } - &print_reply($r,$response,$$tasktitleref{$action}); - return; + my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; + my %settings = &Apache::lonnet::get('environment',['internal.showphotos'],$dom,$crs); + my $currphotos = $settings{'internal.showphotos'}; + my $showphotos = ''; + 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); + if ($reply !~ /^ok$/) { + $response = "There was a problem processing your requested change. The student photo import setting for this course has been left unchanged.
"; + } else { + if ($showphotos) { + if ($currphotos) { + $response = "Retrieval of student photos is still enabled
"; + } else { + $response = "Retrieval of student photos in now enabled
"; + } + } else { + if ($currphotos) { + $response = "Retrieval of student photos is now disabled
"; + } else { + $response = "Retrieval of student photos is still disabled
"; + } + } + } + &print_reply($r,$response,$$tasktitleref{$action}); + return; } sub print_update_result () { - my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; - my $response = ''; - my $updateadds = 0; - my $updatedrops = 0; - my $changecount = 0; - my %affiliates = (); - my %reply = (); - my @allcourses = (); - my %LC_code = (); - my $logmsg = ''; - my $newusermsg = ''; - - my %settings = &Apache::lonnet::get('environment',['internal.coursecode','internal.sectionnums','internal.crosslistings','internal.authtype','internal.autharg'],$dom,$crs); - my $coursecode = $settings{'internal.coursecode'}; - my $authtype = $settings{'internal.authtype'}; - my $autharg = $settings{'internal.autharg'}; - my ($startaccess,$endaccess) = &get_dates_from_form(); - - if ( exists($ENV{'form.updateadds'}) ) { - $updateadds = $ENV{'form.updateadds'}; - } - if ( exists($ENV{'form.updatedrops'}) ) { - $updatedrops = $ENV{'form.updatedrops'}; - } - if (!$updateadds && !$updatedrops) { - $response = "An update of the class roster has not been carried out because you indicated that you wanted to neither add new students, nor expire dropped students based on a comparison between the institutional class lists for the course sections and crosslisted courses that contribure enrollment to this LON-CAPA course."; - } elsif ($coursecode eq '') { - $response = "There was a problem retrieving the course code for this LON-CAPA course. An update of the class roster has not been carried out, and enrollment remains unchanged"; - } else { + my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; + my $response = ''; + my $updateadds = 0; + my $updatedrops = 0; + my $changecount = 0; + my %affiliates = (); + my %reply = (); + my @allcourses = (); + my %LC_code = (); + my $logmsg = ''; + my $newusermsg = ''; + + my %settings = &Apache::lonnet::get('environment',['internal.coursecode','internal.sectionnums','internal.crosslistings','internal.authtype','internal.autharg'],$dom,$crs); + my $coursecode = $settings{'internal.coursecode'}; + my $authtype = $settings{'internal.authtype'}; + my $autharg = $settings{'internal.autharg'}; + my ($startaccess,$endaccess) = &get_dates_from_form(); + + if ( exists($ENV{'form.updateadds'}) ) { + $updateadds = $ENV{'form.updateadds'}; + } + if ( exists($ENV{'form.updatedrops'}) ) { + $updatedrops = $ENV{'form.updatedrops'}; + } + if (!$updateadds && !$updatedrops) { + $response = "An update of the class roster has not been carried out because you indicated that you wanted to neither add new students, nor expire dropped students based on a comparison between the institutional class lists for the course sections and crosslisted courses that contribure enrollment to this LON-CAPA course."; + } elsif ($coursecode eq '') { + $response = "There was a problem retrieving the course code for this LON-CAPA course. An update of the class roster has not been carried out, and enrollment remains unchanged"; + } else { # Get complete list of course sections to update - my @currsections = (); - my @currxlists = (); - - if ($settings{'internal.sectionnums'} =~ m/,/) { - @currsections = split/,/,$settings{'internal.sectionnums'}; - } elsif ($settings{'internal.sectionnums'} ne '') { - $currsections[0] = $settings{'internal.sectionnums'}; - } - - if ($settings{'internal.crosslistings'} =~ m/,/) { - @currxlists = split/,/,$settings{'internal.crosslistings'}; - } elsif ($settings{'internal.crosslistings'} ne '') { - $currxlists[0] = $settings{'internal.crosslistings'}; - } - - if (@currxlists > 0) { - foreach (@currxlists) { - if (m/^(\w+):(\w*)$/) { - unless (grep/^$1$/,@allcourses) { - push @allcourses,$1; - $LC_code{$1} = $2; - } - } - } - } - - if (@currsections > 0) { - foreach (@currsections) { - if (m/^(\w+):(\w*)$/) { - my $sec = $coursecode.$1; - my $gp = $2; - unless (grep/^$sec$/,@allcourses) { - push @allcourses,$sec; - $LC_code{$sec} = $gp; - } - } - } - } - - if (@allcourses > 0) { - @{$affiliates{$crs}} = @allcourses; - my $outcome = &Apache::lonnet::fetch_enrollment_query('updatenow',\%affiliates,\%reply,$dom,$crs); - if ($reply{$crs} > 0) { - ($changecount,$response) = &LONCAPA::Enrollment::update_LC($dom,$crs,$updateadds,$updatedrops,$startaccess,$endaccess,$authtype,$autharg,\@allcourses,\%LC_code,\$logmsg,\$newusermsg,"updatenow"); - } else { - $response = "There was a problem retrieving institutional class list data for the course sections and crosslisted courses which contribute enrollment to this course. No updates have been carried out, and the roster remains unchanged."; - } - } else { - $response = "There are currently no course sections or crosslisted courses designated as contributors to enrollment in this LON-CAPA course. As a result a student roster update has not been carried out for $realm ($coursecode)"; - } - } - unless ($logmsg eq '') { - my $loglength = length($logmsg); - $logmsg = substr($logmsg,0,$loglength-4); - $logmsg = "

The following messages were generated by the roster update process:

"; - } - unless ($newusermsg eq '') { - $newusermsg = substr( $newusermsg,0,rindex($newusermsg,'
  • ') ); - $newusermsg = "

    The following new system user(s) who was/were created will be using internal authentication with an initial randomly generated password. A valid e-mail address was not available for this/these user(s) so LON-CAPA account credentials could not be sent via e-mail.

    "; - } - $response .= $logmsg.$newusermsg; - &print_reply($r,$response,$$tasktitleref{$action}); - return; + my @currsections = (); + my @currxlists = (); + + if ($settings{'internal.sectionnums'} =~ m/,/) { + @currsections = split/,/,$settings{'internal.sectionnums'}; + } elsif ($settings{'internal.sectionnums'} ne '') { + $currsections[0] = $settings{'internal.sectionnums'}; + } + + if ($settings{'internal.crosslistings'} =~ m/,/) { + @currxlists = split/,/,$settings{'internal.crosslistings'}; + } elsif ($settings{'internal.crosslistings'} ne '') { + $currxlists[0] = $settings{'internal.crosslistings'}; + } + + if (@currxlists > 0) { + foreach (@currxlists) { + if (m/^(\w+):(\w*)$/) { + unless (grep/^$1$/,@allcourses) { + push @allcourses,$1; + $LC_code{$1} = $2; + } + } + } + } + + if (@currsections > 0) { + foreach (@currsections) { + if (m/^(\w+):(\w*)$/) { + my $sec = $coursecode.$1; + my $gp = $2; + unless (grep/^$sec$/,@allcourses) { + push @allcourses,$sec; + $LC_code{$sec} = $gp; + } + } + } + } + + if (@allcourses > 0) { + @{$affiliates{$crs}} = @allcourses; + my $outcome = &Apache::lonnet::fetch_enrollment_query('updatenow',\%affiliates,\%reply,$dom,$crs); + if ($reply{$crs} > 0) { + ($changecount,$response) = &LONCAPA::Enrollment::update_LC($dom,$crs,$updateadds,$updatedrops,$startaccess,$endaccess,$authtype,$autharg,\@allcourses,\%LC_code,\$logmsg,\$newusermsg,"updatenow"); + } else { + $response = "There was a problem retrieving institutional class list data for the course sections and crosslisted courses which contribute enrollment to this course. No updates have been carried out, and the roster remains unchanged."; + } + } else { + $response = "There are currently no course sections or crosslisted courses designated as contributors to enrollment in this LON-CAPA course. As a result a student roster update has not been carried out for $realm ($coursecode)"; + } + } + unless ($logmsg eq '') { + my $loglength = length($logmsg); + $logmsg = substr($logmsg,0,$loglength-4); + $logmsg = "

    The following messages were generated by the roster update process:

    "; + } + unless ($newusermsg eq '') { + $newusermsg = substr( $newusermsg,0,rindex($newusermsg,'
  • ') ); + $newusermsg = "

    The following new system user(s) who was/were created will be using internal authentication with an initial randomly generated password. A valid e-mail address was not available for this/these user(s) so LON-CAPA account credentials could not be sent via e-mail.

    "; + } + $response .= $logmsg.$newusermsg; + &print_reply($r,$response,$$tasktitleref{$action}); + return; } sub print_viewclass_response {