version 1.397, 2014/03/26 18:18:24
|
version 1.398, 2014/03/31 02:31:05
|
Line 4975 sub handler {
|
Line 4975 sub handler {
|
'<span class="LC_error">'.&mt('You do not have permission to modify dates or sections for users').'</span>'); |
'<span class="LC_error">'.&mt('You do not have permission to modify dates or sections for users').'</span>'); |
} |
} |
} elsif ($env{'form.action'} eq 'selfenroll') { |
} elsif ($env{'form.action'} eq 'selfenroll') { |
push(@{$brcrum}, |
if ($permission->{selfenrolladmin}) { |
{href => '/adm/createuser?action=selfenroll', |
my $cid = $env{'request.course.id'}; |
text => "Configure Self-enrollment", |
my $cdom = $env{'course.'.$cid.'.domain'}; |
help => 'Course_Self_Enrollment'}); |
my $cnum = $env{'course.'.$cid.'.num'}; |
if (!exists($env{'form.state'})) { |
my %currsettings = ( |
$args = { bread_crumbs => $brcrum, |
selfenroll_types => $env{'course.'.$cid.'.internal.selfenroll_types'}, |
bread_crumbs_component => 'Configure Self-enrollment'}; |
selfenroll_registered => $env{'course.'.$cid.'.internal.selfenroll_registered'}, |
$r->print(&header(undef,$args)); |
selfenroll_section => $env{'course.'.$cid.'.internal.selfenroll_section'}, |
$r->print('<h3>'.&mt('Self-enrollment with a student role').'</h3>'."\n"); |
selfenroll_notifylist => $env{'course.'.$cid.'.internal.selfenroll_notifylist'}, |
&print_selfenroll_menu($r,$context,$permission); |
selfenroll_approval => $env{'course.'.$cid.'.internal.selfenroll_approval'}, |
} elsif ($env{'form.state'} eq 'done') { |
selfenroll_limit => $env{'course.'.$cid.'.internal.selfenroll_limit'}, |
push (@{$brcrum}, |
selfenroll_cap => $env{'course.'.$cid.'.internal.selfenroll_cap'}, |
{href=>'/adm/createuser?action=selfenroll', |
selfenroll_start_date => $env{'course.'.$cid.'.internal.selfenroll_start_date'}, |
text=>"Result"}); |
selfenroll_end_date => $env{'course.'.$cid.'.internal.selfenroll_end_date'}, |
$args = { bread_crumbs => $brcrum, |
selfenroll_start_access => $env{'course.'.$cid.'.internal.selfenroll_start_access'}, |
bread_crumbs_component => 'Self-enrollment result'}; |
selfenroll_end_access => $env{'course.'.$cid.'.internal.selfenroll_end_access'}, |
$r->print(&header(undef,$args)); |
default_enrollment_start_date => $env{'course.'.$cid.'.default_enrollment_start_date'}, |
$r->print('<h3>'.&mt('Self-enrollment with a student role').'</h3>'."\n"); |
default_enrollment_end_date => $env{'course.'.$cid.'.default_enrollment_end_date'}, |
&update_selfenroll_config($r,$context,$permission); |
); |
|
push(@{$brcrum}, |
|
{href => '/adm/createuser?action=selfenroll', |
|
text => "Configure Self-enrollment", |
|
help => 'Course_Self_Enrollment'}); |
|
if (!exists($env{'form.state'})) { |
|
$args = { bread_crumbs => $brcrum, |
|
bread_crumbs_component => 'Configure Self-enrollment'}; |
|
$r->print(&header(undef,$args)); |
|
$r->print('<h3>'.&mt('Self-enrollment with a student role').'</h3>'."\n"); |
|
&print_selfenroll_menu($r,'course',$cid,$cdom,$cnum,\%currsettings); |
|
} elsif ($env{'form.state'} eq 'done') { |
|
push (@{$brcrum}, |
|
{href=>'/adm/createuser?action=selfenroll', |
|
text=>"Result"}); |
|
$args = { bread_crumbs => $brcrum, |
|
bread_crumbs_component => 'Self-enrollment result'}; |
|
$r->print(&header(undef,$args)); |
|
$r->print('<h3>'.&mt('Self-enrollment with a student role').'</h3>'."\n"); |
|
&update_selfenroll_config($r,$cid,$cdom,$cnum,\%currsettings); |
|
} |
|
} else { |
|
$r->print(&header(undef,{'no_nav_bar' => 1}). |
|
'<span class="LC_error">'.&mt('You do not have permission to configure self-enrollment').'</span>'); |
} |
} |
} elsif ($env{'form.action'} eq 'selfenrollqueue') { |
} elsif ($env{'form.action'} eq 'selfenrollqueue') { |
push(@{$brcrum}, |
push(@{$brcrum}, |
Line 5443 sub print_main_menu {
|
Line 5466 sub print_main_menu {
|
); |
); |
if ($env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_approval'}) { |
if ($env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_approval'}) { |
push(@{ $menu[2]->{items} }, |
push(@{ $menu[2]->{items} }, |
{ |
{ |
linktext => 'Enrollment Requests', |
linktext => 'Enrollment Requests', |
icon => 'selfenrl-queue.png', |
icon => 'selfenrl-queue.png', |
#help => 'Course_Approve_Selfenroll', |
#help => 'Course_Approve_Selfenroll', |
url => '/adm/createuser?action=selfenrollqueue', |
url => '/adm/createuser?action=selfenrollqueue', |
permission => $permission->{'cusr'}, |
permission => $permission->{'selfenrolladmin'}, |
linktitle =>'Approve or reject enrollment requests.', |
linktitle =>'Approve or reject enrollment requests.', |
}, |
}, |
); |
); |
Line 5474 sub print_main_menu {
|
Line 5497 sub print_main_menu {
|
icon => 'self_enroll.png', |
icon => 'self_enroll.png', |
#help => 'Course_Self_Enrollment', |
#help => 'Course_Self_Enrollment', |
url => '/adm/createuser?action=selfenroll', |
url => '/adm/createuser?action=selfenroll', |
permission => $permission->{'cusr'}, |
permission => $permission->{'selfenrolladmin'}, |
linktitle => 'Configure user self-enrollment.', |
linktitle => 'Configure user self-enrollment.', |
}, |
}, |
); |
); |
Line 5511 sub restore_prev_selections {
|
Line 5534 sub restore_prev_selections {
|
} |
} |
|
|
sub print_selfenroll_menu { |
sub print_selfenroll_menu { |
my ($r,$context,$permission) = @_; |
my ($r,$context,$cid,$cdom,$cnum,$currsettings,$additional) = @_; |
my $crstype = &Apache::loncommon::course_type(); |
my $crstype = &Apache::loncommon::course_type(); |
my $formname = 'enrollstudent'; |
my $formname = 'selfenroll'; |
my $nolink = 1; |
my $nolink = 1; |
my ($row,$lt) = &get_selfenroll_titles(); |
my ($row,$lt) = &Apache::lonuserutils::get_selfenroll_titles(); |
my $groupslist = &Apache::lonuserutils::get_groupslist(); |
my $groupslist = &Apache::lonuserutils::get_groupslist(); |
my $setsec_js = |
my $setsec_js = |
&Apache::lonuserutils::setsections_javascript($formname,$groupslist); |
&Apache::lonuserutils::setsections_javascript($formname,$groupslist); |
Line 5634 function validate_types(form) {
|
Line 5657 function validate_types(form) {
|
} |
} |
} else { |
} else { |
if (document.$formname.selfenroll_activate.checked) { |
if (document.$formname.selfenroll_activate.checked) { |
var num = document.enrollstudent.selfenroll_activate.value; |
var num = document.$formname.selfenroll_activate.value; |
countfail = check_types(num,countfail,needaction) |
countfail = check_types(num,countfail,needaction) |
} |
} |
} |
} |
Line 5681 function check_types(num,countfail,needa
|
Line 5704 function check_types(num,countfail,needa
|
return countfail; |
return countfail; |
} |
} |
|
|
|
function toggleNotify() { |
|
var selfenrollApproval = 0; |
|
if (document.$formname.selfenroll_approval.length) { |
|
for (var i=0; i<document.$formname.selfenroll_approval.length; i++) { |
|
if (document.$formname.selfenroll_approval[i].checked) { |
|
selfenrollApproval = document.$formname.selfenroll_approval[i].value; |
|
break; |
|
} |
|
} |
|
} |
|
if (document.getElementById('notified')) { |
|
if (selfenrollApproval == 0) { |
|
document.getElementById('notified').style.display='none'; |
|
} else { |
|
document.getElementById('notified').style.display='block'; |
|
} |
|
} |
|
return; |
|
} |
|
|
function getIndexByName(item) { |
function getIndexByName(item) { |
for (var i=0;i<document.$formname.elements.length;i++) { |
for (var i=0;i<document.$formname.elements.length;i++) { |
if (document.$formname.elements[i].name == item) { |
if (document.$formname.elements[i].name == item) { |
Line 5690 function getIndexByName(item) {
|
Line 5733 function getIndexByName(item) {
|
return -1; |
return -1; |
} |
} |
ENDSCRIPT |
ENDSCRIPT |
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
|
|
my $output = '<script type="text/javascript">'."\n". |
my $output = '<script type="text/javascript">'."\n". |
'// <![CDATA['."\n". |
'// <![CDATA['."\n". |
Line 5717 ENDSCRIPT
|
Line 5758 ENDSCRIPT
|
$output .= '</p>'; |
$output .= '</p>'; |
} |
} |
} |
} |
$output .= '<form name="'.$formname.'" method="post" action="/adm/createuser">'."\n". |
my $actionhref = '/adm/createuser'; |
|
if ($context eq 'domain') { |
|
$actionhref = '/adm/modifycourse'; |
|
} |
|
$output .= '<form name="'.$formname.'" method="post" action="'.$actionhref.'">'."\n". |
&Apache::lonhtmlcommon::start_pick_box(); |
&Apache::lonhtmlcommon::start_pick_box(); |
if (ref($row) eq 'ARRAY') { |
if (ref($row) eq 'ARRAY') { |
foreach my $item (@{$row}) { |
foreach my $item (@{$row}) { |
Line 5727 ENDSCRIPT
|
Line 5772 ENDSCRIPT
|
} |
} |
$output .= &Apache::lonhtmlcommon::row_title($title); |
$output .= &Apache::lonhtmlcommon::row_title($title); |
if ($item eq 'types') { |
if ($item eq 'types') { |
my $curr_types = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_types'}; |
my $curr_types; |
|
if (ref($currsettings) eq 'HASH') { |
|
$curr_types = $currsettings->{'selfenroll_types'}; |
|
} |
my $showdomdesc = 1; |
my $showdomdesc = 1; |
my $includeempty = 1; |
my $includeempty = 1; |
my $num = 0; |
my $num = 0; |
Line 5792 ENDSCRIPT
|
Line 5840 ENDSCRIPT
|
.&Apache::loncommon::end_data_table(); |
.&Apache::loncommon::end_data_table(); |
} elsif ($item eq 'registered') { |
} elsif ($item eq 'registered') { |
my ($regon,$regoff); |
my ($regon,$regoff); |
if ($env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_registered'}) { |
my $registered; |
|
if (ref($currsettings) eq 'HASH') { |
|
$registered = $currsettings->{'selfenroll_registered'}; |
|
} |
|
if ($registered) { |
$regon = ' checked="checked" '; |
$regon = ' checked="checked" '; |
$regoff = ' '; |
$regoff = ' '; |
} else { |
} else { |
Line 5805 ENDSCRIPT
|
Line 5857 ENDSCRIPT
|
'<input type="radio" name="selfenroll_registered" value="0"'.$regoff.'/>'. |
'<input type="radio" name="selfenroll_registered" value="0"'.$regoff.'/>'. |
&mt('No').'</label>'; |
&mt('No').'</label>'; |
} elsif ($item eq 'enroll_dates') { |
} elsif ($item eq 'enroll_dates') { |
my $starttime = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_start_date'}; |
my ($starttime,$endtime); |
my $endtime = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_end_date'}; |
if (ref($currsettings) eq 'HASH') { |
if ($starttime eq '') { |
$starttime = $currsettings->{'selfenroll_start_date'}; |
$starttime = $env{'course.'.$env{'request.course.id'}.'.default_enrollment_start_date'}; |
$endtime = $currsettings->{'selfenroll_end_date'}; |
} |
if ($starttime eq '') { |
if ($endtime eq '') { |
$starttime = $currsettings->{'default_enrollment_start_date'}; |
$endtime = $env{'course.'.$env{'request.course.id'}.'.default_enrollment_end_date'}; |
} |
|
if ($endtime eq '') { |
|
$endtime = $currsettings->{'default_enrollment_end_date'}; |
|
} |
} |
} |
my $startform = |
my $startform = |
&Apache::lonhtmlcommon::date_setter($formname,'selfenroll_start_date',$starttime, |
&Apache::lonhtmlcommon::date_setter($formname,'selfenroll_start_date',$starttime, |
Line 5821 ENDSCRIPT
|
Line 5876 ENDSCRIPT
|
undef,undef,undef,undef,undef,undef,undef,$nolink); |
undef,undef,undef,undef,undef,undef,undef,$nolink); |
$output .= &selfenroll_date_forms($startform,$endform); |
$output .= &selfenroll_date_forms($startform,$endform); |
} elsif ($item eq 'access_dates') { |
} elsif ($item eq 'access_dates') { |
my $starttime = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_start_access'}; |
my ($starttime,$endtime); |
my $endtime = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_end_access'}; |
if (ref($currsettings) eq 'HASH') { |
if ($starttime eq '') { |
$starttime = $currsettings->{'selfenroll_start_access'}; |
$starttime = $env{'course.'.$env{'request.course.id'}.'.default_enrollment_start_date'}; |
$endtime = $currsettings->{'selfenroll_end_access'}; |
} |
if ($starttime eq '') { |
if ($endtime eq '') { |
$starttime = $currsettings->{'default_enrollment_start_date'}; |
$endtime = $env{'course.'.$env{'request.course.id'}.'.default_enrollment_end_date'}; |
} |
|
if ($endtime eq '') { |
|
$endtime = $currsettings->{'default_enrollment_end_date'}; |
|
} |
} |
} |
my $startform = |
my $startform = |
&Apache::lonhtmlcommon::date_setter($formname,'selfenroll_start_access',$starttime, |
&Apache::lonhtmlcommon::date_setter($formname,'selfenroll_start_access',$starttime, |
Line 5837 ENDSCRIPT
|
Line 5895 ENDSCRIPT
|
undef,undef,undef,undef,undef,undef,undef,$nolink); |
undef,undef,undef,undef,undef,undef,undef,$nolink); |
$output .= &selfenroll_date_forms($startform,$endform); |
$output .= &selfenroll_date_forms($startform,$endform); |
} elsif ($item eq 'section') { |
} elsif ($item eq 'section') { |
my $currsec = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_section'}; |
my $currsec; |
|
if (ref($currsettings) eq 'HASH') { |
|
$currsec = $currsettings->{'selfenroll_section'}; |
|
} |
my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum); |
my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum); |
my $newsecval; |
my $newsecval; |
if ($currsec ne 'none' && $currsec ne '') { |
if ($currsec ne 'none' && $currsec ne '') { |
Line 5857 ENDSCRIPT
|
Line 5918 ENDSCRIPT
|
'<input type="hidden" name="state" value="done" />'."\n". |
'<input type="hidden" name="state" value="done" />'."\n". |
'</td></tr></table>'."\n"; |
'</td></tr></table>'."\n"; |
} elsif ($item eq 'approval') { |
} elsif ($item eq 'approval') { |
my ($appon,$appoff); |
my ($currnotified,$currapproval,%appchecked); |
my $cid = $env{'request.course.id'}; |
my %selfdescs = &Apache::lonuserutils::selfenroll_default_descs(); |
my $currnotified = $env{'course.'.$cid.'.internal.selfenroll_notifylist'}; |
if (ref($currsettings) eq 'HASH') { |
if ($env{'course.'.$cid.'.internal.selfenroll_approval'}) { |
$currnotified = $currsettings->{'selfenroll_notifylist'}; |
$appon = ' checked="checked" '; |
$currapproval = $currsettings->{'selfenroll_approval'}; |
$appoff = ' '; |
} |
} else { |
if ($currapproval !~ /^[012]$/) { |
$appon = ' '; |
$currapproval = 0; |
$appoff = ' checked="checked" '; |
} |
|
$appchecked{$currapproval} = ' checked="checked"'; |
|
for my $i (0..2) { |
|
$output .= '<label>'. |
|
'<input type="radio" name="selfenroll_approval" value="'.$i.'"'. |
|
$appchecked{$i}.' onclick="toggleNotify();" />'.$selfdescs{'approval'}{$i}. |
|
'</label>'.(' 'x2); |
} |
} |
$output .= '<label>'. |
|
'<input type="radio" name="selfenroll_approval" value="1"'.$appon.'/>'. |
|
&mt('Yes').'</label> <label>'. |
|
'<input type="radio" name="selfenroll_approval" value="0"'.$appoff.'/>'. |
|
&mt('No').'</label>'; |
|
my %advhash = &Apache::lonnet::get_course_adv_roles($cid,1); |
my %advhash = &Apache::lonnet::get_course_adv_roles($cid,1); |
my (@ccs,%notified); |
my (@ccs,%notified); |
my $ccrole = 'cc'; |
my $ccrole = 'cc'; |
Line 5890 ENDSCRIPT
|
Line 5952 ENDSCRIPT
|
} |
} |
} |
} |
if (@ccs) { |
if (@ccs) { |
$output .= '<br />'.&mt('Personnel to be notified when an enrollment request needs approval, or has been approved:').' '.&Apache::loncommon::start_data_table(). |
my $style; |
|
unless ($currapproval) { |
|
$style = ' style="display: none;"'; |
|
} |
|
$output .= '<br /><div id="notified"'.$style.'>'. |
|
&mt('Personnel to be notified when an enrollment request needs approval, or has been approved:').' '. |
|
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table_row(); |
&Apache::loncommon::start_data_table_row(); |
my $count = 0; |
my $count = 0; |
my $numcols = 4; |
my $numcols = 4; |
Line 5918 ENDSCRIPT
|
Line 5986 ENDSCRIPT
|
} |
} |
} |
} |
$output .= &Apache::loncommon::end_data_table_row(). |
$output .= &Apache::loncommon::end_data_table_row(). |
&Apache::loncommon::end_data_table(); |
&Apache::loncommon::end_data_table(). |
|
'</div>'; |
} |
} |
} elsif ($item eq 'limit') { |
} elsif ($item eq 'limit') { |
my ($crslimit,$selflimit,$nolimit); |
my ($crslimit,$selflimit,$nolimit,$currlim,$currcap); |
my $cid = $env{'request.course.id'}; |
if (ref($currsettings) eq 'HASH') { |
my $currlim = $env{'course.'.$cid.'.internal.selfenroll_limit'}; |
$currlim = $currsettings->{'selfenroll_limit'}; |
my $currcap = $env{'course.'.$cid.'.internal.selfenroll_cap'}; |
$currcap = $currsettings->{'selfenroll_cap'}; |
$nolimit = ' checked="checked" '; |
} |
if ($currlim eq 'allstudents') { |
if ($currlim eq 'allstudents') { |
$crslimit = ' checked="checked" '; |
$crslimit = ' checked="checked" '; |
$selflimit = ' '; |
$selflimit = ' '; |
Line 5937 ENDSCRIPT
|
Line 6006 ENDSCRIPT
|
} else { |
} else { |
$crslimit = ' '; |
$crslimit = ' '; |
$selflimit = ' '; |
$selflimit = ' '; |
|
$nolimit = ' checked="checked" '; |
} |
} |
$output .= '<table><tr><td><label>'. |
$output .= '<table><tr><td><label>'. |
'<input type="radio" name="selfenroll_limit" value="none"'.$nolimit.'/>'. |
'<input type="radio" name="selfenroll_limit" value="none"'.$nolimit.'/>'. |
Line 5956 ENDSCRIPT
|
Line 6026 ENDSCRIPT
|
$output .= &Apache::lonhtmlcommon::end_pick_box(). |
$output .= &Apache::lonhtmlcommon::end_pick_box(). |
'<br /><input type="button" name="selfenrollconf" value="' |
'<br /><input type="button" name="selfenrollconf" value="' |
.&mt('Save').'" onclick="validate_types(this.form);" />' |
.&mt('Save').'" onclick="validate_types(this.form);" />' |
.'<input type="hidden" name="action" value="selfenroll" /></form>'; |
.'<input type="hidden" name="action" value="selfenroll" />'. |
|
$additional.'</form>'; |
$r->print($output); |
$r->print($output); |
return; |
return; |
} |
} |
Line 5966 sub visible_in_cat {
|
Line 6037 sub visible_in_cat {
|
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom); |
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom); |
my ($cathash,%settable,@vismsgs,$cansetvis); |
my ($cathash,%settable,@vismsgs,$cansetvis); |
my %visactions = &Apache::lonlocal::texthash( |
my %visactions = &Apache::lonlocal::texthash( |
vis => 'Your course/community currently appears in the Course/Community Catalog for this domain.', |
vis => 'This course/community currently appears in the Course/Community Catalog for this domain.', |
gen => 'Courses can be both self-cataloging, based on an institutional code (e.g., fs08phy231), or can be assigned categories from a hierarchy defined for the domain.', |
gen => 'Courses can be both self-cataloging, based on an institutional code (e.g., fs08phy231), or can be assigned categories from a hierarchy defined for the domain.', |
miss => 'Your course/community does not currently appear in the Course/Community Catalog for this domain.', |
miss => 'This course/community does not currently appear in the Course/Community Catalog for this domain.', |
yous => 'You should remedy this if you plan to allow self-enrollment, otherwise students will have difficulty finding your course.', |
yous => 'You should remedy this if you plan to allow self-enrollment, otherwise students will have difficulty finding this course.', |
coca => 'Courses can be absent from the Catalog, because they do not have an institutional code, have no assigned category, or have been specifically excluded.', |
coca => 'Courses can be absent from the Catalog, because they do not have an institutional code, have no assigned category, or have been specifically excluded.', |
make => 'Make any changes to self-enrollment settings below, click "Save", then take action to include the course in the Catalog:', |
make => 'Make any changes to self-enrollment settings below, click "Save", then take action to include the course in the Catalog:', |
take => 'Take the following action to ensure the course appears in the Catalog:', |
take => 'Take the following action to ensure the course appears in the Catalog:', |
Line 7265 ENDTIMEENTRY
|
Line 7336 ENDTIMEENTRY
|
} |
} |
|
|
sub update_selfenroll_config { |
sub update_selfenroll_config { |
my ($r,$context,$permission) = @_; |
my ($r,$cid,$cdom,$cnum,$currsettings) = @_; |
my ($row,$lt) = &get_selfenroll_titles(); |
return unless (ref($currsettings) eq 'HASH'); |
my %curr_groups = &Apache::longroup::coursegroups(); |
my ($row,$lt) = &Apache::lonuserutils::get_selfenroll_titles(); |
|
my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum); |
my (%changes,%warning); |
my (%changes,%warning); |
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $curr_types; |
my $curr_types; |
if (ref($row) eq 'ARRAY') { |
if (ref($row) eq 'ARRAY') { |
foreach my $item (@{$row}) { |
foreach my $item (@{$row}) { |
if ($item eq 'enroll_dates') { |
if ($item eq 'enroll_dates') { |
my (%currenrolldate,%newenrolldate); |
my (%currenrolldate,%newenrolldate); |
foreach my $type ('start','end') { |
foreach my $type ('start','end') { |
$currenrolldate{$type} = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_'.$type.'_date'}; |
$currenrolldate{$type} = $currsettings->{'selfenroll_'.$type.'_date'}; |
$newenrolldate{$type} = &Apache::lonhtmlcommon::get_date_from_form('selfenroll_'.$type.'_date'); |
$newenrolldate{$type} = &Apache::lonhtmlcommon::get_date_from_form('selfenroll_'.$type.'_date'); |
if ($newenrolldate{$type} ne $currenrolldate{$type}) { |
if ($newenrolldate{$type} ne $currenrolldate{$type}) { |
$changes{'internal.selfenroll_'.$type.'_date'} = $newenrolldate{$type}; |
$changes{'internal.selfenroll_'.$type.'_date'} = $newenrolldate{$type}; |
Line 7286 sub update_selfenroll_config {
|
Line 7356 sub update_selfenroll_config {
|
} elsif ($item eq 'access_dates') { |
} elsif ($item eq 'access_dates') { |
my (%currdate,%newdate); |
my (%currdate,%newdate); |
foreach my $type ('start','end') { |
foreach my $type ('start','end') { |
$currdate{$type} = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_'.$type.'_access'}; |
$currdate{$type} = $currsettings->{'selfenroll_'.$type.'_access'}; |
$newdate{$type} = &Apache::lonhtmlcommon::get_date_from_form('selfenroll_'.$type.'_access'); |
$newdate{$type} = &Apache::lonhtmlcommon::get_date_from_form('selfenroll_'.$type.'_access'); |
if ($newdate{$type} ne $currdate{$type}) { |
if ($newdate{$type} ne $currdate{$type}) { |
$changes{'internal.selfenroll_'.$type.'_access'} = $newdate{$type}; |
$changes{'internal.selfenroll_'.$type.'_access'} = $newdate{$type}; |
} |
} |
} |
} |
} elsif ($item eq 'types') { |
} elsif ($item eq 'types') { |
$curr_types = |
$curr_types = $currsettings->{'selfenroll_'.$item}; |
$env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_'.$item}; |
|
if ($env{'form.selfenroll_all'}) { |
if ($env{'form.selfenroll_all'}) { |
if ($curr_types ne '*') { |
if ($curr_types ne '*') { |
$changes{'internal.selfenroll_types'} = '*'; |
$changes{'internal.selfenroll_types'} = '*'; |
Line 7363 sub update_selfenroll_config {
|
Line 7432 sub update_selfenroll_config {
|
my $newlimit = $env{'form.selfenroll_limit'}; |
my $newlimit = $env{'form.selfenroll_limit'}; |
my $newcap = $env{'form.selfenroll_cap'}; |
my $newcap = $env{'form.selfenroll_cap'}; |
$newcap =~s/\s+//g; |
$newcap =~s/\s+//g; |
my $currlimit = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_limit'}; |
my $currlimit = $currsettings->{'selfenroll_limit'}; |
$currlimit = 'none' if ($currlimit eq ''); |
$currlimit = 'none' if ($currlimit eq ''); |
my $currcap = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_cap'}; |
my $currcap = $currsettings->{'selfenroll_cap'}; |
if ($newlimit ne $currlimit) { |
if ($newlimit ne $currlimit) { |
if ($newlimit ne 'none') { |
if ($newlimit ne 'none') { |
if ($newcap =~ /^\d+$/) { |
if ($newcap =~ /^\d+$/) { |
Line 7374 sub update_selfenroll_config {
|
Line 7443 sub update_selfenroll_config {
|
} |
} |
$changes{'internal.selfenroll_limit'} = $newlimit; |
$changes{'internal.selfenroll_limit'} = $newlimit; |
} else { |
} else { |
$warning{$item} = &mt('Maximum enrollment setting unchanged.').'<br />'.&mt('The value provided was invalid - it must be a positive integer if enrollment is being limited.'); |
$warning{$item} = &mt('Maximum enrollment setting unchanged.').'<br />'. |
|
&mt('The value provided was invalid - it must be a positive integer if enrollment is being limited.'); |
} |
} |
} elsif ($currcap ne '') { |
} elsif ($currcap ne '') { |
$changes{'internal.selfenroll_cap'} = ''; |
$changes{'internal.selfenroll_cap'} = ''; |
Line 7386 sub update_selfenroll_config {
|
Line 7456 sub update_selfenroll_config {
|
$changes{'internal.selfenroll_cap'} = $newcap; |
$changes{'internal.selfenroll_cap'} = $newcap; |
} |
} |
} else { |
} else { |
$warning{$item} = &mt('Maximum enrollment setting unchanged.').'<br />'.&mt('The value provided was invalid - it must be a positive integer if enrollment is being limited.'); |
$warning{$item} = &mt('Maximum enrollment setting unchanged.').'<br />'. |
|
&mt('The value provided was invalid - it must be a positive integer if enrollment is being limited.'); |
} |
} |
} |
} |
} elsif ($item eq 'approval') { |
} elsif ($item eq 'approval') { |
my (@currnotified,@newnotified); |
my (@currnotified,@newnotified); |
my $currapproval = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_approval'}; |
my $currapproval = $currsettings->{'selfenroll_approval'}; |
my $currnotifylist = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_notifylist'}; |
my $currnotifylist = $currsettings->{'selfenroll_notifylist'}; |
if ($currnotifylist ne '') { |
if ($currnotifylist ne '') { |
@currnotified = split(/,/,$currnotifylist); |
@currnotified = split(/,/,$currnotifylist); |
@currnotified = sort(@currnotified); |
@currnotified = sort(@currnotified); |
Line 7428 sub update_selfenroll_config {
|
Line 7499 sub update_selfenroll_config {
|
} |
} |
} |
} |
} else { |
} else { |
my $curr_val = |
my $curr_val = $currsettings->{'selfenroll_'.$item}; |
$env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_'.$item}; |
|
my $newval = $env{'form.selfenroll_'.$item}; |
my $newval = $env{'form.selfenroll_'.$item}; |
if ($item eq 'section') { |
if ($item eq 'section') { |
$newval = $env{'form.sections'}; |
$newval = $env{'form.sections'}; |
if (defined($curr_groups{$newval})) { |
if (defined($curr_groups{$newval})) { |
$newval = $curr_val; |
$newval = $curr_val; |
$warning{$item} = &mt('Section for self-enrolled users unchanged as the proposed section is a group').'<br />'.&mt('Group names and section names must be distinct'); |
$warning{$item} = &mt('Section for self-enrolled users unchanged as the proposed section is a group').'<br />'. |
|
&mt('Group names and section names must be distinct'); |
} elsif ($newval eq 'all') { |
} elsif ($newval eq 'all') { |
$newval = $curr_val; |
$newval = $curr_val; |
$warning{$item} = &mt('Section for self-enrolled users unchanged, as "all" is a reserved section name.'); |
$warning{$item} = &mt('Section for self-enrolled users unchanged, as "all" is a reserved section name.'); |
Line 7465 sub update_selfenroll_config {
|
Line 7536 sub update_selfenroll_config {
|
my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.', |
my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.', |
$cnum,undef,undef,'Course'); |
$cnum,undef,undef,'Course'); |
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
if (ref($crsinfo{$env{'request.course.id'}}) eq 'HASH') { |
if (ref($crsinfo{$cid}) eq 'HASH') { |
foreach my $item ('selfenroll_types','selfenroll_start_date','selfenroll_end_date') { |
foreach my $item ('selfenroll_types','selfenroll_start_date','selfenroll_end_date') { |
if (exists($changes{'internal.'.$item})) { |
if (exists($changes{'internal.'.$item})) { |
$crsinfo{$env{'request.course.id'}}{$item} = |
$crsinfo{$cid}{$item} = $changes{'internal.'.$item}; |
$changes{'internal.'.$item}; |
|
} |
} |
} |
} |
my $crsputresult = |
my $crsputresult = |
Line 7506 sub update_selfenroll_config {
|
Line 7576 sub update_selfenroll_config {
|
if ($changes{'internal.selfenroll_cap'} ne '') { |
if ($changes{'internal.selfenroll_cap'} ne '') { |
$newcap = $changes{'internal.selfenroll_cap'} |
$newcap = $changes{'internal.selfenroll_cap'} |
} else { |
} else { |
$newcap = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_cap'}; |
$newcap = $currsettings->{'selfenroll_cap'}; |
} |
} |
if ($changes{'internal.selfenroll_limit'} eq 'none') { |
if ($changes{'internal.selfenroll_limit'} eq 'none') { |
$newval = &mt('No limit'); |
$newval = &mt('No limit'); |
Line 7516 sub update_selfenroll_config {
|
Line 7586 sub update_selfenroll_config {
|
} elsif ($changes{'internal.selfenroll_limit'} eq 'selfenrolled') { |
} elsif ($changes{'internal.selfenroll_limit'} eq 'selfenrolled') { |
$newval = &mt('New self-enrollment no longer allowed when total number 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); |
} else { |
} else { |
my $currlimit = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_limit'}; |
my $currlimit = $currsettings->{'selfenroll_limit'}; |
if ($currlimit eq 'allstudents') { |
if ($currlimit eq 'allstudents') { |
$newval = &mt('New self-enrollment no longer allowed when total (all students) reaches [_1].',$newcap); |
$newval = &mt('New self-enrollment no longer allowed when total (all students) reaches [_1].',$newcap); |
} elsif ($changes{'internal.selfenroll_limit'} eq 'selfenrolled') { |
} elsif ($changes{'internal.selfenroll_limit'} eq 'selfenrolled') { |
Line 7528 sub update_selfenroll_config {
|
Line 7598 sub update_selfenroll_config {
|
} elsif ($item eq 'approval') { |
} elsif ($item eq 'approval') { |
if ((exists($changes{'internal.selfenroll_approval'})) || |
if ((exists($changes{'internal.selfenroll_approval'})) || |
(exists($changes{'internal.selfenroll_notifylist'}))) { |
(exists($changes{'internal.selfenroll_notifylist'}))) { |
|
my %selfdescs = &Apache::lonuserutils::selfenroll_default_descs(); |
my ($newval,$newnotify); |
my ($newval,$newnotify); |
if (exists($changes{'internal.selfenroll_notifylist'})) { |
if (exists($changes{'internal.selfenroll_notifylist'})) { |
$newnotify = $changes{'internal.selfenroll_notifylist'}; |
$newnotify = $changes{'internal.selfenroll_notifylist'}; |
} else { |
} else { |
$newnotify = $env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_notifylist'}; |
$newnotify = $currsettings->{'selfenroll_notifylist'}; |
} |
} |
if ($changes{'internal.selfenroll_approval'}) { |
if (exists($changes{'internal.selfenroll_approval'})) { |
$newval = &mt('Yes'); |
if ($changes{'internal.selfenroll_approval'} !~ /^[012]$/) { |
} elsif ($changes{'internal.selfenroll_approval'} eq '0') { |
$changes{'internal.selfenroll_approval'} = '0'; |
$newval = &mt('No'); |
} |
|
$newval = $selfdescs{'approval'}{$changes{'internal.selfenroll_approval'}}; |
} else { |
} else { |
my $currapproval = |
my $currapproval = $currsettings->{'selfenroll_approval'}; |
$env{'course.'.$env{'request.course.id'}.'.internal.selfenroll_approval'}; |
if ($currapproval !~ /^[012]$/) { |
if ($currapproval) { |
$currapproval = 0; |
$newval = &mt('Yes'); |
|
} else { |
|
$newval = &mt('No'); |
|
} |
} |
|
$newval = $selfdescs{'approval'}{$currapproval}; |
} |
} |
$r->print('<li>'.&mt('"[_1]" set to "[_2]".',$title,$newval)); |
$r->print('<li>'.&mt('"[_1]" set to "[_2]".',$title,$newval)); |
if ($newnotify) { |
if ($newnotify) { |
Line 7576 sub update_selfenroll_config {
|
Line 7646 sub update_selfenroll_config {
|
} |
} |
} |
} |
$r->print('</ul>'); |
$r->print('</ul>'); |
my %newenvhash; |
if ($env{'course.'.$cid.'.description'} ne '') { |
foreach my $key (keys(%changes)) { |
my %newenvhash; |
$newenvhash{'course.'.$env{'request.course.id'}.'.'.$key} = $changes{$key}; |
foreach my $key (keys(%changes)) { |
|
$newenvhash{'course.'.$cid.'.'.$key} = $changes{$key}; |
|
} |
|
&Apache::lonnet::appenv(\%newenvhash); |
} |
} |
&Apache::lonnet::appenv(\%newenvhash); |
|
} else { |
} else { |
$r->print(&mt('An error occurred when saving changes to self-enrollment settings in this course.').'<br />'.&mt('The error was: [_1].',$putresult)); |
$r->print(&mt('An error occurred when saving changes to self-enrollment settings in this course.').'<br />'. |
|
&mt('The error was: [_1].',$putresult)); |
} |
} |
} else { |
} else { |
$r->print(&mt('No changes were made to the existing self-enrollment settings in this course.')); |
$r->print(&mt('No changes were made to the existing self-enrollment settings in this course.')); |
Line 7608 sub update_selfenroll_config {
|
Line 7681 sub update_selfenroll_config {
|
return; |
return; |
} |
} |
|
|
sub get_selfenroll_titles { |
|
my @row = ('types','registered','enroll_dates','access_dates','section', |
|
'approval','limit'); |
|
my %lt = &Apache::lonlocal::texthash ( |
|
types => 'Users allowed to self-enroll in this course', |
|
registered => 'Restrict self-enrollment to students officially registered for the course', |
|
enroll_dates => 'Dates self-enrollment available', |
|
access_dates => 'Course access dates assigned to self-enrolling users', |
|
section => 'Section assigned to self-enrolling users', |
|
approval => 'Self-enrollment requests need approval?', |
|
limit => 'Enrollment limit', |
|
); |
|
return (\@row,\%lt); |
|
} |
|
|
|
#---------------------------------------------- end functions for &phase_two |
#---------------------------------------------- end functions for &phase_two |
|
|
#--------------------------------- functions for &phase_two and &phase_three |
#--------------------------------- functions for &phase_two and &phase_three |