'."\n");
}
@@ -1797,6 +1805,39 @@ sub assessparms {
my @values=split(/\&\&\&/,$env{'form.pres_value'});
my @types=split(/\&\&\&/,$env{'form.pres_type'});
for (my $i=0;$i<=$#markers;$i++) {
+ if ($markers[$i] =~ /^[\d.]+\&0_availablestudent\&(1|2|3)$/) {
+ my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ my (@ok_slots,@fail_slots,@del_slots);
+ my $courseopt=&Apache::lonnet::get_courseresdata($cnum,$cdom);
+ my ($level,@all) =
+ &parmval_by_symb('0.availablestudent',$pssymb,'',$uname,$udom,
+ $csec,$cgroup,$courseopt);
+ foreach my $slot_name (split(/:/,$values[$i])) {
+ next if ($slot_name eq '');
+ if (&update_slots($slot_name,$cdom,$cnum,$pssymb,$uname,$udom) eq 'ok') {
+ push(@ok_slots,$slot_name);
+
+ } else {
+ push(@fail_slots,$slot_name);
+ }
+ }
+ if (@ok_slots) {
+ $values[$i] = join(':',@ok_slots);
+ } else {
+ $values[$i] = '';
+ }
+ if ($all[$level] ne '') {
+ my @existing = split(/:/,$all[$level]);
+ foreach my $slot_name (@existing) {
+ if (!grep(/^\Q$slot_name\E$/,split(/:/,$values[$i]))) {
+ if (&delete_slots($slot_name,$cdom,$cnum,$uname,$udom,$pssymb) eq 'ok') {
+ push(@del_slots,$slot_name);
+ }
+ }
+ }
+ }
+ }
$message.=&storeparm(split(/\&/,$markers[$i]),
$values[$i],
$types[$i],
@@ -2268,6 +2309,7 @@ sub crsenv {
my $crs = $env{'course.'.$env{'request.course.id'}.'.num'};
my (%crsinfo,$chome);
+ my $crstype = &Apache::loncommon::course_type();
#
# Go through list of changes
@@ -2278,6 +2320,23 @@ sub crsenv {
if ($name eq 'newp') {
$name = $env{'form.newp_name'};
}
+ if ($name =~ /^rolenames_([^_]+)$/) {
+ $name = $1.'.plaintext';
+ my $standardtitle =
+ &Apache::lonnet::plaintext($1,$crstype,$env{'request.course.id'},1);
+ my %adv_roles =
+ &Apache::lonnet::get_course_adv_roles($env{'request.course.id'},1);
+ if ($value ne '') {
+ foreach my $role (keys(%adv_roles)) {
+ if ($role =~ m{^cr/$match_domain/$match_name/\Q$value\E$}) {
+ $setoutput.= ''.
+ &mt('Requested replacement title for [_1] role is already used as the name of a custom role ([_2]).',$standardtitle,$value).
+ ' ';
+ undef($value);
+ }
+ }
+ }
+ }
if ($name eq 'url') {
$value=~s/^\/res\///;
my $bkuptime=time;
@@ -2453,7 +2512,14 @@ sub crsenv {
my $SelectStyleFile=&mt('Select Style File');
my $SelectSpreadsheetFile=&mt('Select Spreadsheet File');
my $output='';
+ my $output_SB = ''; # will be replaced by "$output" when all changes are done
my $can_categorize;
+ my %lt=&Apache::lonlocal::texthash(
+ 'par' => 'Parameter',
+ 'val' => 'Value',
+ 'set' => 'Set?',
+ 'sav' => 'Save',
+ );
if (! exists($values{'con_lost'})) {
my %descriptions=
('url' => ''.&mt('Top Level Map').' '.
@@ -2500,12 +2566,12 @@ sub crsenv {
.'('.&mt("[_1] for link to each a listing of each student's files.",'"yes"').')',
'student_classlist_opt_in' => ''.&mt("Student's agreement needed for listing in student-viewable roster").' '
.'('.&mt('[_1] to require students to opt-in to listing in the roster (on the roster page).','"yes"').')',
- 'plc.roles.denied'=> ''.&mt('Disallow live chatroom use for Roles').' '
+ 'plc.roles.denied'=> ''.&mt('Disallow chat room use for Roles').' '
.'('.&mt('[_1]: student, [_2]: TA, [_3]: instructor','"st"','"ta"','"in"').') '
.'("'.&mt('role,role,...').'") '
.Apache::loncommon::help_open_topic("Course_Disable_Discussion"),
'plc.users.denied' =>
- ''.&mt('Disallow live chatroom use for Users').' '.
+ ''.&mt('Disallow chat room use for Users').' '.
'("'.&mt('user:domain,user:domain,...').'")',
'pch.roles.denied'=> ''.&mt('Disallow Resource Discussion for Roles').' '
@@ -2580,7 +2646,7 @@ sub crsenv {
'externalsyllabus'
=> ''.&mt('URL of Syllabus (not using internal handler)').'',
'tthoptions'
- => ''.&mt('Default set of options to pass to tth/m when converting tex').'',
+ => ''.&mt('Default set of options to pass to tth/m when converting TeX').'',
'texengine'
=> ''.&mt('Force all students in the course to use a specific math rendering engine.').' '
@@ -2599,69 +2665,91 @@ sub crsenv {
&mt('Display Categories').'',
'datelocale'
=> ''.&mt('Locale used for course calendar').'',
+ 'rolenames'
+ => ''.&mt('Replacement titles for standard course roles').' '.
+ '('.&mt('To replace the standard title for a course role, enter the title you wish to use, otherwise leave blank.').')',
);
- my @Display_Order = ('url','description','courseid','cloners');
- (my $can_toggle_cat,$can_categorize) = &can_modify_catsettings($dom);
- if ($can_toggle_cat) {
- push(@Display_Order,'hidefromcat');
- }
- if ($can_categorize) {
- push(@Display_Order,'categories');
- }
- push (@Display_Order,('grading',
- 'externalsyllabus',
- 'default_xml_style','pageseparators',
- 'question.email','question.email.text','comment.email',
- 'comment.email.text','policy.email','policy.email.text',
- 'student_classlist_view',
- 'student_classlist_opt_in',
- 'student_classlist_portfiles',
- 'plc.roles.denied','plc.users.denied',
- 'pch.roles.denied','pch.users.denied',
- 'allow_limited_html_in_feedback',
- 'allow_discussion_post_editing',
- 'languages',
- 'timezone',
- 'datelocale',
- 'nothideprivileged',
- 'rndseed',
- 'receiptalg',
- 'problem_stream_switch',
- 'suppress_tries',
- 'suppress_embed_prompt',
- 'default_paper_size',
- 'print_header_format',
- 'disable_receipt_display',
- 'spreadsheet_default_classcalc',
- 'spreadsheet_default_studentcalc',
- 'spreadsheet_default_assesscalc',
- 'hideemptyrows',
- 'default_enrollment_start_date',
- 'default_enrollment_end_date',
- 'tthoptions',
- 'texengine',
- 'disablesigfigs',
- 'disableexampointprint',
- 'task_messages','task_grading'));
- foreach my $parameter (sort(keys(%values))) {
- unless (($parameter =~ m/^internal\./)||($parameter =~ m/^metadata\./) ||
- ($parameter =~ m/^selfenroll_/) || ($parameter =~ /_selfenroll$/)
- || ($parameter eq 'type')) {
- if (! $descriptions{$parameter}) {
- $descriptions{$parameter}=$parameter;
- push(@Display_Order,$parameter);
- }
- }
- }
-
- foreach my $parameter (@Display_Order) {
- my $description = $descriptions{$parameter};
- # onchange is javascript to automatically check the 'Set' button.
- my $onchange = 'onFocus="javascript:window.document.forms'.
- "['envform'].elements['".$parameter."_setparmval']".
- '.checked=true;"';
- $output .= &Apache::loncommon::start_data_table_row().
- '
'.$description.'
';
+
+
+# The following code is kept to have access to the old version of display order
+
+# my @Display_Order = ('url','description','courseid','cloners');
+# (my $can_toggle_cat,$can_categorize) = &can_modify_catsettings($dom);
+# if ($can_toggle_cat) {
+# push(@Display_Order,'hidefromcat');
+# }
+# if ($can_categorize) {
+# push(@Display_Order,'categories');
+# }
+# push (@Display_Order,('grading',
+# 'externalsyllabus',
+# 'default_xml_style','pageseparators',
+# 'question.email','question.email.text','comment.email',
+# 'comment.email.text','policy.email','policy.email.text',
+# 'student_classlist_view',
+# 'student_classlist_opt_in',
+# 'student_classlist_portfiles',
+# 'plc.roles.denied','plc.users.denied',
+# 'pch.roles.denied','pch.users.denied',
+# 'allow_limited_html_in_feedback',
+# 'allow_discussion_post_editing',
+# 'languages',
+# 'timezone',
+# 'datelocale',
+# 'rolenames',
+# 'nothideprivileged',
+# 'rndseed',
+# 'receiptalg',
+# 'problem_stream_switch',
+# 'suppress_tries',
+# 'suppress_embed_prompt',
+# 'default_paper_size',
+# 'print_header_format',
+# 'disable_receipt_display',
+# 'spreadsheet_default_classcalc',
+# 'spreadsheet_default_studentcalc',
+# 'spreadsheet_default_assesscalc',
+# 'hideemptyrows',
+# 'default_enrollment_start_date',
+# 'default_enrollment_end_date',
+# 'tthoptions',
+# 'texengine',
+# 'disablesigfigs',
+# 'disableexampointprint',
+# 'task_messages','task_grading'));
+# foreach my $parameter (sort(keys(%values))) {
+# unless (($parameter =~ m/^internal\./)||($parameter =~ m/^metadata\./) ||
+# ($parameter =~ m/^selfenroll_/) || ($parameter =~ /_selfenroll$/)
+# || ($parameter eq 'type') ||
+# ($parameter =~ m/^(cc|in|ta|ep|ad|st)\.plaintext$/)) {
+# if (! $descriptions{$parameter}) {
+# $descriptions{$parameter}=$parameter;
+# push(@Display_Order,$parameter);
+# }
+# }
+# }
+
+
+
+
+# ----------------------------------------------------------------
+# Begin: New Version with Parameter Categories
+
+ sub parameter_row {
+ # Create parameter line for course environment screen
+ my ($parameter, $description) = @_;
+ my $output = '';
+
+ # Column 1/3: Descritive text of current parameter
+ $output = &Apache::loncommon::start_data_table_row()
+ .'
'.$description.'
';
+
+ # Column 2/3: Input field (Sometimes special field(s), depending on parameter)
+# -------------------------------
+ # onchange is javascript to automatically check the 'Set' button.
+ my $onchange = 'onFocus="javascript:window.document.forms'
+ ."['envform'].elements['".$parameter."_setparmval']"
+ .'.checked=true;"';
if ($parameter =~ /^default_enrollment_(start|end)_date$/) {
$output .= '