--- loncom/interface/loncreateuser.pm 2009/08/06 20:40:59 1.305
+++ loncom/interface/loncreateuser.pm 2009/08/22 21:09:46 1.309
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Create a user
#
-# $Id: loncreateuser.pm,v 1.305 2009/08/06 20:40:59 raeburn Exp $
+# $Id: loncreateuser.pm,v 1.309 2009/08/22 21:09:46 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -68,7 +68,7 @@ use Apache::loncommon;
use Apache::lonlocal;
use Apache::longroup;
use Apache::lonuserutils;
-use Apache::selfenroll();
+use Apache::loncoursequeueadmin;
use LONCAPA qw(:DEFAULT :match);
my $loginscript; # piece of javascript used in two separate instances
@@ -216,7 +216,8 @@ END_SCRIPT
sub build_tools_display {
my ($ccuname,$ccdomain,$context) = @_;
- my (@usertools,%userenv,$output);
+ my (@usertools,%userenv,$output,@options,%validations,%reqtitles,%reqdisplay,
+ $colspan);
my %lt = &Apache::lonlocal::texthash (
'blog' => "Personal User Blog",
'aboutme' => "Personal Information Page",
@@ -235,53 +236,123 @@ sub build_tools_display {
'requestcourses.official','requestcourses.unofficial',
'requestcourses.community');
@usertools = ('official','unofficial','community');
+ @options =('norequest','approval','autolimit','validate');
+ %validations = &Apache::lonnet::auto_courserequest_checks($ccdomain);
+ %reqtitles = &courserequest_titles();
+ %reqdisplay = &courserequest_display();
+ $colspan = ' colspan="2"';
} else {
%userenv = &Apache::lonnet::userenvironment($ccdomain,$ccuname,
'tools.aboutme','tools.portfolio','tools.blog');
@usertools = ('aboutme','blog','portfolio');
}
foreach my $item (@usertools) {
- my ($custom_access,$curr_access,$cust_on,$cust_off,$tool_on,$tool_off);
+ my ($custom_access,$curr_access,$cust_on,$cust_off,$tool_on,$tool_off,
+ $currdisp,$custdisp,$custradio);
$cust_off = 'checked="checked" ';
$tool_on = 'checked="checked" ';
$curr_access =
&Apache::lonnet::usertools_access($ccuname,$ccdomain,$item,undef,
$context);
- if ($userenv{$context.'.'.$item} eq '') {
- $custom_access =
- &mt('Availability determined currently from default setting.');
- if (!$curr_access) {
- $tool_off = 'checked="checked" ';
- $tool_on = '';
- }
- } else {
- $custom_access =
- &mt('Availability determined currently from custom setting.');
+ if ($userenv{$context.'.'.$item} ne '') {
$cust_on = ' checked="checked" ';
$cust_off = '';
- if ($userenv{$context.'.'.$item} == 0) {
- $tool_off = 'checked="checked" ';
- $tool_on = '';
+ }
+ if ($context eq 'requestcourses') {
+ if ($userenv{$context.'.'.$item} eq '') {
+ $custom_access = &mt('Currently from default setting.');
+ } else {
+ $custom_access = &mt('Currently from custom setting.');
+ }
+ } else {
+ if ($userenv{$context.'.'.$item} eq '') {
+ $custom_access =
+ &mt('Availability determined currently from default setting.');
+ if (!$curr_access) {
+ $tool_off = 'checked="checked" ';
+ $tool_on = '';
+ }
+ } else {
+ $custom_access =
+ &mt('Availability determined currently from custom setting.');
+ if ($userenv{$context.'.'.$item} == 0) {
+ $tool_off = 'checked="checked" ';
+ $tool_on = '';
+ }
}
}
$output .= '
'."\n".
- ' '.$lt{$item}.' | '."\n".
+ ' '.$lt{$item}.' | '."\n".
'
'."\n".
- &Apache::loncommon::start_data_table_row()."\n".
- ' '.$custom_access.(' 'x5).$lt{'avai'}.': '.
- ($curr_access?&mt('Yes'):&mt('No')).' | '."\n".
+ &Apache::loncommon::start_data_table_row()."\n";
+ if ($context eq 'requestcourses') {
+ my ($curroption,$currlimit);
+ $curroption = $userenv{$context.'.'.$item};
+ if (!$curroption) {
+ $curroption = 'norequest';
+ }
+ if ($curroption =~ /^autolimit=(\d*)$/) {
+ $currlimit = $1;
+ $currdisp = &mt('Yes, up to [quant,_1,request]/user',$currlimit);
+ } else {
+ $currdisp = $reqdisplay{$curroption};
+ }
+ $custdisp = '';
+ $custradio = ''.&mt('Custom setting').' '.$custdisp;
+ } else {
+ $currdisp = ($curr_access?&mt('Yes'):&mt('No'));
+ $custdisp = ' ';
+ $custradio = (' 'x2).'--'.$lt{'cusa'}.': '.$custdisp.
+ '';
+ }
+ $output .= ' | '.$custom_access.(' 'x4).
+ $lt{'avai'}.': '.$currdisp.' | '."\n".
&Apache::loncommon::end_data_table_row()."\n".
&Apache::loncommon::start_data_table_row()."\n".
- ' '.$lt{'chse'}.': '.(' ' x3).
+ ''.$lt{'uscu'}.''.$custradio.' | '.
&Apache::loncommon::end_data_table_row()."\n";
}
return $output;
@@ -289,7 +360,7 @@ sub build_tools_display {
sub coursereq_externaluser {
my ($ccuname,$ccdomain,$cdom) = @_;
- my (@usertools,%userenv,$output);
+ my (@usertools,@options,%validations,%userenv,$output);
my %lt = &Apache::lonlocal::texthash (
'official' => 'Can request creation of official courses',
'unofficial' => 'Can request creation of unofficial courses',
@@ -300,27 +371,83 @@ sub coursereq_externaluser {
'reqcrsotherdom.official','reqcrsotherdom.unofficial',
'reqcrsotherdom.community');
@usertools = ('official','unofficial','community');
+ @options = ('approval','validate','autolimit');
+ %validations = &Apache::lonnet::auto_courserequest_checks($cdom);
+ my $optregex = join('|',@options);
+ my %reqtitles = &courserequest_titles();
foreach my $item (@usertools) {
- my ($tool_on,$tool_off);
- $tool_off = 'checked="checked" ';
+ my ($curroption,$currlimit,$tooloff);
if ($userenv{'reqcrsotherdom.'.$item} ne '') {
my @curr = split(',',$userenv{'reqcrsotherdom.'.$item});
- if (grep(/^\Q$cdom\E$/,@curr)) {
- $tool_on = 'checked="checked" ';
- $tool_off = '';
+ if (grep(/^\Q$cdom\E:($optregex)=?(\d*)$/,@curr)) {
+ $curroption = $1;
+ $currlimit = $2;
+ if (!$curroption) {
+ $curroption = 'norequest';
+ }
+ }
+ } else {
+ $curroption = 'norequest';
+ $tooloff = ' checked="checked"';
+ }
+ $output.= &Apache::loncommon::start_data_table_row()."\n".
+ ' '.$lt{$item}.': '.
+ ''.$reqtitles{'norequest'}.
+ ' ';
+ foreach my $option (@options) {
+ if ($option eq 'validate') {
+ my $canvalidate = 0;
+ if (ref($validations{$item}) eq 'HASH') {
+ if ($validations{$item}{'_external_'}) {
+ $canvalidate = 1;
+ }
+ }
+ next if (!$canvalidate);
+ }
+ my $checked = '';
+ if ($option eq $curroption) {
+ $checked = ' checked="checked"';
+ }
+ $output .= ''.
+ ''.
+ $reqtitles{$option}.' ';
+ if ($option eq 'autolimit') {
+ $output .= '';
}
+ $output .= ' '
}
- $output .= &Apache::loncommon::start_data_table_row()."\n".
- ' | '.$lt{$item}.': '.
- ''.&mt('Yes').' '.
- ''.&mt('No').' | '."\n".
+ $output .= ''."\n".
&Apache::loncommon::end_data_table_row()."\n";
}
return $output;
}
+sub courserequest_titles {
+ my %titles = &Apache::lonlocal::texthash (
+ official => 'Official',
+ unofficial => 'Unofficial',
+ community => 'Communities',
+ norequest => 'Not allowed',
+ approval => 'Approval by Dom. Coord.',
+ validate => 'With validation',
+ autolimit => 'Numerical limit',
+ );
+ return %titles;
+}
+
+sub courserequest_display {
+ my %titles = &Apache::lonlocal::texthash (
+ approval => 'Yes, need approval',
+ validate => 'Yes, with validation',
+ norequest => 'No',
+ );
+ return %titles;
+}
+
# =================================================================== Phase one
sub print_username_entry_form {
@@ -2031,7 +2158,13 @@ sub update_user_data {
}
}
foreach my $item (@requestcourses) {
- $newcustom{$item} = $env{'form.requestcourses_'.$item};
+ $newcustom{$item} = $env{'form.crsreq_'.$item};
+ if ($env{'form.crsreq_'.$item} eq 'autolimit') {
+ $newcustom{$item} .= '=';
+ unless ($env{'form.crsreq_'.$item.'_limit'} =~ /\D/) {
+ $newcustom{$item} .= $env{'form.crsreq_'.$item.'_limit'};
+ }
+ }
$changed{$item} = &tool_admin($item,$newcustom{$item},
\%changeHash,'requestcourses');
}
@@ -2677,6 +2810,9 @@ sub tool_changes {
return;
}
if ($context eq 'reqcrsotherdom') {
+ my @options = ('approval','validate','autolimit');
+ my $optregex = join('|',@options);
+ my %reqdisplay = &courserequest_display();
my $cdom = $env{'request.role.domain'};
foreach my $tool (@{$usertools}) {
$oldaccesstext->{$tool} = &mt('no');
@@ -2695,19 +2831,31 @@ sub tool_changes {
my @curr = split(',',$userenv->{$context.'.'.$tool});
my @new;
my $changedoms;
- if (grep(/^\Q$cdom\E$/,@curr)) {
+ my $newop = $env{'form.'.$context.'_'.$tool};
+ if ($newop eq 'autolimit') {
+ $newop .= '=';
+ unless ($env{'form.'.$context.'_'.$tool.'_limit'} =~ /\D/) {
+ $newop .= $env{'form.'.$context.'_'.$tool.'_limit'};
+ }
+ }
+ if (grep(/^\Q$cdom:($optregex\=?\d*)\E$/,@curr)) {
$oldaccesstext->{$tool} = &mt('yes');
- unless ($env{'form.'.$context.'_'.$tool}) {
+ my $oldop = $1;
+ if ($oldop ne $newop) {
$changedoms = 1;
foreach my $dom (@curr) {
unless ($dom eq $cdom) {
push(@new,$dom);
}
}
+ if ($newop) {
+ push(@new,$cdom.':'.$newop);
+ }
+ @new = sort(@new);
}
} elsif ($env{'form.'.$context.'_'.$tool}) {
$changedoms = 1;
- @new = sort(@curr,$cdom);
+ @new = sort(@curr,$cdom.':'.$newop);
}
$newaccesstext->{$tool} = $oldaccesstext->{$tool};
if ($changedoms) {
@@ -2719,9 +2867,17 @@ sub tool_changes {
$context);
if ($changed->{$tool}) {
if ($env{'form.'.$context.'_'.$tool}) {
- $newaccesstext->{$tool} = &mt('yes');
+ if ($env{'form.'.$context.'_'.$tool} eq 'autolimit') {
+ if ($env{'form.'.$context.'_'.$tool.'_limit'} =~ /\D/) {
+ $newaccesstext->{$tool} = &mt('Yes, processed automatically');
+ } else {
+ $newaccesstext->{$tool} = &mt('Yes, up to limit of [quant,_1,request] per user).',$env{'form.'.$context.'_'.$tool.'_limit'});
+ }
+ } else {
+ $newaccesstext->{$tool} = $reqdisplay{$env{'form.'.$context.'_'.$tool}};
+ }
} else {
- $newaccesstext->{$tool} = &mt('no');
+ $newaccesstext->{$tool} = &mt('No');
}
}
}
@@ -2730,6 +2886,15 @@ sub tool_changes {
return;
}
foreach my $tool (@{$usertools}) {
+ my $newval;
+ if ($context eq 'requestcourses') {
+ $newval = $env{'form.crsreq_'.$tool};
+ if ($newval eq 'autolimit') {
+ $newval .= '='.$env{'form.crsreq_'.$tool.'_limit'};
+ }
+ } else {
+ $newval = $env{'form.'.$context.'_'.$tool};
+ }
if ($userenv->{$context.'.'.$tool} ne '') {
$oldaccess->{$tool} = &mt('custom');
if ($userenv->{$context.'.'.$tool}) {
@@ -2739,12 +2904,12 @@ sub tool_changes {
}
$changeHash->{$context.'.'.$tool} = $userenv->{$context.'.'.$tool};
if ($env{'form.custom'.$tool} == 1) {
- if ($env{'form.'.$context.'_'.$tool} ne $userenv->{$context.'.'.$tool}) {
- $changed->{$tool} = &tool_admin($tool,$env{'form.'.$context.'_'.$tool},
- $changeHash,$context);
+ if ($newval ne $userenv->{$context.'.'.$tool}) {
+ $changed->{$tool} = &tool_admin($tool,$newval,$changeHash,
+ $context);
if ($changed->{$tool}) {
$newaccess->{$tool} = &mt('custom');
- if ($env{'form.'.$context.'_'.$tool}) {
+ if ($newval) {
$newaccesstext->{$tool} = &mt("availability set to 'on'");
} else {
$newaccesstext->{$tool} = &mt("availability set to 'off'");
@@ -2777,11 +2942,11 @@ sub tool_changes {
} else {
$oldaccess->{$tool} = &mt('default');
if ($env{'form.custom'.$tool} == 1) {
- $changed->{$tool} = &tool_admin($tool,$env{'form.'.$context.'_'.$tool},
- $changeHash,$context);
+ $changed->{$tool} = &tool_admin($tool,$newval,$changeHash,
+ $context);
if ($changed->{$tool}) {
$newaccess->{$tool} = &mt('custom');
- if ($env{'form.'.$context.'_'.$tool}) {
+ if ($newval) {
$newaccesstext->{$tool} = &mt("availability set to 'on'");
} else {
$newaccesstext->{$tool} = &mt("availability set to 'off'");
@@ -3772,11 +3937,13 @@ sub handler {
my $cid = $env{'request.course.id'};
my $cdom = $env{'course.'.$cid.'.domain'};
my $cnum = $env{'course.'.$cid.'.num'};
+ my $coursedesc = $env{'course.'.$cid.'.description'};
if (!exists($env{'form.state'})) {
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Enrollment requests',
'Course_SelfEnrollment_Approval'));
$r->print(''.&mt('Pending enrollment requests').'
'."\n");
- &display_selfenroll_queue($r,$context,$permission,$cnum,$cdom);
+ $r->print(&Apache::loncoursequeueadmin::display_queued_requests($context,
+ $cdom,$cnum));
} elsif ($env{'form.state'} eq 'done') {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>'/adm/createuser?action=selfenrollqueue',
@@ -3784,7 +3951,8 @@ sub handler {
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Enrollment result',
'Course_Self_Enrollment'));
$r->print(''.&mt('Enrollment request processing').'
'."\n");
- &update_selfenroll_queue($r,$context,$permission,$cid,$cnum,$cdom);
+ $r->print(&Apache::loncoursequeueadmin::update_request_queue($context,
+ $cdom,$cnum,$coursedesc));
}
$r->print(&Apache::loncommon::end_page());
} elsif ($env{'form.action'} eq 'changelogs') {
@@ -4465,279 +4633,6 @@ ENDSCRIPT
return;
}
-sub display_selfenroll_queue {
- my ($r,$context,$permission,$cnum,$cdom) = @_;
- my $namespace = 'selfenrollrequests';
- my ($output,%queue_by_date);
- my %requesthash = &Apache::lonnet::dump($namespace,$cdom,$cnum);
- if (keys(%requesthash) > 0) {
- $r->print(''.
- ''.
- ''.
- &Apache::loncommon::start_data_table().
- &Apache::loncommon::start_data_table_header_row().
- ''.&mt('Action').' | '.
- ''.&mt('Requestor').' | '.
- ''.&mt('Section').' | '.
- ''.&mt('Date requested').' | '.
- &Apache::loncommon::end_data_table_header_row());
- foreach my $item (keys(%requesthash)) {
- my ($timestamp,$usec) = split(/:/,$requesthash{$item});
- if (exists($queue_by_date{$timestamp})) {
- if (ref($queue_by_date{$timestamp}) eq 'ARRAY') {
- push(@{$queue_by_date{$timestamp}},$item.':'.$usec);
- }
- } else {
- @{$queue_by_date{$timestamp}} = ($item.':'.$usec);
- }
- }
- my @sortedtimes = sort {$a <=> $b} (keys(%queue_by_date));
- my $count = 0;
- foreach my $item (@sortedtimes) {
- if (ref($queue_by_date{$item}) eq 'ARRAY') {
- foreach my $request (sort(@{$queue_by_date{$item}})) {
- my ($puname,$pudom,$pusec) = split(/:/,$request);
- my $showsec = $pusec;
- if ($showsec eq '') {
- $showsec = &mt('none');
- }
- my $namelink = &Apache::loncommon::aboutmewrapper(
- &Apache::loncommon::plainname($puname,$pudom),
- $puname,$pudom);
- $r->print(&Apache::loncommon::start_data_table_row().
- ''.
- ''.&mt('Approve').' '.
- ''.
- ''.&mt('Reject').'
| '.
- ''.$namelink.' | '.
- ''.$showsec.' | '.
- ''.&Apache::lonlocal::locallocaltime($item).' | '.
- &Apache::loncommon::end_data_table_row());
- $count ++;
- }
- }
- }
- $r->print(&Apache::loncommon::end_data_table().
- '');
- } else {
- $r->print(&mt('There are currently no enrollment requests.'));
- }
- return;
-}
-
-sub update_selfenroll_queue {
- my ($r,$context,$permission,$cid,$cnum,$cdom) = @_;
- my @approvals = &Apache::loncommon::get_env_multiple('form.approvereq');
- my @rejections = &Apache::loncommon::get_env_multiple('form.rejectreq');
- my $access_start = $env{'course.'.$cid.'.internal.selfenroll_start_access'};
- my $access_end = $env{'course.'.$cid.'.internal.selfenroll_end_access'};
- my $limit = $env{'course.'.$cid.'.internal.selfenroll_limit'};
- my $cap = $env{'course.'.$cid.'.internal.selfenroll_cap'};
- my $notifylist = $env{'course.'.$cid.'.internal.selfenroll_notifylist'};
- my $namespace = 'selfenrollrequests';
- my ($stucounts,$idx,$classlist) = &get_student_counts($cdom,$cnum);
- my %requesthash = &Apache::lonnet::dump($namespace,$cdom,$cnum);
- my $coursedesc = $env{'course.'.$cid.'.description'};
- my $chome = &Apache::lonnet::homeserver($cnum,$cdom);
- my $hostname = &Apache::lonnet::hostname($chome);
- my $protocol = $Apache::lonnet::protocol{$chome};
- $protocol = 'http' if ($protocol ne 'https');
- my (@existing,@missingreq,@invalidusers,@limitexceeded,@enrolled,
- @enrollerrors,@warn_approves,@warn_rejects);
- my $now = time;
- my $sender = $env{'user.name'}.':'.$env{'user.domain'};
- my $approvedmsg = [{
- mt => 'Your request for enrollment has been approved.',
- },
- {
- mt => 'Visit [_1], to log-in and access the course',
- args => [$protocol.'://'.$hostname],
- }];
-
- my $rejectedmsg = [{
- mt => 'Your request for enrollment has not been approved.',
- }];
- foreach my $item (sort {$a <=> $b} @approvals) {
- my ($num,$uname,$udom,$usec) = split(/:/,$item);
- my $uhome = &Apache::lonnet::homeserver($uname,$udom);
- if ($uhome ne 'no_host') {
- if (exists($requesthash{$uname.':'.$udom})) {
-
- if (exists($classlist->{$uname.':'.$udom})) {
- if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') {
- if (($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Active') ||
- ($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Future')) {
- push(@existing,$uname.':'.$udom);
- next;
- }
- }
- }
- } else {
- push(@missingreq,$uname.':'.$udom);
- next;
- }
- if (!grep(/^\Q$item\E$/,@rejections)) {
- if ($limit eq 'allstudents') {
- if ($stucounts->{$limit} >= $cap) {
- push(@limitexceeded,$uname.':'.$udom);
- last;
- }
- } elsif ($limit eq 'selfenrolled') {
- if ($stucounts->{$limit} >= $cap) {
- push(@limitexceeded,$uname.':'.$udom);
- last;
- }
- }
- my $result =
- &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$usec,$access_end,$access_start,'selfenroll',undef,$cdom.'_'.$cnum,1);
- if ($result eq 'ok') {
- push(@enrolled,$uname.':'.$udom);
- $stucounts->{'allstudents'} ++;
- $stucounts->{'selfenrolled'} ++;
- &Apache::selfenroll::send_notification($uname.':'.$udom,$approvedmsg,$cid,
- $coursedesc,$now,'enroller',$sender);
- my %userrequest = (
- $cdom.'_'.$cnum => {
- timestamp => $now,
- section => $usec,
- adjudicator => $env{'user.name'}.':'.$env{'user.domain'},
- status => 'approved',
- }
- );
- my $userresult =
- &Apache::lonnet::put($namespace,\%userrequest,$udom,$uname);
- if ($userresult ne 'ok') {
- push(@warn_approves,$uname.':'.$udom);
- }
- } else {
- push(@enrollerrors,$uname.':'.$udom);
- }
- }
- } else {
- push(@invalidusers,$uname.':'.$udom);
- }
- }
- my @changes = (@enrolled,@rejections);
- if (@rejections) {
- foreach my $user (@rejections) {
- &Apache::selfenroll::send_notification($user,$rejectedmsg,$cid,
- $coursedesc,$now,'enroller',$sender);
- my ($uname,$udom) = split(/:/,$user);
- my %userrequest = (
- $cdom.'_'.$cnum => {
- timestamp => $now,
- adjudicator => $env{'user.name'}.':'.$env{'user.domain'},
- status => 'rejected',
- }
- );
- my $userresult =
- &Apache::lonnet::put($namespace,\%userrequest,$udom,$uname);
- if ($userresult ne 'ok') {
- push(@warn_rejects,$user);
- }
- }
- }
- if (@changes) {
- my $delresult = &Apache::lonnet::del($namespace,\@changes,$cdom,$cnum);
- if ($delresult eq 'ok') {
- my $namelink =
- &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'}).' ('.$env{'user.name'}.':'.$env{'user.domain'}.')';
- my $chgmsg = "'Action was taken on the following enrollment requests by [_1].',$namelink";
- my ($approvedlist,$rejectedlist);
- if (@enrolled) {
- $approvedlist = join("\n",@enrolled);
- $r->print(''.&mt('The following were enrolled in the course:').'
');
- foreach my $user (@enrolled) {
- my ($uname,$udom) = split(/:/,$user);
- my $userlink =
- &Apache::loncommon::aboutmewrapper(&Apache::loncommon::plainname($uname,$udom),$uname,$udom);
- $r->print('- '.$userlink.'
');
- }
- $r->print('
');
- }
- if (@rejections) {
- $rejectedlist = join("\n",@rejections);
- $r->print(''.&mt('The following enrollment requests were rejected:').'
');
- foreach my $user (@rejections) {
- $r->print('- '.$user.'
');
- }
- $r->print('
');
- }
- &Apache::selfenroll::send_notification($notifylist,$chgmsg,$cid,
- $coursedesc,$now,'managers',
- $sender,$approvedlist,$rejectedlist);
- }
- }
- if (@existing) {
- $r->print(''.&mt('The following enrollment requests were deleted because the user is already enrolled in the course:').'
');
- foreach my $user (@existing) {
- $r->print('- '.$user.'
');
- }
- $r->print('
');
- }
- if (@missingreq) {
- $r->print(''.&mt('The following enrollment requests were ignored because the request is no longer in the enrollment queue:').'
');
- foreach my $user (@missingreq) {
- $r->print('- '.$user.'
');
- }
- $r->print('
');
- }
- if (@invalidusers) {
- $r->print(''.&mt('The following enrollment requests were deleted because the requestor does not have a LON-CAPA account:').'
');
- foreach my $user (@invalidusers) {
- $r->print('- '.$user.'
');
- }
- $r->print('
');
- }
- if (@limitexceeded) {
- $r->print(''.&mt('The following enrollment requests were skipped because the enrollment limit has been reached for the course:').'
');
- foreach my $user (@limitexceeded) {
- $r->print('- '.$user.'
');
- }
- $r->print('
');
- }
- if (@enrollerrors) {
- $r->print(''.&mt('The following enrollment requests could not be processed because an error occurred:').'
');
- foreach my $user (@enrollerrors) {
- $r->print('- '.$user.'
');
- }
- $r->print('
');
- }
- if (@warn_approves) {
- $r->print(''.&mt("For the following users, an error occurred when updating the user's own self-enroll requests record:").'
');
- foreach my $user (@warn_approves) {
- $r->print('- '.$user.'
');
- }
- $r->print('
');
- }
- if (@warn_rejects) {
- $r->print(''.&mt("For the following users, an error occurred when updating the user's own self-enroll requests record:").'
');
- foreach my $user (@warn_rejects) {
- $r->print('- '.$user.'
');
- }
- $r->print('
');
- }
- return;
-}
-
-sub get_student_counts {
- my ($cdom,$cnum) = @_;
- my (%idx,%stucounts);
- my $classlist = &Apache::loncoursedata::get_classlist($cdom,$cnum);
- $idx{'type'} = &Apache::loncoursedata::CL_TYPE();
- $idx{'status'} = &Apache::loncoursedata::CL_STATUS();
- while (my ($student,$data) = each(%$classlist)) {
- if (($data->[$idx{'status'}] eq 'Active') ||
- ($data->[$idx{'status'}] eq 'Future')) {
- if ($data->[$idx{'type'}] eq 'selfenroll') {
- $stucounts{'selfenroll'} ++;
- }
- $stucounts{'allstudents'} ++;
- }
- }
- return (\%stucounts,\%idx,$classlist);
-}
-
sub visible_in_cat {
my ($cdom,$cnum) = @_;
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom);
@@ -6176,7 +6071,7 @@ sub update_selfenroll_config {
if ($currlimit eq 'allstudents') {
$newval = &mt('New self-enrollment no longer allowed when total (all students) reaches [_1].',$newcap);
} elsif ($changes{'internal.selfenroll_limit'} eq 'selfenrolled') {
- $newval = &mt('New self-enrollment no longer allowed when total umber of self-enrolled students reaches [_1].',$newcap);
+ $newval = &mt('New self-enrollment no longer allowed when total number of self-enrolled students reaches [_1].',$newcap);
}
}
$r->print(''.&mt('"[_1]" set to "[_2]".',$title,$newval).''."\n");