version 1.8, 2003/12/29 16:34:39
|
version 1.13, 2004/06/09 17:01:56
|
Line 329 Note: Any students added manually by cou
|
Line 329 Note: Any students added manually by cou
|
"); |
"); |
} elsif ($action eq "setdates") { |
} elsif ($action eq "setdates") { |
my ($start_table,$end_table) = &date_setting_table($enrollvar{autostart},$enrollvar{autoend}); |
my ($start_table,$end_table) = &date_setting_table($enrollvar{autostart},$enrollvar{autoend}); |
my $oldstartshow = localtime($enrollvar{autostart}); |
my $oldstartshow = ''; |
my $oldendshow = localtime($enrollvar{autoend}); |
my $oldendshow = ''; |
if ($enrollvar{autoend} == 0) { |
if ( defined($enrollvar{autostart}) ) { |
$oldendshow = "No ending date"; |
$oldstartshow = localtime($enrollvar{autostart}); |
|
} |
|
if ( defined($enrollvar{autoend}) ) { |
|
$oldendshow = localtime($enrollvar{autoend}); |
|
if ($enrollvar{autoend} == 0) { |
|
$oldendshow = "No ending date"; |
|
} |
|
} |
|
my $dateshow; |
|
if ( ($oldendshow eq '') && ($oldstartshow eq '') ) { |
|
$dateshow = "<br/><font size='+1'>Warning</font>. Currently <b>NO</b> first enrollment or last enrollment dates are set. You <b>must</b> use this menu to set a start date and an end date (or check the 'no ending date' checkbox) if you plan to utilise automated adds and/or drops in this course.\n"; |
|
} else { |
|
$dateshow = "Currently: First enrollment: <b><i>$oldstartshow</i></b>, Last enrollment: <b><i>$oldendshow</i></b>\n"; |
} |
} |
$r->print(<<ENDTWO); |
$r->print(<<ENDTWO); |
<form name="enter" method="post"><br/> |
<form name="enter" method="post"><br/> |
<table width="100%" border="0" cellpadding="2" cellspacing="2"> |
<table width="100%" border="0" cellpadding="2" cellspacing="2"> |
<tr> |
<tr> |
<td align="left"><b>$$tasktitleref{$action}</b><br/> |
<td align="left"><b>$$tasktitleref{$action}</b><br/><br/> |
Currently: First enrollment: <i>$oldstartshow</i>, Last enrollment: <i>$oldendshow</i> |
$dateshow |
</td> |
</td> |
</tr> |
</tr> |
</table> |
</table> |
Line 629 ENDTWO
|
Line 641 ENDTWO
|
</form> |
</form> |
"); |
"); |
} elsif ($action eq "sections") { |
} elsif ($action eq "sections") { |
my @sections = &localenroll::get_sections($enrollvar{coursecode}); |
my @sections = (); |
|
@sections = &Apache::lonnet::auto_get_sections($crs,$dom,$enrollvar{coursecode}); |
my @storedsections = (); |
my @storedsections = (); |
my @currsections = (); |
my @currsections = (); |
my %sec_id = (); |
my %sec_id = (); |
Line 885 ENDBASE
|
Line 898 ENDBASE
|
################################################################### |
################################################################### |
sub print_chgsettings_response { |
sub print_chgsettings_response { |
my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; |
my ($r,$realm,$dom,$crs,$action,$tasktitleref) = @_; |
my %settings = &Apache::lonnet::get('environment',['internal.autoadds','internal.autodrops'],$dom,$crs); |
my %settings = &Apache::lonnet::get('environment',['internal.sectionnums','internal.crosslistings','internal.autostart','internal.autoend','internal.autoadds','internal.autodrops'],$dom,$crs); |
my $curradds = $settings{'internal.autoadds'}; |
my $currend = ''; |
my $currdrops = $settings{'internal.autodrops'}; |
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 $autoadds = ''; |
my $autodrops = ''; |
my $autodrops = ''; |
|
|
Line 899 sub print_chgsettings_response {
|
Line 934 sub print_chgsettings_response {
|
} |
} |
|
|
my $response = ""; |
my $response = ""; |
|
my $warning = ""; |
|
my $warn_prefix = ""; |
|
my $warn_suffix = ""; |
|
my $warnfiller = ""; |
my %cenv = ('internal.autoadds' => $autoadds, |
my %cenv = ('internal.autoadds' => $autoadds, |
'internal.autodrops' => $autodrops); |
'internal.autodrops' => $autodrops); |
my $reply = &Apache::lonnet::put('environment',\%cenv,$dom,$crs); |
my $reply = &Apache::lonnet::put('environment',\%cenv,$dom,$crs); |
Line 910 sub print_chgsettings_response {
|
Line 949 sub print_chgsettings_response {
|
$response = "Nightly additions based on classlist changes still <b>enabled</b><br/>"; |
$response = "Nightly additions based on classlist changes still <b>enabled</b><br/>"; |
} else { |
} else { |
$response = "Nightly additions based on classlist changes now <b>enabled</b><br/>"; |
$response = "Nightly additions based on classlist changes now <b>enabled</b><br/>"; |
} |
} |
} else { |
} else { |
if ($curradds) { |
if ($curradds) { |
$response = "Nightly additions based on classlist changes now <b>disabled</b><br/>"; |
$response = "Nightly additions based on classlist changes now <b>disabled</b><br/>"; |
Line 931 sub print_chgsettings_response {
|
Line 970 sub print_chgsettings_response {
|
$response .= "Nightly removals based on classlist changes still <b>disabled</b>"; |
$response .= "Nightly removals based on classlist changes still <b>disabled</b>"; |
} |
} |
} |
} |
|
if ($autoadds || $autodrops) { |
|
$warning = &warning_message($dom,$crs,$action); |
|
$warn_prefix = "<br/><font size ='+1'><b>Warning</b></font>. Although you indicated that nightly "; |
|
$warn_suffix = " should be enabled, additional action is required.<br/>"; |
|
} |
|
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}); |
&print_reply($r,$response,$$tasktitleref{$action}); |
return; |
return; |
Line 945 sub print_setdates_response {
|
Line 1003 sub print_setdates_response {
|
my ($autostart,$autoend) = &get_dates_from_form(); |
my ($autostart,$autoend) = &get_dates_from_form(); |
my $showstart = localtime($autostart); |
my $showstart = localtime($autostart); |
my $showend = ''; |
my $showend = ''; |
|
my $warning = ''; |
|
my $warn_prefix = ''; |
if ($autoend) { |
if ($autoend) { |
$showend = localtime($autoend); |
$showend = localtime($autoend); |
} else { |
} else { |
Line 965 sub print_setdates_response {
|
Line 1025 sub print_setdates_response {
|
if ($currend == $autoend) { |
if ($currend == $autoend) { |
$response .= "The last date for automated enrollment has been left unchanged as $showend.<br/>"; |
$response .= "The last date for automated enrollment has been left unchanged as $showend.<br/>"; |
} else { |
} else { |
$response .= "The last date for enrollment has been left unchanged as $showend.<br/>"; |
$response .= "The last date for automated enrollment has been changed to $showend.<br/>"; |
} |
} |
|
|
# Generate message in case where old first access date was later than today, but new first access date is now today or earlier. |
# Generate message in case where old first access date was later than today, but new first access date is now today or earlier. |
Line 983 sub print_setdates_response {
|
Line 1043 sub print_setdates_response {
|
my $lastmidnt = timelocal(0,0,0,$date_list[3],$date_list[4],$date_list[5]); |
my $lastmidnt = timelocal(0,0,0,$date_list[3],$date_list[4],$date_list[5]); |
my $nextmidnt = 86400 + $lastmidnt; |
my $nextmidnt = 86400 + $lastmidnt; |
|
|
my $todayupdate = timelocal(0,40,4,$date_list[3],$date_list[4],$date_list[5]); |
my $todayupdate = timelocal(0,30,1,$date_list[3],$date_list[4],$date_list[5]); |
my $lastupdate = $todayupdate - 86400; |
my $lastupdate = $todayupdate - 86400; |
if ($nowstamp < $todayupdate) { |
if ($nowstamp < $todayupdate) { |
$nextupdate = "today"; |
$nextupdate = "today"; |
Line 1000 sub print_setdates_response {
|
Line 1060 sub print_setdates_response {
|
$firstaccess = "a date prior to today"; |
$firstaccess = "a date prior to today"; |
} |
} |
if (($nowstamp >= $autostart) && ($rosterupdated == 0)) { |
if (($nowstamp >= $autostart) && ($rosterupdated == 0)) { |
$response .= qq|<br>Although you have now set the first enrollment date to $firstaccess, automatic enrollment will <b>not</b> occur until the next automatic enrollment update occurs for all LON-CAPA courses at 4.40 am $nextupdate. If you wish to grant immediate course access for registered students included in the institutional classlist for this class, please visit the <a href="/adm/populate?action=updatenow">roster update page</a>.<br>|; |
$response .= qq|<br>Although you have now set the first enrollment date to $firstaccess, automatic enrollment will <b>not</b> occur until the next automatic enrollment update occurs for all LON-CAPA courses at 1.30 am $nextupdate. If you wish to grant immediate course access for registered students included in the institutional classlist for this class, please visit the <a href="/adm/populate?action=updatenow">roster update page</a>.<br>|; |
} |
} |
} |
} |
|
$warning = &warning_message($dom,$crs,$action); |
|
$warn_prefix = "<br/><font size ='+1'><b>Warning</b></font>. Although you set a start and end date for auto-enrollment, additional action is required.<br/>"; |
|
unless ($warning eq '') { |
|
$response .= $warn_prefix.$warning; |
|
} |
} |
} |
&print_reply($r,$response,$$tasktitleref{$action}); |
&print_reply($r,$response,$$tasktitleref{$action}); |
return; |
return; |
Line 1207 sub print_crosslistings_response () {
|
Line 1272 sub print_crosslistings_response () {
|
my $coursecode = $settings{'internal.coursecode'}; |
my $coursecode = $settings{'internal.coursecode'}; |
my $owner = $settings{'internal.courseowner'}; |
my $owner = $settings{'internal.courseowner'}; |
my $response = ''; |
my $response = ''; |
|
my $warning = ''; |
|
my $warn_prefix = ''; |
|
|
if ($xliststr =~ m/,/) { |
if ($xliststr =~ m/,/) { |
@allxlists = split/,/,$xliststr; |
@allxlists = split/,/,$xliststr; |
Line 1223 sub print_crosslistings_response () {
|
Line 1290 sub print_crosslistings_response () {
|
my $xl = "newcross_".$i; |
my $xl = "newcross_".$i; |
my $gp = "newgroupid_".$i; |
my $gp = "newgroupid_".$i; |
if ( exists($ENV{"form.$xl"}) ) { |
if ( exists($ENV{"form.$xl"}) ) { |
my $coursecheck = &localenroll::validate_courseID($ENV{"form.$xl"}); |
my $coursecheck = ''; |
|
$coursecheck = &Apache::lonnet::auto_validate_courseID($crs,$dom,$ENV{"form.$xl"}); |
if ($coursecheck eq 'ok') { |
if ($coursecheck eq 'ok') { |
my $addcheck = &localenroll::new_course($ENV{"form.$xl"},$owner); |
my $addcheck = ''; |
|
$addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$ENV{"form.$xl"},$owner); |
if ($addcheck eq 'ok') { |
if ($addcheck eq 'ok') { |
push @xlists,$ENV{"form.$xl"}.":".$ENV{"form.$gp"}; |
push @xlists,$ENV{"form.$xl"}.":".$ENV{"form.$gp"}; |
} else { |
} else { |
push @badowner,$ENV{"form.$xl"}.":".$ENV{"form.$gp"}; |
push @badowner,$ENV{"form.$xl"}.":".$ENV{"form.$gp"}; |
} |
} |
} else { |
} else { |
push @badxlists, $ENV{"form.$xl"}.":".$ENV{"form.$gp"}.":".$coursecheck; |
push @badxlists, $ENV{"form.$xl"}.":".$ENV{"form.$gp"}.":".$coursecheck; |
} |
} |
Line 1292 sub print_crosslistings_response () {
|
Line 1361 sub print_crosslistings_response () {
|
$response .= "</ul><br/><br/>\n"; |
$response .= "</ul><br/><br/>\n"; |
} |
} |
|
|
|
if (@allxlists > 0) { |
|
$warning = &warning_message($dom,$crs,$action); |
|
$warn_prefix = "<br/><font size ='+1'><b>Warning</b></font>. Although you have selected crosslisted courses to contribute enrollment to this course, additional action is required.<br/>"; |
|
unless ($warning eq '') { |
|
$response .= $warn_prefix.$warning; |
|
} |
|
} |
|
|
&print_reply($r,$response,$$tasktitleref{$action}); |
&print_reply($r,$response,$$tasktitleref{$action}); |
return; |
return; |
} |
} |
Line 1308 sub print_sections_menu () {
|
Line 1385 sub print_sections_menu () {
|
my $addcount = 0; |
my $addcount = 0; |
my $secstr = ''; |
my $secstr = ''; |
my $response = ''; |
my $response = ''; |
|
my $warning = ""; |
|
my $warn_prefix = ""; |
my $coursecode = $settings{'internal.coursecode'}; |
my $coursecode = $settings{'internal.coursecode'}; |
my $owner = $settings{'internal.courseowner'}; |
my $owner = $settings{'internal.courseowner'}; |
if ($settings{'internal.sectionnums'} =~ m/,/) { |
if ($settings{'internal.sectionnums'} =~ m/,/) { |
Line 1334 sub print_sections_menu () {
|
Line 1413 sub print_sections_menu () {
|
$seccount ++; |
$seccount ++; |
} else { |
} else { |
my $newsec = $coursecode.$ENV{"form.$secnum"}; |
my $newsec = $coursecode.$ENV{"form.$secnum"}; |
my $coursecheck = &localenroll::validate_courseID($newsec); |
my $coursecheck = &Apache::lonnet::auto_validate_courseID($crs,$dom,$newsec); |
if ($coursecheck eq 'ok') { |
if ($coursecheck eq 'ok') { |
my $addcheck = &localenroll::new_course($newsec,$owner); |
my $addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$newsec,$owner); |
if ($addcheck eq 'ok') { |
if ($addcheck eq 'ok') { |
push @sections,$ENV{"form.$secnum"}.":".$ENV{"form.$gp"}; |
push @sections,$ENV{"form.$secnum"}.":".$ENV{"form.$gp"}; |
$seccount ++; |
$seccount ++; |
Line 1425 sections which contribute to enrollment
|
Line 1504 sections which contribute to enrollment
|
$response .= "</ul><br/><br/>\n"; |
$response .= "</ul><br/><br/>\n"; |
} |
} |
|
|
|
if ($seccount > 0) { |
|
$warning = &warning_message($dom,$crs,$action); |
|
$warn_prefix = "<br/><font size ='+1'><b>Warning</b></font>. Although you have selected sections to contribute enrollment to this course, additional action is required.<br/>"; |
|
unless ($warning eq '') { |
|
$response .= $warn_prefix.$warning; |
|
} |
|
} |
|
|
if ( exists($ENV{'form.numsec'}) ) { |
if ( exists($ENV{'form.numsec'}) ) { |
my $numsec = $ENV{'form.numsec'}; |
my $numsec = $ENV{'form.numsec'}; |
if ($numsec > 0) { |
if ($numsec > 0) { |
Line 1484 sub print_sections_response () {
|
Line 1571 sub print_sections_response () {
|
my $owner = $settings{'internal.courseowner'}; |
my $owner = $settings{'internal.courseowner'}; |
my $response = ''; |
my $response = ''; |
my $putreply = ''; |
my $putreply = ''; |
|
my $warning = ''; |
|
my $warn_prefix = ''; |
if ($secstr =~ m/,/) { |
if ($secstr =~ m/,/) { |
@allsections = split/,/,$secstr; |
@allsections = split/,/,$secstr; |
} else { |
} else { |
Line 1501 sub print_sections_response () {
|
Line 1590 sub print_sections_response () {
|
if ( exists($ENV{"form.$sec"}) ) { |
if ( exists($ENV{"form.$sec"}) ) { |
unless ( (grep/^$ENV{"form.$sec"}:/,@allsections) || (grep/^$ENV{"form.$sec"}:/,@sections) ) { |
unless ( (grep/^$ENV{"form.$sec"}:/,@allsections) || (grep/^$ENV{"form.$sec"}:/,@sections) ) { |
my $newsec = $coursecode.$ENV{"form.$sec"}; |
my $newsec = $coursecode.$ENV{"form.$sec"}; |
my $coursecheck = &localenroll::validate_courseID($newsec); |
my $coursecheck = &Apache::lonnet::auto_validate_courseID($crs,$dom,$newsec); |
if ($coursecheck eq 'ok') { |
if ($coursecheck eq 'ok') { |
my $addcheck = &localenroll::new_course($newsec,$owner); |
my $addcheck = &Apache::lonnet::auto_new_course($crs,$dom,$newsec,$owner); |
if ($addcheck eq 'ok') { |
if ($addcheck eq 'ok') { |
push @sections,$ENV{"form.$sec"}.":".$ENV{"form.$gp"}; |
push @sections,$ENV{"form.$sec"}.":".$ENV{"form.$gp"}; |
} else { |
} else { |
Line 1559 sub print_sections_response () {
|
Line 1648 sub print_sections_response () {
|
$response .= "</ul><br/><br/>\n"; |
$response .= "</ul><br/><br/>\n"; |
} |
} |
|
|
|
if (@allsections > 0) { |
|
$warning = &warning_message($dom,$crs,$action); |
|
$warn_prefix = "<br/><font size ='+1'><b>Warning</b></font>. Although you have selected sections to contribute enrollment to this course, additional action is required.<br/>"; |
|
unless ($warning eq '') { |
|
$response .= $warn_prefix.$warning; |
|
} |
|
} |
|
|
&print_reply($r,$response,$$tasktitleref{$action}); |
&print_reply($r,$response,$$tasktitleref{$action}); |
return; |
return; |
} |
} |
Line 1669 sub print_update_result () {
|
Line 1766 sub print_update_result () {
|
|
|
if (@allcourses > 0) { |
if (@allcourses > 0) { |
@{$affiliates{$crs}} = @allcourses; |
@{$affiliates{$crs}} = @allcourses; |
&localenroll::fetch_enrollment($dom,\%affiliates,\%reply); |
my $outcome = &Apache::lonnet::fetch_enrollment_query('updatenow',\%affiliates,\%reply,$crs,$dom); |
if ($reply{$crs} > 0) { |
if ($reply{$crs} > 0) { |
($changecount,$response) = &LONCAPA::Enrollment::update_LC($dom,$crs,$updateadds,$updatedrops,$autostart,$autoend,$authtype,$autharg,\@allcourses,\%LC_code,\$logmsg,\$newusermsg,"updatenow"); |
($changecount,$response) = &LONCAPA::Enrollment::update_LC($dom,$crs,$updateadds,$updatedrops,$autostart,$autoend,$authtype,$autharg,\@allcourses,\%LC_code,\$logmsg,\$newusermsg,"updatenow"); |
} else { |
} else { |
Line 1693 sub print_update_result () {
|
Line 1790 sub print_update_result () {
|
return; |
return; |
} |
} |
|
|
|
sub warning_message { |
|
my ($dom,$crs,$caller) = @_; |
|
my %settings = &Apache::lonnet::get('environment',['internal.autoadds','internal.autodrops','internal.sectionnums','internal.crosslistings','internal.autostart','internal.autoend'],$dom,$crs); |
|
my $currend = ''; |
|
my $currstart = ''; |
|
my $currsecs = ''; |
|
my $currxlists = ''; |
|
my $warning = ''; |
|
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'} |
|
} |
|
unless ($caller eq 'setdates') { |
|
if ( ($currstart eq '') && ($currend eq '') ) { |
|
$warning = "You <b>must</b> now use <a href='/adm/populate?action=setdates'>Change enrollment dates</a> to set a start date <i>and</i> an end date for the enrollment (or check the 'No end date' checkbox) for the nightly adds process to actually occur.</br></br>"; |
|
} |
|
} |
|
unless ( ($caller eq 'sections') || ($caller eq 'crosslist') ) { |
|
if ( ($currsecs eq '') && ($currxlists eq '') ) { |
|
$warning .= "You <b>must</b> now use <a href='/adm/populate?action=sections'>Section settings</a> and/or <a href='/adm/populate?action=crosslist'>Change crosslistings</a> to choose at least one section of the course, or at least one crosslisted course which will contribute enrollment to this LON-CAPA course. At present there are <b>NO</b> sections or crosslisted courses that are affiliated with this course that are set to contribute to the automated enrollment process.<br/><br/>"; |
|
} |
|
} |
|
unless ( $caller eq 'chgsettings') { |
|
if ( (!$curradds) && (!$currdrops) ) { |
|
$warning .= "You <b>must</b> now use <a href='/adm/populate?action=chgsettings'>Automated adds/drops</a> to enable automated adds and/or drops if you want automatic enrollment updates to occur in this course.<br/><br/>."; |
|
} |
|
} |
|
return $warning; |
|
} |
|
|
sub print_reply () { |
sub print_reply () { |
my ($r,$response,$caller) = @_; |
my ($r,$response,$caller) = @_; |
$r->print(" |
$r->print(" |
Line 1708 sub print_reply () {
|
Line 1851 sub print_reply () {
|
|
|
sub setup_date_selectors { |
sub setup_date_selectors { |
my ($starttime,$endtime) = @_; |
my ($starttime,$endtime) = @_; |
if ($endtime == 0) { |
|
$endtime = 1999915200; |
|
} |
|
if (! defined($starttime)) { |
if (! defined($starttime)) { |
$starttime = time; |
$starttime = time; |
if (exists($ENV{'course.'.$ENV{'request.course.id'}. |
if (exists($ENV{'course.'.$ENV{'request.course.id'}. |
Line 1867 sub handler {
|
Line 2007 sub handler {
|
} |
} |
} |
} |
} |
} |
|
|
my $reply = 0; |
my $reply = 0; |
unless ($state eq "choose") { $reply = 1; } |
unless ($state eq "choose") { $reply = 1; } |
|
|