'.&mt('Search for a placement test 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".
'
'.&mt('View or modify community settings which only a [_1] may modify.',$dctitle).
'
'."\n".'
');
+ } elsif ($type eq 'Placement') {
+ $r->print(&mt('Actions available after searching for a placement test:').'
'.
+ '
'.&mt('Enter the placement test with the role of [_1]',$cctitle).'
'."\n".
+ '
'.&mt('View or modify placement test settings which only a [_1] may modify.',$dctitle).
+ '
'."\n".'
');
} else {
$r->print(&mt('Actions available after searching for a course:').'
'.
'
'.&mt('Enter the course with the role of [_1]',$cctitle).'
'."\n".
'
'.&mt('View or modify course settings which only a [_1] may modify.',$dctitle).
'
'."\n".'
');
}
+ return;
}
sub print_course_selection_page {
@@ -195,56 +209,88 @@ 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);
+ 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,$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 {
$ccrole = 'cc';
- }
+ }
if ($type eq 'Community') {
$categorytitle = 'View/Modify Community Settings';
$setquota_text = &mt('Total disk space allocated for storage of portfolio files in all groups in a community.');
+ $setuploadquota_text = &mt('Disk space allocated for storage of content uploaded directly to a community via Content Editor.');
$setparams_text = 'View/Modify community owner';
$cat_text = 'View/Modify catalog settings for community';
} else {
$categorytitle = 'View/Modify Course Settings';
$setquota_text = &mt('Total disk space allocated for storage of portfolio files in all groups in a course.');
- if (&showcredits($dom)) {
- $setparams_text = 'View/Modify course owner, institutional code, and default authentication and credits';
+ $setuploadquota_text = &mt('Disk space allocated for storage of content uploaded directly to a course via Content Editor.');
+ if (($type ne 'Placement') && (&showcredits($dom))) {
+ $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';
}
- my $anon_text = 'Responder threshold required to display anonymous survey submissions';
+ my $anon_text = &mt('Responder threshold required to display anonymous survey submissions.');
+ my $postsubmit_text = &mt('Override defaults for submit button behavior post-submission for this specific course.');
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')"
@@ -261,7 +307,7 @@ sub print_modification_menu {
linktitle => ''
},
{
- linktext => 'View/Modify quota for group portfolio files',
+ linktext => 'View/Modify quotas for group portfolio files, and for uploaded content.',
url => &phaseurl('setquota'),
permission => 1,
#help => '',
@@ -287,11 +333,27 @@ sub print_modification_menu {
{
linktext => 'Display current settings for automated enrollment',
url => &phaseurl('viewparms'),
- permission => ($type ne 'Community'),
+ permission => (($type ne 'Community') && ($type ne 'Placement')),
#help => '',
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.',
+ },
+ {
+ linktext => 'View/Modify submit button behavior, post-submission',
+ icon => 'emblem-readonly.png',
+ #help => '',
+ url => &phaseurl('setpostsubmit'),
+ permission => 1,
+ linktitle => '',
+ },
]
},
);
@@ -308,16 +370,20 @@ 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).").'
';
- if (&showcredits($dom)) {
- $menu_html .= '
'.&mt('Default credits earned by student on course completion.').'
';
- }
- }
- $menu_html .= '
'.$setquota_text.'
'.
- '
'.$anon_text.'
'."\n";
+ $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 (($type ne 'Placement') && &showcredits($dom)) {
+ $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.'
'."\n".
+ '
'.$setuploadquota_text.'
'."\n".
+ '
'.$anon_text.'
'."\n".
+ '
'.$postsubmit_text.'
'."\n";
foreach my $item (@additional_params) {
if ($type eq 'Community') {
if ($item eq 'togglecats') {
@@ -406,9 +472,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.'
'.
@@ -420,28 +486,50 @@ sub print_settings_display {
sub print_setquota {
my ($r,$cdom,$cnum,$cdesc,$type) = @_;
+ my $lctype = lc($type);
+ my $headline = &mt("Set disk space quotas for $lctype: [_1]",
+ ''.$cdesc.'');
my %lt = &Apache::lonlocal::texthash(
- 'cquo' => 'Disk space for storage of group portfolio files for:',
- 'gpqu' => 'Course portfolio files disk space',
+ 'gpqu' => 'Disk space for storage of group portfolio files',
+ 'upqu' => 'Disk space for storage of content directly uploaded to course via Content Editor',
'modi' => 'Save',
'back' => 'Pick another action',
);
- if ($type eq 'Community') {
- $lt{'gpqu'} = &mt('Community portfolio files disk space');
- }
- my %settings = &Apache::lonnet::get('environment',['internal.coursequota'],$cdom,$cnum);
+ my %staticdefaults = (
+ coursequota => 20,
+ uploadquota => 500,
+ );
+ my %settings = &Apache::lonnet::get('environment',['internal.coursequota','internal.uploadquota','internal.coursecode'],
+ $cdom,$cnum);
my $coursequota = $settings{'internal.coursequota'};
+ my $uploadquota = $settings{'internal.uploadquota'};
if ($coursequota eq '') {
- $coursequota = 20;
+ $coursequota = $staticdefaults{'coursequota'};
+ }
+ if ($uploadquota eq '') {
+ my %domdefs = &Apache::lonnet::get_domain_defaults($cdom);
+ my $quotatype = &Apache::lonuserutils::get_extended_type($cdom,$cnum,$type,\%settings);
+ $uploadquota = $domdefs{$quotatype.'quota'};
+ if ($uploadquota eq '') {
+ $uploadquota = $staticdefaults{'uploadquota'};
+ }
}
&print_header($r,$type);
my $hidden_elements = &hidden_form_elements();
- my $helpitem = &Apache::loncommon::help_open_topic('Modify_Course_Quota');
+ my $porthelpitem = &Apache::loncommon::help_open_topic('Modify_Course_Quota');
+ my $uploadhelpitem = &Apache::loncommon::help_open_topic('Modify_Course_Upload_Quota');
$r->print(<
-
$hidden_elements
@@ -490,6 +578,98 @@ ENDDOCUMENT
return;
}
+sub print_postsubmit_config {
+ my ($r,$cdom,$cnum,$cdesc,$type) = @_;
+ my %lt = &Apache::lonlocal::texthash (
+ 'conf' => 'Configure submit button behavior after student makes a submission',
+ 'disa' => 'Disable submit button/keypress following student submission',
+ 'nums' => 'Number of seconds submit is disabled',
+ 'modi' => 'Save',
+ 'back' => 'Pick another action',
+ 'yes' => 'Yes',
+ 'no' => 'No',
+ );
+ my %settings = &Apache::lonnet::get('environment',['internal.postsubmit','internal.postsubtimeout',
+ 'internal.coursecode','internal.textbook'],$cdom,$cnum);
+ my $postsubmit = $settings{'internal.postsubmit'};
+ if ($postsubmit eq '') {
+ my %domconfig =
+ &Apache::lonnet::get_dom('configuration',['coursedefaults'],$cdom);
+ $postsubmit = 1;
+ if (ref($domconfig{'coursedefaults'}) eq 'HASH') {
+ if (ref($domconfig{'coursedefaults'}{'postsubmit'}) eq 'HASH') {
+ if ($domconfig{'coursedefaults'}{'postsubmit'}{'client'} eq 'off') {
+ $postsubmit = 0;
+ }
+ }
+ }
+ }
+ my ($checkedon,$checkedoff,$display);
+ if ($postsubmit) {
+ $checkedon = 'checked="checked"';
+ $display = 'block';
+ } else {
+ $checkedoff = 'checked="checked"';
+ $display = 'none';
+ }
+ my $postsubtimeout = $settings{'internal.postsubtimeout'};
+ my $default = &domain_postsubtimeout($cdom,$type,\%settings);
+ my $zero = &mt('(Enter 0 to disable until next page reload, or leave blank to use the domain default: [_1])',$default);
+ if ($postsubtimeout eq '') {
+ $postsubtimeout = $default;
+ }
+ &print_header($r,$type);
+ my $hidden_elements = &hidden_form_elements();
+ my $helpitem = &Apache::loncommon::help_open_topic('Modify_Postsubmit_Config');
+ $r->print(<
+
$lt{'conf'} ($cdesc)
+
+$helpitem $lt{'disa'}:
+
+
+
+$lt{'nums'}
+$zero
+
+
+
+$hidden_elements
+$lt{'back'}
+
+ENDDOCUMENT
+ return;
+}
+
+sub domain_postsubtimeout {
+ my ($cdom,$type,$settings) = @_;
+ return unless (ref($settings) eq 'HASH');
+ my $lctype = lc($type);
+ unless (($type eq 'Community') || ($type eq 'Placement')) {
+ $lctype = 'unofficial';
+ if ($settings->{'internal.coursecode'}) {
+ $lctype = 'official';
+ } elsif ($settings->{'internal.textbook'}) {
+ $lctype = 'textbook';
+ }
+ }
+ my %domconfig =
+ &Apache::lonnet::get_dom('configuration',['coursedefaults'],$cdom);
+ my $postsubtimeout = 60;
+ if (ref($domconfig{'coursedefaults'}) eq 'HASH') {
+ if (ref($domconfig{'coursedefaults'}{'postsubmit'}) eq 'HASH') {
+ if (ref($domconfig{'coursedefaults'}{'postsubmit'}{'timeout'}) eq 'HASH') {
+ if ($domconfig{'coursedefaults'}{'postsubmit'}{'timeout'}{$lctype} ne '') {
+ $postsubtimeout = $domconfig{'coursedefaults'}{'postsubmit'}{'timeout'}{$lctype};
+ }
+ }
+ }
+ }
+ return $postsubtimeout;
+}
+
sub print_catsettings {
my ($r,$cdom,$cnum,$cdesc,$type) = @_;
&print_header($r,$type);
@@ -526,6 +706,8 @@ sub print_catsettings {
'
');
if ($type eq 'Community') {
$r->print(&mt("If a community has been categorized using at least one of the categories defined for communities in the domain, it will be listed in the domain's publicly accessible Course/Community Catalog, unless excluded."));
+ } elsif ($type eq 'Placement') {
+ $r->print(&mt("If a placement test has been categorized using at least one of the categories defined for placement tests in the domain, it will be listed in the domain's publicly accessible Course/Community Catalog, unless excluded."));
} else {
$r->print(&mt("Unless excluded, a course will be listed in the domain's publicly accessible Course/Community Catalog, if at least one of the following applies").':
'.
'
'.&mt('Auto-cataloging is enabled and the course is assigned an institutional code.').'
'.
@@ -547,7 +729,7 @@ sub print_catsettings {
} else {
$r->print(&mt('No categories defined for this domain'));
}
- unless ($type eq 'Community') {
+ unless (($type eq 'Community') || ($type eq 'Placement')) {
$r->print('
'.&mt('If auto-cataloging based on institutional code is enabled in the domain, a course will continue to be listed in the catalog of official courses, in addition to receiving a listing under any manually assigned categor(ies).').'
');
}
}
@@ -569,7 +751,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",
@@ -579,17 +761,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)) {
@@ -642,14 +835,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('
');
+ return;
+}
+
+sub get_selfenroll_settings {
+ my ($coursehash) = @_;
+ my %currsettings;
+ if (ref($coursehash) eq 'HASH') {
+ %currsettings = (
+ selfenroll_types => $coursehash->{'internal.selfenroll_types'},
+ selfenroll_registered => $coursehash->{'internal.selfenroll_registered'},
+ selfenroll_section => $coursehash->{'internal.selfenroll_section'},
+ selfenroll_notifylist => $coursehash->{'internal.selfenroll_notifylist'},
+ selfenroll_approval => $coursehash->{'internal.selfenroll_approval'},
+ selfenroll_limit => $coursehash->{'internal.selfenroll_limit'},
+ selfenroll_cap => $coursehash->{'internal.selfenroll_cap'},
+ selfenroll_start_date => $coursehash->{'internal.selfenroll_start_date'},
+ selfenroll_end_date => $coursehash->{'internal.selfenroll_end_date'},
+ selfenroll_start_access => $coursehash->{'internal.selfenroll_start_access'},
+ selfenroll_end_access => $coursehash->{'internal.selfenroll_end_access'},
+ default_enrollment_start_date => $coursehash->{'default_enrollment_start_date'},
+ default_enrollment_end_date => $coursehash->{'default_enrollment_end_date'},
+ uniquecode => $coursehash->{'internal.uniquecode'},
+ );
+ }
+ return %currsettings;
+}
+
sub modifiable_only_title {
my ($type) = @_;
my $dctitle = &Apache::lonnet::plaintext('dc');
@@ -740,8 +1038,10 @@ sub modify_course {
my ($r,$cdom,$cnum,$cdesc,$domdesc,$type) = @_;
my %longtype = &course_settings_descrip($type);
my @items = ('internal.courseowner','description','internal.co-owners',
- 'internal.pendingco-owners');
- unless ($type eq 'Community') {
+ 'internal.pendingco-owners','internal.selfenrollmgrdc',
+ 'internal.selfenrollmgrcc');
+ my ($selfenrollrows,$selfenrolltitles) = &Apache::lonuserutils::get_selfenroll_titles();
+ unless (($type eq 'Community') || ($type eq 'Placement')) {
push(@items,('internal.coursecode','internal.authtype','internal.autharg',
'internal.sectionnums','internal.crosslistings'));
if (&showcredits($cdom)) {
@@ -811,12 +1111,35 @@ sub modify_course {
}
}
- if (&showcredits($cdom) && exists($env{'form.defaultcredits'})) {
+ if (($type ne 'Placement') && (&showcredits($cdom) && exists($env{'form.defaultcredits'}))) {
$newattr{'defaultcredits'} =~ s/[^\d\.]//g;
$newattr{'defaultcredits'}=$env{'form.defaultcredits'};
}
+ }
+
+ my @newmgrdc = ();
+ my @newmgrcc = ();
+ my @currmgrdc = split(/,/,$currattr{'selfenrollmgrdc'});
+ my @currmgrcc = split(/,/,$currattr{'selfenrollmgrcc'});
+
+ foreach my $item (@{$selfenrollrows}) {
+ if ($env{'form.selfenrollmgr_'.$item} eq '0') {
+ push(@newmgrdc,$item);
+ } elsif ($env{'form.selfenrollmgr_'.$item} eq '1') {
+ push(@newmgrcc,$item);
+ }
+ }
+
+ $newattr{'selfenrollmgrdc'}=join(',',@newmgrdc);
+ $newattr{'selfenrollmgrcc'}=join(',',@newmgrcc);
+ my $cctitle;
+ if ($type eq 'Community') {
+ $cctitle = &mt('Community personnel');
+ } else {
+ $cctitle = &mt('Course personnel');
}
+ my $dctitle = &Apache::lonnet::plaintext('dc');
if ( exists($env{'form.courseowner'}) ) {
$newattr{'courseowner'}=$env{'form.courseowner'};
@@ -851,10 +1174,10 @@ sub modify_course {
}
}
if (@changes > 0) {
- $chgresponse = &mt("The following settings have been changed:
");
+ $chgresponse = &mt('The following settings have been changed:').'
';
}
if (@nochanges > 0) {
- $nochgresponse = &mt("The following settings remain unchanged:
");
+ $nochgresponse = &mt('The following settings remain unchanged:').'
';
}
if (@changes > 0) {
my $putreply = &Apache::lonnet::put('environment',\%cenv,$cdom,$cnum);
@@ -868,14 +1191,35 @@ sub modify_course {
}
$response .= ' '.&mt('Error: ').$putreply.'';
} else {
+ if ($env{'course.'.$cdom.'_'.$cnum.'.description'} ne '') {
+ my %newenv;
+ map { $newenv{'course.'.$cdom.'_'.$cnum.'.internal.'.$_} = $newattr{$_}; } @changes;
+ &Apache::lonnet::appenv(\%newenv);
+ }
foreach my $attr (@modifiable_params) {
if (grep/^\Q$attr\E$/,@changes) {
- $chgresponse .= '
'.$longtype{$attr}.' '.&mt('now set to:').' "'.$newattr{$attr}.'".
'.&mt('[_1] still set to: [_2]',$longtype{$attr},$shown).'
';
}
}
- if (($type ne 'Community') && ($changed{'code'} || $changed{'owner'})) {
+ if (($type ne 'Community') && ($type ne 'Placement') && ($changed{'code'} || $changed{'owner'})) {
if ( $newattr{'courseowner'} eq '') {
push(@warnings,&mt('There is no owner associated with this LON-CAPA course.').
' '.&mt('If automated enrollment at your institution requires validation of course owners, automated enrollment will fail.'));
@@ -935,7 +1279,15 @@ sub modify_course {
}
} else {
foreach my $attr (@modifiable_params) {
- $nochgresponse .= '
'.$longtype{$attr}.' '.&mt('still set to').' "'.$currattr{$attr}.'".