--- loncom/interface/lonconfigsettings.pm 2020/05/22 22:38:55 1.21.4.9.6.2 +++ loncom/interface/lonconfigsettings.pm 2024/07/06 16:46:51 1.21.4.15 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set domain-wide configuration settings # -# $Id: lonconfigsettings.pm,v 1.21.4.9.6.2 2020/05/22 22:38:55 raeburn Exp $ +# $Id: lonconfigsettings.pm,v 1.21.4.15 2024/07/06 16:46:51 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -39,7 +39,7 @@ use Apache::courseclassifier(); use LONCAPA qw(:DEFAULT :match); sub print_header { - my ($r,$phase,$context,$jscript,$container,$instcode,$dom,$values) = @_; + my ($r,$phase,$context,$jscript,$container,$instcode,$dom) = @_; my ($pagetitle,$brcrumtitle,$action,$call_category_check,$instcode_check, $crstype,@actions,@code_order); if ($phase eq 'display') { @@ -178,19 +178,58 @@ $jscript if ($context eq 'domain') { my $onload; if (grep(/^coursedefaults$/,@actions)) { - $onload = "toggleDisplay(document.display,'cloneinstcode');". + $onload = "toggleDisplay(document.display,'cloneinstcode');". "toggleDisplay(document.display,'credits');". "toggleDisplay(document.display,'studentsubmission');"; } - if (grep(/^ltitools$/,@actions)) { - $onload .= "toggleLTITools(document.display,'user','add');"; - if (ref($values) eq 'HASH') { - if (ref($values->{'ltitools'}) eq 'HASH') { - my $numltitools = scalar(keys(%{$values->{'ltitools'}})); - for (my $i=0; $i<$numltitools; $i++) { - $onload .= "toggleLTITools(document.display,'user','$i');"; - } + if (grep(/^selfcreation$/,@actions)) { + my $prefix = 'cancreate_emailverified'; + my $customclass = 'LC_selfcreate_email'; + my $classprefix = 'LC_canmodify_emailusername_'; + my $optionsprefix = 'LC_options_emailusername_'; + $onload .= "toggleRows(document.display,'cancreate_email','selfassign','$customclass','$classprefix','$optionsprefix');"; + my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom); + my $hascustom; + my ($emailrules,$emailruleorder) = &Apache::lonnet::inst_userrules($dom,'email'); + if (ref($emailrules) eq 'HASH') { + if (keys(%{$emailrules}) > 0) { + $hascustom = 'cancreate_emailrule'; + } + } + my @posstypes; + if (ref($types) eq 'ARRAY') { + @posstypes = @{$types}; + push(@posstypes,'default'); + foreach my $type (@posstypes) { + $onload .= "toggleEmailOptions(document.display,'cancreate_emailoptions','$hascustom',". + "'cancreate_emaildomain','$type');"; } + } else { + $onload .= "toggleEmailOptions(document.display,'cancreate_emailoptions','$hascustom',". + "'cancreate_emaildomain','default');"; + } + } + if (grep(/^contacts$/,@actions)) { + my $customclass = 'LC_helpdesk_override'; + my $optionsprefix = 'LC_options_helpdesk_'; + $onload .= "toggleHelpdeskRow(document.display,'overrides','$customclass','$optionsprefix');"; + } + if (grep(/^wafproxy$/,@actions)) { + $onload .= "toggleWAF();checkWAF();updateWAF();"; + } + if (grep(/^scantron$/,@actions)) { + $onload .= "toggleScantron(document.display);"; + } + if (grep(/^autoupdate$/,@actions)) { + $onload .= "toggleLastActiveDays(document.display);"; + } + if (grep(/^autoenroll$/,@actions)) { + $onload .= "toggleFailsafe(document.display);"; + } + if (grep(/^login$/,@actions)) { + my %domservers = &Apache::lonnet::get_servers($dom); + foreach my $server (sort(keys(%domservers))) { + $onload .= "toggleSamlOptions(document.display,'$server');"; } } if ($onload) { @@ -200,13 +239,21 @@ $jscript $additem = {'add_entries' => \%loaditems,}; } } elsif ($context eq 'course') { + my $onload; if (grep(/^courseinfo$/,@actions)) { if (@code_order) { - $additem = { - add_entries => {'onload' => "courseSet('','load');toggleCloners(document.display.cloners_instcode);"}, - }; + $onload = "courseSet('','load');toggleCloners(document.display.cloners_instcode);"; } } + if (grep(/^grading$/,@actions)) { + $onload .= 'toggleGrading(document.display);toggleHiddenTotalsSec(document.display);'; + } + if ($onload) { + my %loaditems = ( + 'onload' => $onload, + ); + $additem = {'add_entries' => \%loaditems,}; + } } } $r->print(&Apache::loncommon::start_page($pagetitle,$js,$additem)); @@ -279,7 +326,7 @@ sub make_changes { {href=>"javascript:changePage(document.$phase,'$phase')", text=>"Updated"}); &print_header($r,$phase,$context,undef,$container); - my ($crstype,%lastact); + my ($crstype,%lastact,$errors); if ($context eq 'course') { $crstype = &Apache::loncommon::course_type(); } @@ -293,9 +340,10 @@ sub make_changes { $confname,$item,$roles,$values,\%lastact)); } else { $changes{$item} = {}; - &Apache::courseprefs::process_changes($dom,$item,$values, - $prefs->{$item},$changes{$item}, - $allitems,\%disallowed,$crstype); + $errors = + &Apache::courseprefs::process_changes($dom,$item,$values, + $prefs->{$item},$changes{$item}, + $allitems,\%disallowed,$crstype); if (keys(%{$changes{$item}}) > 0) { $numchanged ++; } @@ -327,6 +375,9 @@ sub make_changes { } $r->print('
'); } + if ($errors) { + $r->print(''.$errors.'
'); + } } $r->print('');
my $footer_text = 'Back to configuration display';
@@ -350,7 +401,7 @@ sub display_settings {
if (ref($values) eq 'HASH') {
$instcode = $values->{'internal.coursecode'};
}
- &print_header($r,$phase,$context,$jscript,$container,$instcode,$dom,$values);
+ &print_header($r,$phase,$context,$jscript,$container,$instcode,$dom);
my $divwidth = 900;
if ((ref($prefs_order) eq 'ARRAY') && (ref($prefs) eq 'HASH') && (ref($values) eq 'HASH')) {
if (@actions > 0) {
@@ -400,7 +451,7 @@ sub display_settings {
$phase,$item,$prefs->{$item},$settings);
} else {
($output{$item},$rowtotal{$item}) =
- &Apache::courseprefs::print_config_box($r,$dom,$phase,
+ &Apache::courseprefs::print_config_box($r,$dom,$confname,$phase,
$item,$prefs->{$item},$values,$allitems,$crstype,$parm_permission);
}
$rowsum += $rowtotal{$item};
@@ -477,8 +528,8 @@ sub display_choices {
$thirddiv = 1;
}
}
- $r->print('
');
}
+ $r->print('