--- loncom/interface/lonmodifycourse.pm 2013/07/09 00:17:23 1.61
+++ 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.61 2013/07/09 00:17:23 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};
@@ -153,10 +156,7 @@ sub print_course_search_page {
$type = 'Course';
}
&print_header($r,$type);
- my $filterlist = ['descriptfilter',
- 'instcodefilter','ownerfilter',
- 'coursefilter'];
- my $filter = {};
+ my ($filterlist,$filter) = &get_filters($dom);
my ($numtitles,$cctitle,$dctitle,@codetitles);
my $ccrole = 'cc';
if ($type eq 'Community') {
@@ -164,15 +164,15 @@ sub print_course_search_page {
}
$cctitle = &Apache::lonnet::plaintext($ccrole,$type);
$dctitle = &Apache::lonnet::plaintext('dc');
- $r->print(&Apache::lonpickcourse::js_changer());
+ $r->print(&Apache::loncommon::js_changer());
if ($type eq 'Community') {
$r->print('
'.&mt('Search for a community in the [_1] domain',$domdesc).'
');
} else {
$r->print('
'.&mt('Search for a course in the [_1] domain',$domdesc).'
');
- }
- $r->print(&Apache::lonpickcourse::build_filters($filterlist,$type,
- undef,undef,$filter,$action,\$numtitles,'modifycourse',
- undef,undef,undef,\@codetitles));
+ }
+ $r->print(&Apache::loncommon::build_filters($filterlist,$type,undef,undef,$filter,$action,
+ \$numtitles,'modifycourse',undef,undef,undef,
+ \@codetitles,$dom));
if ($type eq 'Community') {
$r->print(&mt('Actions available after searching for a community:').'
'.
'
'.&mt('Enter the community with the role of [_1]',$cctitle).'
'."\n".
@@ -184,6 +184,7 @@ sub print_course_search_page {
'
'.&mt('View or modify course settings which only a [_1] may modify.',$dctitle).
'
'."\n".'
');
}
+ return;
}
sub print_course_selection_page {
@@ -195,31 +196,49 @@ sub print_course_selection_page {
&print_header($r,$type);
# Criteria for course search
- my $filterlist = ['descriptfilter',
- 'instcodefilter','ownerfilter',
- 'ownerdomfilter','coursefilter'];
- my %filter;
+ my ($filterlist,$filter) = &get_filters();
my $action = '/adm/modifycourse';
my $dctitle = &Apache::lonnet::plaintext('dc');
my ($numtitles,@codetitles);
- $r->print(&Apache::lonpickcourse::js_changer());
+ $r->print(&Apache::loncommon::js_changer());
$r->print(&mt('Revise your search criteria for this domain').' ('.$domdesc.'). ');
- $r->print(&Apache::lonpickcourse::build_filters($filterlist,$type,
- undef,undef,\%filter,$action,\$numtitles,
- undef,undef,undef,undef,\@codetitles));
- $filter{'domainfilter'} = $dom;
- my %courses = &Apache::lonpickcourse::search_courses($r,$type,0,
- \%filter,$numtitles,undef,
- undef,undef,\@codetitles);
+ $r->print(&Apache::loncommon::build_filters($filterlist,$type,undef,undef,$filter,$action,
+ \$numtitles,'modifycourse',undef,undef,undef,
+ \@codetitles,$dom,$env{'form.form'}));
+ my %courses = &Apache::loncommon::search_courses($dom,$type,$filter,$numtitles,
+ undef,undef,undef,\@codetitles);
&Apache::lonpickcourse::display_matched_courses($r,$type,0,$action,undef,undef,undef,
%courses);
return;
}
+sub get_filters {
+ my ($dom) = @_;
+ my @filterlist = ('descriptfilter','instcodefilter','ownerfilter',
+ 'ownerdomfilter','coursefilter','sincefilter');
+ # created filter
+ my $loncaparev = &Apache::lonnet::get_server_loncaparev($dom);
+ if ($loncaparev ne 'unknown_cmd') {
+ push(@filterlist,'createdfilter');
+ }
+ my %filter;
+ foreach my $item (@filterlist) {
+ $filter{$item} = $env{'form.'.$item};
+ }
+ return (\@filterlist,\%filter);
+}
+
sub print_modification_menu {
- my ($r,$cdesc,$domdesc,$dom,$type) = @_;
+ my ($r,$cdesc,$domdesc,$dom,$type,$cid,$coursehash) = @_;
&print_header($r,$type);
- my ($ccrole,$categorytitle,$setquota_text,$setuploadquota_text,$setparams_text,$cat_text);
+ my ($ccrole,$categorytitle,$setquota_text,$setuploadquota_text,$setparams_text,$cat_text,
+ $cdom,$cnum);
+ if (ref($coursehash) eq 'HASH') {
+ $cdom = $coursehash->{'domain'};
+ $cnum = $coursehash->{'num'};
+ } else {
+ ($cdom,$cnum) = split(/_/,$cid);
+ }
if ($type eq 'Community') {
$ccrole = 'co';
} else {
@@ -236,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';
}
@@ -247,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')"
@@ -294,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.',
+ },
]
},
);
@@ -310,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') {
@@ -409,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.'
'.
@@ -436,7 +476,7 @@ sub print_setquota {
coursequota => 20,
uploadquota => 500,
);
- my %settings = &Apache::lonnet::get('environment',['internal.coursequota','internal.uploadquota','internal.instcode'],
+ my %settings = &Apache::lonnet::get('environment',['internal.coursequota','internal.uploadquota','internal.coursecode'],
$cdom,$cnum);
my $coursequota = $settings{'internal.coursequota'};
my $uploadquota = $settings{'internal.uploadquota'};
@@ -445,13 +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.instcode'}) {
- $uploadquota = $domdefs{'officialquota'};
- } 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'};
}
@@ -599,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",
@@ -609,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)) {
@@ -672,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('
');
if ($type eq 'Community') {
- $r->print(&mt('Disk usage [_1] exceeds the quota for this community.',$newoverquota).' '.
+ $r->print(&mt("Disk usage $newoverquota exceeds the quota for this community.").' '.
&mt('Upload of new portfolio files and assignment of a non-zero MB quota to new groups in the community will not be possible until some files have been deleted, and total usage is below community quota.'));
} else {
- $r->print(&mt('Disk usage [_1] exceeds the quota for this course.',$newoverquota).' '.
+ $r->print(&mt("Disk usage $newoverquota exceeds the quota for this course.").' '.
&mt('Upload of new portfolio files and assignment of a non-zero MB quota to new groups in the course will not be possible until some files have been deleted, and total usage is below course quota.'));
}
$r->print('
');
@@ -1252,7 +1475,7 @@ sub modify_quota {
''.$updatedsettings{'internal.uploadquota'}.'').' ');
}
} else {
- $r->print(&mt('An error occurred storing the quota(s) for group portfolio files and/or uploaded content.').
+ $r->print(&mt('An error occurred storing the quota(s) for group portfolio files and/or uploaded content: ').
$putreply);
}
}
@@ -1295,6 +1518,12 @@ sub modify_anonsurvey_threshold {
);
my $putreply = &Apache::lonnet::put('environment',\%cenv,$cdom,
$cnum);
+ if ($putreply eq 'ok') {
+ if ($env{'course.'.$cdom.'_'.$cnum.'.description'} ne '') {
+ &Apache::lonnet::appenv(
+ {'course.'.$cdom.'_'.$cnum.'.internal.anonsurvey_threshold' => $env{'form.threshold'}});
+ }
+ }
if (($oldsettings{'internal.anonsurvey_threshold'} eq '') &&
($env{'form.threshold'} == $defaultthreshold)) {
$r->print(&mt('The responder threshold for display of anonymous survey submissions is the default for this domain: [_1].',$defaultthreshold));
@@ -1405,6 +1634,13 @@ sub modify_catsettings {
if (@changes > 0) {
my $putreply = &Apache::lonnet::put('environment',\%cenv,$cdom,$cnum);
if ($putreply eq 'ok') {
+ if ($env{'course.'.$cdom.'_'.$cnum.'.description'} ne '') {
+ my %newenvhash;
+ foreach my $item (@changes) {
+ $newenvhash{'course.'.$cdom.'_'.$cnum.'.'.$item} = $cenv{$item};
+ }
+ &Apache::lonnet::appenv(\%newenvhash);
+ }
my %crsinfo = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',
$cnum,undef,undef,'.');
if (ref($crsinfo{$env{'form.pickedcourse'}}) eq 'HASH') {
@@ -1536,7 +1772,7 @@ ENDSCRIPT
};
} elsif ($phase eq 'courselist') {
$starthash = {
- add_entries => {'onload' => "hide_searching();"},
+ add_entries => {'onload' => "hide_searching(); courseSet(document.filterpicker.official, 'load');"},
};
}
$r->print(&Apache::loncommon::start_page('View/Modify Course/Community Settings',
@@ -1559,38 +1795,35 @@ sub print_footer {
}
sub check_course {
- my ($r,$dom,$domdesc) = @_;
- my ($ok_course,$description,$instcode,$owner);
- my %args = (
- one_time => 1,
- );
- my %coursehash =
- &Apache::lonnet::coursedescription($env{'form.pickedcourse'},\%args);
- my $cnum = $coursehash{'num'};
- my $cdom = $coursehash{'domain'};
- if ($cdom eq $dom) {
- my $description;
- my %courseIDs = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',
- $cnum,undef,undef,'.');
- if (keys(%courseIDs) > 0) {
- $ok_course = 'ok';
- my ($instcode,$owner);
- if (ref($courseIDs{$cdom.'_'.$cnum}) eq 'HASH') {
- $description = $courseIDs{$cdom.'_'.$cnum}{'description'};
- $instcode = $courseIDs{$cdom.'_'.$cnum}{'inst_code'};
- $owner = $courseIDs{$cdom.'_'.$cnum}{'owner'};
- } else {
- ($description,$instcode,$owner) =
- split(/:/,$courseIDs{$cdom.'_'.$cnum});
- }
- $description = &unescape($description);
- $instcode = &unescape($instcode);
- if ($instcode) {
- $description .= " ($instcode)";
+ my ($dom,$domdesc) = @_;
+ my ($ok_course,$description,$instcode);
+ my %coursehash;
+ if ($env{'form.pickedcourse'} =~ /^$match_domain\_$match_courseid$/) {
+ my %args;
+ unless ($env{'course.'.$env{'form.pickedcourse'}.'.description'}) {
+ %args = (
+ 'one_time' => 1,
+ 'freshen_cache' => 1,
+ );
+ }
+ %coursehash =
+ &Apache::lonnet::coursedescription($env{'form.pickedcourse'},\%args);
+ my $cnum = $coursehash{'num'};
+ my $cdom = $coursehash{'domain'};
+ $description = $coursehash{'description'};
+ $instcode = $coursehash{'internal.coursecode'};
+ if ($instcode) {
+ $description .= " ($instcode)";
+ }
+ if (($cdom eq $dom) && ($cnum =~ /^$match_courseid$/)) {
+ my %courseIDs = &Apache::lonnet::courseiddump($cdom,'.',1,'.','.',
+ $cnum,undef,undef,'.');
+ if ($courseIDs{$cdom.'_'.$cnum}) {
+ $ok_course = 'ok';
}
- return ($ok_course,$description);
}
}
+ return ($ok_course,$description,\%coursehash);
}
sub course_settings_descrip {
@@ -1598,8 +1831,10 @@ sub course_settings_descrip {
my %longtype;
if ($type eq 'Community') {
%longtype = &Apache::lonlocal::texthash(
- 'courseowner' => "Username:domain of community owner",
- 'co-owners' => "Username:domain of each co-owner",
+ 'courseowner' => "Username:domain of community owner",
+ 'co-owners' => "Username:domain of each co-owner",
+ 'selfenrollmgrdc' => "Community-specific self-enrollment configuration by Domain Coordinator",
+ 'selfenrollmgrcc' => "Community-specific self-enrollment configuration by Community personnel",
);
} else {
%longtype = &Apache::lonlocal::texthash(
@@ -1617,7 +1852,10 @@ sub course_settings_descrip {
'notifylist' => 'Course Coordinators to be notified of enrollment changes',
'sectionnums' => 'Course section number:LON-CAPA section',
'crosslistings' => 'Crosslisted class:LON-CAPA section',
- 'defaultcredits' => 'Credits',
+ 'defaultcredits' => 'Credits',
+ 'selfenrollmgrdc' => "Course-specific self-enrollment configuration by Domain Coordinator",
+ 'selfenrollmgrcc' => "Course-specific self-enrollment configuration by Course personnel",
+
);
}
return %longtype;
@@ -1628,7 +1866,8 @@ sub hidden_form_elements {
&Apache::lonhtmlcommon::echo_form_input(['gosearch','updater','coursecode',
'prevphase','numlocalcc','courseowner','login','coursequota','intarg',
'locarg','krbarg','krbver','counter','hidefromcat','usecategory',
- 'threshold','defaultcredits','uploadquota'])."\n".
+ 'threshold','defaultcredits','uploadquota','selfenrollmgrdc','selfenrollmgrcc',
+ 'action','state','currsec_st','sections','newsec'],['^selfenrollmgr_'])."\n".
'';
return $hidden_elements;
}
@@ -1636,7 +1875,7 @@ sub hidden_form_elements {
sub showcredits {
my ($dom) = @_;
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom);
- if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'}) {
+ if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'} || $domdefaults{'textbokcredits'}) {
return 1;
}
}
@@ -1648,8 +1887,10 @@ sub handler {
$r->send_http_header;
return OK;
}
+
my $dom = $env{'request.role.domain'};
my $domdesc = &Apache::lonnet::domain($dom,'description');
+
if (&Apache::lonnet::allowed('ccc',$dom)) {
&Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
@@ -1688,7 +1929,7 @@ sub handler {
if ($phase eq 'courselist') {
&print_course_selection_page($r,$dom,$domdesc);
} else {
- my ($checked,$cdesc) = &check_course($r,$dom,$domdesc);
+ my ($checked,$cdesc,$coursehash) = &check_course($dom,$domdesc);
if ($checked eq 'ok') {
my $enter_text;
if ($type eq 'Community') {
@@ -1700,7 +1941,8 @@ sub handler {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'menu')",
text=>"Pick action"});
- &print_modification_menu($r,$cdesc,$domdesc,$dom,$type);
+ &print_modification_menu($r,$cdesc,$domdesc,$dom,$type,
+ $env{'form.pickedcourse'},$coursehash);
} elsif ($phase eq 'ccrole') {
&Apache::lonhtmlcommon::add_breadcrumb
({href=>"javascript:changePage(document.$phase,'ccrole')",
@@ -1769,14 +2011,26 @@ sub handler {
({href=>"javascript:changePage(document.$phase,'$phase')",
text=>"Result"});
&modify_catsettings($r,$cdom,$cnum,$cdesc,$domdesc,$type);
+ } elsif ($phase eq 'selfenroll') {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href => "javascript:changePage(document.$phase,'$phase')",
+ text => "Self-enrollment settings"});
+ if (!exists($env{'form.state'})) {
+ &print_selfenrollconfig($r,$type,$cdesc,$coursehash);
+ } elsif ($env{'form.state'} eq 'done') {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>"javascript:changePage(document.$phase,'$phase')",
+ text=>"Result"});
+ &modify_selfenrollconfig($r,$type,$cdesc,$coursehash);
+ }
}
}
} else {
$r->print('');
if ($type eq 'Community') {
- $r->print(&mt('The course you selected is not a valid course in this domain'));
- } else {
$r->print(&mt('The community you selected is not a valid community in this domain'));
+ } else {
+ $r->print(&mt('The course you selected is not a valid course in this domain'));
}
$r->print(" ($domdesc)");
}