--- loncom/interface/lonmodifycourse.pm 2014/03/31 01:37:28 1.71
+++ loncom/interface/lonmodifycourse.pm 2014/07/31 15:45:27 1.74
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# handler for DC-only modifiable course settings
#
-# $Id: lonmodifycourse.pm,v 1.71 2014/03/31 01:37:28 raeburn Exp $
+# $Id: lonmodifycourse.pm,v 1.74 2014/07/31 15:45:27 musolffc Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -34,16 +34,17 @@ use Apache::loncommon;
use Apache::lonhtmlcommon;
use Apache::lonlocal;
use Apache::lonuserutils;
+use Apache::loncreateuser;
use Apache::lonpickcourse;
use lib '/home/httpd/lib/perl';
-use LONCAPA;
+use LONCAPA qw(:DEFAULT :match);
sub get_dc_settable {
my ($type,$cdom) = @_;
if ($type eq 'Community') {
- return ('courseowner');
+ return ('courseowner','selfenrollmgrdc','selfenrollmgrcc');
} else {
- my @items = ('courseowner','coursecode','authtype','autharg');
+ my @items = ('courseowner','coursecode','authtype','autharg','selfenrollmgrdc','selfenrollmgrcc');
if (&showcredits($cdom)) {
push(@items,'defaultcredits');
}
@@ -122,6 +123,8 @@ sub get_enrollment_settings {
if (&showcredits($cdom)) {
$enrollvar{$type} = $settings{$item};
}
+ } elsif ($type eq 'selfenrollmgr') {
+ $enrollvar{$type} = $settings{$item};
} elsif ($type eq 'courseowner') {
if ($settings{$item} =~ /^[^:]+:[^:]+$/) {
$enrollvar{$type} = $settings{$item};
@@ -252,9 +255,9 @@ sub print_modification_menu {
$setquota_text = &mt('Total disk space allocated for storage of portfolio files in all groups in a course.');
$setuploadquota_text = &mt('Disk space allocated for storage of content uploaded directly to a course via Content Editor.');
if (&showcredits($dom)) {
- $setparams_text = 'View/Modify course owner, institutional code, and default authentication and credits';
+ $setparams_text = 'View/Modify course owner, institutional code, default authentication, credits, and self-enrollment';
} else {
- $setparams_text = 'View/Modify course owner, institutional code, and default authentication';
+ $setparams_text = 'View/Modify course owner, institutional code, default authentication, and self-enrollment';
}
$cat_text = 'View/Modify catalog settings for course';
}
@@ -263,6 +266,17 @@ sub print_modification_menu {
my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$dom);
my @additional_params = &catalog_settable($domconf{'coursecategories'},$type);
+ sub manage_selfenrollment {
+ my ($cdom,$cnum,$type,$coursehash) = @_;
+ my ($managed_by_cc,$managed_by_dc) = &Apache::lonuserutils::selfenrollment_administration($cdom,$cnum,$type,$coursehash);
+ if (ref($managed_by_dc) eq 'ARRAY') {
+ if (@{$managed_by_dc}) {
+ return 1;
+ }
+ }
+ return 0;
+ }
+
sub phaseurl {
my $phase = shift;
return "javascript:changePage(document.menu,'$phase')"
@@ -310,6 +324,14 @@ sub print_modification_menu {
icon => 'roles.png',
linktitle => ''
},
+ {
+ linktext => 'View/Modify Self-Enrollment configuration',
+ icon => 'self_enroll.png',
+ #help => 'Course_Self_Enrollment',
+ url => &phaseurl('selfenroll'),
+ permission => &manage_selfenrollment($cdom,$cnum,$type,$coursehash),
+ linktitle => 'Configure user self-enrollment.',
+ },
]
},
);
@@ -326,16 +348,18 @@ sub print_modification_menu {
}
$menu_html .= '
'."\n".'
';
if ($type eq 'Community') {
- $menu_html .= '
'.&mt('Community owner (permitted to assign Coordinator roles in the community).').'
';
+ $menu_html .= '
'.&mt('Community owner (permitted to assign Coordinator roles in the community).').'
'."\n".
+ '
'.&mt('Override defaults for who configures self-enrollment for this specific community').'
'."\n";
} else {
- $menu_html .= '
'.&mt('Course owner (permitted to assign Course Coordinator roles in the course).').'
'.
- '
'.&mt("Institutional code and default authentication (both required for auto-enrollment of students from institutional datafeeds).").'
';
+ $menu_html .= '
'.&mt('Course owner (permitted to assign Course Coordinator roles in the course).').'
'."\n".
+ '
'.&mt("Institutional code and default authentication (both required for auto-enrollment of students from institutional datafeeds).").'
'."\n";
if (&showcredits($dom)) {
- $menu_html .= '
'.&mt('Default credits earned by student on course completion.').'
';
+ $menu_html .= '
'.&mt('Default credits earned by student on course completion.').'
'."\n";
}
+ $menu_html .= '
'.&mt('Override defaults for who configures self-enrollment for this specific course.').'
'."\n";
}
- $menu_html .= '
'.$setquota_text.'
'.
- '
'.$setuploadquota_text.'
'.
+ $menu_html .= '
'.$setquota_text.'
'."\n".
+ '
'.$setuploadquota_text.'
'."\n".
'
'.$anon_text.'
'."\n";
foreach my $item (@additional_params) {
if ($type eq 'Community') {
@@ -425,9 +449,9 @@ sub print_settings_display {
'
'.$lt{'cose'}.'
'.
'
'.&mt('Settings modifiable by a [_1] via the [_2]Automated Enrollment Manager[_3] in a course.',$cctitle,'','').'
');
if (&showcredits($cdom)) {
- $r->print('
'.&mt('Settings modifiable by a [_1] via [_2]View/Modify course owner, institutional code, and default authentication and credits[_3].',$dctitle,'','')."\n");
+ $r->print('
'.&mt('Settings modifiable by a [_1] via [_2]View/Modify course owner, institutional code, default authentication, credits, and self-enrollment[_3].',$dctitle,'','')."\n");
} else {
- $r->print('
'.&mt('Settings modifiable by a [_1] via [_2]View/Modify course owner, institutional code, and default authentication[_3].',$dctitle,'','')."\n");
+ $r->print('
'.&mt('Settings modifiable by a [_1] via [_2]View/Modify course owner, institutional code, default authentication, and self-enrollment[_3].',$dctitle,'','')."\n");
}
$r->print('
'.
'
'.$lt{'cour'}.'
'.$disp_table.'
'.
@@ -461,15 +485,8 @@ sub print_setquota {
}
if ($uploadquota eq '') {
my %domdefs = &Apache::lonnet::get_domain_defaults($cdom);
- if ($type eq 'Community') {
- $uploadquota = $domdefs{$lctype.'quota'};
- } elsif ($settings{'internal.coursecode'}) {
- $uploadquota = $domdefs{'officialquota'};
- } elsif ($settings{'internal.textbook'}) {
- $uploadquota = $domdefs{'textbookquota'};
- } else {
- $uploadquota = $domdefs{'unofficialquota'};
- }
+ my $quotatype = &Apache::lonuserutils::get_extended_type($cdom,$cnum,$type,\%settings);
+ $uploadquota = $domdefs{$quotatype.'quota'};
if ($uploadquota eq '') {
$uploadquota = $staticdefaults{'uploadquota'};
}
@@ -617,7 +634,7 @@ sub print_catsettings {
}
sub print_course_modification_page {
- my ($r,$cdom,$cnum,$cdesc,$type) = @_;
+ my ($r,$cdom,$cnum,$cdesc,$crstype) = @_;
my %lt=&Apache::lonlocal::texthash(
'actv' => "Active",
'inac' => "Inactive",
@@ -627,17 +644,28 @@ sub print_course_modification_page {
'stus' => "Status",
'nocc' => 'There is currently no owner set for this course.',
'gobt' => "Save",
+ 'sett' => 'Setting',
+ 'domd' => 'Domain default',
+ 'whom' => 'Who configures',
);
my ($ownertable,$ccrole,$javascript_validations,$authenitems,$ccname);
my %enrollvar = &get_enrollment_settings($cdom,$cnum);
- if ($type eq 'Community') {
+ my %settings = &Apache::lonnet::get('environment',['internal.coursecode','internal.textbook',
+ 'internal.selfenrollmgrdc','internal.selfenrollmgrcc'],
+ $cdom,$cnum);
+ my $type = &Apache::lonuserutils::get_extended_type($cdom,$cnum,$crstype,\%settings);
+ my @specific_managebydc = split(/,/,$settings{'internal.selfenrollmgrdc'});
+ my @specific_managebycc = split(/,/,$settings{'internal.selfenrollmgrcc'});
+ my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom);
+ my @default_managebydc = split(/,/,$domdefaults{$type.'selfenrolladmdc'});
+ if ($crstype eq 'Community') {
$ccrole = 'co';
$lt{'nocc'} = &mt('There is currently no owner set for this community.');
} else {
$ccrole ='cc';
($javascript_validations,$authenitems) = &gather_authenitems($cdom,\%enrollvar);
}
- $ccname = &Apache::lonnet::plaintext($ccrole,$type);
+ $ccname = &Apache::lonnet::plaintext($ccrole,$crstype);
my %roleshash = &Apache::lonnet::get_my_roles($cnum,$cdom,'','',[$ccrole]);
my (@local_ccs,%cc_status,%pname);
foreach my $item (keys(%roleshash)) {
@@ -690,14 +718,14 @@ sub print_course_modification_page {
}
$ownertable .= &Apache::loncommon::end_data_table();
}
- &print_header($r,$type,$javascript_validations);
+ &print_header($r,$crstype,$javascript_validations);
my $dctitle = &Apache::lonnet::plaintext('dc');
- my $mainheader = &modifiable_only_title($type);
+ my $mainheader = &modifiable_only_title($crstype);
my $hidden_elements = &hidden_form_elements();
$r->print('