'."\n");
+ &update_selfenroll_config($r,$context,$permission);
}
$r->print(&Apache::loncommon::end_page());
} elsif ($env{'form.action'} eq 'changelogs') {
@@ -3104,7 +3171,7 @@ sub print_main_menu {
});
if (!exists($permission->{'cusr_section'})) {
push(@courselinks,
- { text => 'Automated Student Enrollment Manager',
+ { text => 'Automated Enrollment Manager',
help => 'Course_Automated_Enrollment',
permission => (&Apache::lonnet::auto_run($cnum,$cdom)
&& $permission->{'cusr'}),
@@ -3122,16 +3189,16 @@ sub print_main_menu {
permission => $permission->{'grp_manage'},
url => '/adm/coursegroups?refpage=cusr',
},
- { text => 'View Log-in History',
- help => 'Course_User_Logins',
- action => 'logins',
- permission => $permission->{'cusr'},
- },
{ text => 'View Change Logs',
help => 'Course_User_Logs',
action => 'changelogs',
permission => $permission->{'cusr'},
- });
+ },);
+# { text => 'View Log-in History',
+# help => 'Course_User_Logins',
+# action => 'logins',
+# permission => $permission->{'cusr'},
+# });
push(@menu,@courselinks);
}
my $menu_html = '';
@@ -3174,12 +3241,203 @@ sub print_selfenroll_menu {
my $groupslist = &Apache::lonuserutils::get_groupslist();
my $setsec_js =
&Apache::lonuserutils::setsections_javascript($formname,$groupslist);
+ my %alerts = &Apache::lonlocal::texthash(
+ acto => 'Activation of self-enrollment was selected for the following domain(s)',
+ butn => 'but no user types have been checked.',
+ wilf => "Please uncheck 'activate' or check at least one type.",
+ );
+ my $selfenroll_js = <<"ENDSCRIPT";
+function update_types(caller,num) {
+ var delidx = getIndexByName('selfenroll_delete');
+ var actidx = getIndexByName('selfenroll_activate');
+ if (caller == 'selfenroll_all') {
+ var selall;
+ for (var i=0; i 0) {
+ var msg = "$alerts{'acto'}\\n";
+ var loopend = needaction.length -1;
+ if (loopend > 0) {
+ for (var m=0; m'."\n".
- $setsec_js."\n".
+ $setsec_js."\n".$selfenroll_js."\n".
''."\n".
- '
'.$lt->{'selfenroll'}.'
'."\n".
- '';
+ ' '
+ .'';
$r->print($output);
return;
}
+sub visible_in_cat {
+ my ($cdom,$cnum) = @_;
+ my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$cdom);
+ my ($cathash,%settable,@vismsgs,$cansetvis);
+ my %visactions = &Apache::lonlocal::texthash(
+ vis => 'Your course currently appears in the Course 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.',
+ miss => 'Your course does not currently appear in the Course Catalog for this domain.',
+ yous => 'You should remedy this if you plan to allow self-enrollment, otherwise students will have difficulty finding your 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.',
+ make => 'Make any changes to self-enrollment settings below, click "Save changes", then take action to include the course in the Catalog:',
+ take => 'Take the following action to ensure the course appears in the Catalog:',
+ dc_unhide => 'Ask a domain coordinator to change the "Exclude from course catalog" setting.',
+ dc_addinst => 'Ask a domain coordinator to enable display the catalog of "Official courses (with institutional codes)".',
+ dc_instcode => 'Ask a domain coordinator to assign an institutional code (if this is an official course).',
+ dc_catalog => 'Ask a domain coordinator to enable or create at least one course category in the domain.',
+ dc_categories => 'Ask a domain coordinator to create a hierarchy of categories and sub categories for courses in the domain.',
+ dc_chgcat => 'Ask a domain coordinator to change the category assigned to the course, as the one currently assigned is no longer used in the domain',
+ dc_addcat => 'Ask a domain coordinator to assign a category to the course.',
+ );
+ $visactions{'unhide'} = &mt('Use [_1]Set course environment[_2] to change the "Exclude from course catalog" setting.','','');
+ $visactions{'chgcat'} = &mt('Use [_1]Set course environment[_2] to change the category assigned to the course, as the one currently assigned is no longer used in the domain.','','');
+ $visactions{'addcat'} = &mt('Use [_1]Set course environment[_2] to assign a category to the course.','','');
+ if (ref($domconf{'coursecategories'}) eq 'HASH') {
+ if ($domconf{'coursecategories'}{'togglecats'} eq 'crs') {
+ $settable{'togglecats'} = 1;
+ }
+ if ($domconf{'coursecategories'}{'categorize'} eq 'crs') {
+ $settable{'categorize'} = 1;
+ }
+ $cathash = $domconf{'coursecategories'}{'cats'};
+ }
+ if ($settable{'togglecats'} && $settable{'categories'}) {
+ $cansetvis = &mt('You are able to both assign a course category and choose to exclude this course from the catalog.');
+ } elsif ($settable{'togglecats'}) {
+ $cansetvis = &mt('You are able to choose to exclude this course from the catalog, but only a Domain Coordinator may assign a course category.');
+ } elsif ($settable{'categories'}) {
+ $cansetvis = &mt('You may assign a course category, but only a Domain Coordinator may choose to exclude this course from the catalog.');
+ } else {
+ $cansetvis = &mt('Only a Domain Coordinator may assign a course category or choose to exclude this course from the catalog.');
+ }
+
+ my %currsettings =
+ &Apache::lonnet::get('environment',['hidefromcat','categories','internal.coursecode'],
+ $cdom,$cnum);
+ my $visible = 0;
+ if ($currsettings{'internal.coursecode'} ne '') {
+ if (ref($domconf{'coursecategories'}) eq 'HASH') {
+ $cathash = $domconf{'coursecategories'}{'cats'};
+ if (ref($cathash) eq 'HASH') {
+ if ($cathash->{'instcode::0'} eq '') {
+ push(@vismsgs,'dc_addinst');
+ } else {
+ $visible = 1;
+ }
+ } else {
+ $visible = 1;
+ }
+ } else {
+ $visible = 1;
+ }
+ } else {
+ if (ref($cathash) eq 'HASH') {
+ if ($cathash->{'instcode::0'} ne '') {
+ push(@vismsgs,'dc_instcode');
+ }
+ } else {
+ push(@vismsgs,'dc_instcode');
+ }
+ }
+ if ($currsettings{'categories'} ne '') {
+ my $cathash;
+ if (ref($domconf{'coursecategories'}) eq 'HASH') {
+ $cathash = $domconf{'coursecategories'}{'cats'};
+ if (ref($cathash) eq 'HASH') {
+ if (keys(%{$cathash}) == 0) {
+ push(@vismsgs,'dc_catalog');
+ } elsif ((keys(%{$cathash}) == 1) && ($cathash->{'instcode::0'} ne '')) {
+ push(@vismsgs,'dc_categories');
+ } else {
+ my @currcategories = split('&',$currsettings{'categories'});
+ my $matched = 0;
+ foreach my $cat (@currcategories) {
+ if ($cathash->{$cat} ne '') {
+ $visible = 1;
+ $matched = 1;
+ last;
+ }
+ }
+ if (!$matched) {
+ if ($settable{'categories'}) {
+ push(@vismsgs,'chgcat');
+ } else {
+ push(@vismsgs,'dc_chgcat');
+ }
+ }
+ }
+ }
+ }
+ } else {
+ if (ref($cathash) eq 'HASH') {
+ if ((keys(%{$cathash}) > 1) ||
+ (keys(%{$cathash}) == 1) && ($cathash->{'instcode::0'} eq '')) {
+ if ($settable{'categories'}) {
+ push(@vismsgs,'addcat');
+ } else {
+ push(@vismsgs,'dc_addcat');
+ }
+ }
+ }
+ }
+ if ($currsettings{'hidefromcat'} eq 'yes') {
+ $visible = 0;
+ if ($settable{'togglecats'}) {
+ unshift(@vismsgs,'unhide');
+ } else {
+ unshift(@vismsgs,'dc_unhide')
+ }
+ }
+ return ($visible,$cansetvis,\@vismsgs,\%visactions);
+}
+
+sub new_selfenroll_dom_row {
+ my ($newdom,$num) = @_;
+ my $domdesc = &Apache::lonnet::domain($newdom);
+ my $output;
+ if ($domdesc ne '') {
+ $output .= &Apache::loncommon::start_data_table_row()
+ .'
'."\n");
}
}
}
@@ -4254,10 +4866,25 @@ sub update_selfenroll_config {
$r->print(&mt('An error occurred when saving changes to self-enrollment settings in this course.').' '.&mt('The error was: [_1].',$putresult));
}
} else {
- $r->print(&mt('No changes were needed 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.'));
}
} else {
- $r->print(&mt('No changes were needed 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.'));
+ }
+ my ($visible,$cansetvis,$vismsgs,$visactions) = &visible_in_cat($cdom,$cnum);
+ if (ref($visactions) eq 'HASH') {
+ if (!$visible) {
+ $r->print(' '.$visactions->{'miss'}.' '.$visactions->{'yous'}.
+ ' ');
+ if (ref($vismsgs) eq 'ARRAY') {
+ $r->print(' '.$visactions->{'take'}.'
');
+ foreach my $item (@{$vismsgs}) {
+ $r->print('
'.$visactions->{$item}.'
');
+ }
+ $r->print('
');
+ }
+ $r->print($cansetvis);
+ }
}
return;
}
@@ -4265,12 +4892,11 @@ sub update_selfenroll_config {
sub get_selfenroll_titles {
my @row = ('types','registered','enroll_dates','access_dates','section');
my %lt = &Apache::lonlocal::texthash (
- selfenroll => 'Self-enrollment with a student role',
types => 'Users allowed to self-enroll in this course',
- registered => 'Restrict self-enrollment to registered students?',
+ registered => 'Restrict self-enrollment to students officially registered for the course',
enroll_dates => 'Dates self-enrollment available',
- access_dates => 'Access dates for self-enrolled users',
- section => 'Section',
+ access_dates => 'Course access dates assigned to self-enrolling users',
+ section => 'Section assigned to self-enrolling users',
);
return (\@row,\%lt);
}