';
+ if ($same_institution) {
+ my %domservers = &Apache::lonnet::get_servers($dom);
+ $datatable .= &LONCAPA::SSL::print_certstatus(\%domservers,'web','domprefs');
+ } else {
+ $datatable .= &mt("You need to be logged into one of your own domain's servers to display information about the status of LON-CAPA SSL certificates.");
+ }
+ $datatable .= '
';
$itemcount ++;
} else {
my %titles = &ssl_titles();
@@ -4101,7 +4700,32 @@ sub print_ssl {
my @domservers = &Apache::lonnet::get_servers($dom);
my %servers = &Apache::lonnet::internet_dom_servers($dom);
my %altids = &id_for_thisdom(%servers);
- if ($position eq 'middle') {
+ if (($position eq 'connto') || ($position eq 'connfrom')) {
+ my $legacy;
+ unless (ref($settings) eq 'HASH') {
+ my $name;
+ if ($position eq 'connto') {
+ $name = 'loncAllowInsecure';
+ } else {
+ $name = 'londAllowInsecure';
+ }
+ my $primarylibserv = &Apache::lonnet::domain($dom,'primary');
+ my @ids=&Apache::lonnet::current_machine_ids();
+ if (($primarylibserv ne '') && (!grep(/^\Q$primarylibserv\E$/,@ids))) {
+ my %what = (
+ $name => 1,
+ );
+ my ($result,$returnhash) =
+ &Apache::lonnet::get_remote_globals($primarylibserv,\%what);
+ if ($result eq 'ok') {
+ if (ref($returnhash) eq 'HASH') {
+ $legacy = $returnhash->{$name};
+ }
+ }
+ } else {
+ $legacy = $Apache::lonnet::perlvar{$name};
+ }
+ }
foreach my $type ('dom','intdom','other') {
my %checked;
$css_class = $itemcount%2?' class="LC_odd_row"':'';
@@ -4128,16 +4752,21 @@ sub print_ssl {
unless ($skip) {
$checked{'yes'} = ' checked="checked"';
if (ref($settings) eq 'HASH') {
- if (ref($settings->{'connect'}) eq 'HASH') {
- if ($settings->{'connect'}->{$type} =~ /^(no|req)$/) {
+ if (ref($settings->{$position}) eq 'HASH') {
+ if ($settings->{$position}->{$type} =~ /^(no|req)$/) {
$checked{$1} = $checked{'yes'};
delete($checked{'yes'});
}
}
+ } else {
+ if ($legacy == 0) {
+ $checked{'req'} = $checked{'yes'};
+ delete($checked{'yes'});
+ }
}
foreach my $option ('no','yes','req') {
$datatable .= ''.(' 'x2);
}
@@ -4168,7 +4797,8 @@ sub ssl_titles {
dom => 'LON-CAPA servers/VMs from same domain',
intdom => 'LON-CAPA servers/VMs from same "internet" domain',
other => 'External LON-CAPA servers/VMs',
- connect => 'Connections to other servers',
+ connto => 'Connections to other servers',
+ connfrom => 'Connections from other servers',
replication => 'Replicating content to other institutions',
certreq => 'Client certificate required, but specific domains exempt',
nocertreq => 'No client certificate required, except for specific domains',
@@ -4378,7 +5008,7 @@ sub spares_row {
'.
&mt('[_1] when busy, offloads to:'
,''.$server.'').' '.
- ''."\n".
+ ''."\n".
''.
"\n";
@@ -4585,6 +5215,9 @@ sub print_loadbalancing {
my ($numspares,@spares) = &count_servers($lonhost,%servers);
my @sparestypes = ('primary','default');
my %typetitles = &sparestype_titles();
+ my %hostherechecked = (
+ no => ' checked="checked"',
+ );
foreach my $sparetype (@sparestypes) {
my $targettable;
for (my $i=0; $i<$numspares; $i++) {
@@ -4630,6 +5263,23 @@ sub print_loadbalancing {
$datatable .= ''.$typetitles{$sparetype}.' '.
'
'.$targettable.'
';
}
+ $hostherechecked{$sparetype} = '';
+ if (ref($currtargets{$lonhost}) eq 'HASH') {
+ if (ref($currtargets{$lonhost}{$sparetype}) eq 'ARRAY') {
+ if (grep(/^\Q$lonhost\E$/,@{$currtargets{$lonhost}{$sparetype}})) {
+ $hostherechecked{$sparetype} = ' checked="checked"';
+ $hostherechecked{'no'} = '';
+ }
+ }
+ }
+ }
+ $datatable .= &mt('Hosting on balancer itself').' '.
+ ' ';
+ foreach my $sparetype (@sparestypes) {
+ $datatable .= ' ';
}
$datatable .= ''.
&loadbalancing_rules($dom,$intdom,$currrules{$lonhost},
@@ -4847,14 +5497,15 @@ sub sparestype_titles {
sub contact_titles {
my %titles = &Apache::lonlocal::texthash (
- 'supportemail' => 'Support E-mail address',
- 'adminemail' => 'Default Server Admin E-mail address',
- 'errormail' => 'Error reports to be e-mailed to',
- 'packagesmail' => 'Package update alerts to be e-mailed to',
- 'helpdeskmail' => 'Helpdesk requests to be e-mailed to',
- 'lonstatusmail' => 'E-mail from nightly status check (warnings/errors)',
- 'requestsmail' => 'E-mail from course requests requiring approval',
- 'updatesmail' => 'E-mail from nightly check of LON-CAPA module integrity/updates',
+ 'supportemail' => 'Support E-mail address',
+ 'adminemail' => 'Default Server Admin E-mail address',
+ 'errormail' => 'Error reports to be e-mailed to',
+ 'packagesmail' => 'Package update alerts to be e-mailed to',
+ 'helpdeskmail' => "Helpdesk requests for this domain's users",
+ 'otherdomsmail' => 'Helpdesk requests for other (unconfigured) domains',
+ 'lonstatusmail' => 'E-mail from nightly status check (warnings/errors)',
+ 'requestsmail' => 'E-mail from course requests requiring approval',
+ 'updatesmail' => 'E-mail from nightly check of LON-CAPA module integrity/updates',
'idconflictsmail' => 'E-mail from bi-nightly check for multiple users sharing same student/employee ID',
);
my %short_titles = &Apache::lonlocal::texthash (
@@ -4864,6 +5515,34 @@ sub contact_titles {
return (\%titles,\%short_titles);
}
+sub helpform_fields {
+ my %titles = &Apache::lonlocal::texthash (
+ 'username' => 'Name',
+ 'user' => 'Username/domain',
+ 'phone' => 'Phone',
+ 'cc' => 'Cc e-mail',
+ 'course' => 'Course Details',
+ 'section' => 'Sections',
+ 'screenshot' => 'File upload',
+ );
+ my @fields = ('username','phone','user','course','section','cc','screenshot');
+ my %possoptions = (
+ username => ['yes','no','req'],
+ phone => ['yes','no','req'],
+ user => ['yes','no'],
+ cc => ['yes','no'],
+ course => ['yes','no'],
+ section => ['yes','no'],
+ screenshot => ['yes','no'],
+ );
+ my %fieldoptions = &Apache::lonlocal::texthash (
+ 'yes' => 'Optional',
+ 'req' => 'Required',
+ 'no' => "Not shown",
+ );
+ return (\@fields,\%titles,\%fieldoptions,\%possoptions);
+}
+
sub tool_titles {
my %titles = &Apache::lonlocal::texthash (
aboutme => 'Personal web page',
@@ -5471,7 +6150,10 @@ sub print_usermodification {
sub print_defaults {
my ($position,$dom,$settings,$rowtotal) = @_;
my $rownum = 0;
- my ($datatable,$css_class);
+ my ($datatable,$css_class,$titles);
+ unless ($position eq 'bottom') {
+ $titles = &defaults_titles($dom);
+ }
if ($position eq 'top') {
my @items = ('auth_def','auth_arg_def','lang_def','timezone_def',
'datelocale_def','portal_def');
@@ -5484,7 +6166,6 @@ sub print_defaults {
$defaults{$item} = $domdefaults{$item};
}
}
- my $titles = &defaults_titles($dom);
foreach my $item (@items) {
if ($rownum%2) {
$css_class = '';
@@ -5532,8 +6213,87 @@ sub print_defaults {
$datatable .= '';
$rownum ++;
}
+ } elsif ($position eq 'middle') {
+ my @items = ('intauth_cost','intauth_check','intauth_switch');
+ my %defaults;
+ if (ref($settings) eq 'HASH') {
+ %defaults = %{$settings};
+ if ($defaults{'intauth_cost'} !~ /^\d+$/) {
+ $defaults{'intauth_cost'} = 10;
+ }
+ if ($defaults{'intauth_check'} !~ /^(0|1|2)$/) {
+ $defaults{'intauth_check'} = 0;
+ }
+ if ($defaults{'intauth_switch'} !~ /^(0|1|2)$/) {
+ $defaults{'intauth_switch'} = 0;
+ }
+ } else {
+ %defaults = (
+ 'intauth_cost' => 10,
+ 'intauth_check' => 0,
+ 'intauth_switch' => 0,
+ );
+ }
+ foreach my $item (@items) {
+ if ($rownum%2) {
+ $css_class = '';
+ } else {
+ $css_class = ' class="LC_odd_row" ';
+ }
+ $datatable .= '
'.
+ '
'.$titles->{$item}.
+ '
';
+ if ($item eq 'intauth_switch') {
+ my @options = (0,1,2);
+ my %optiondesc = &Apache::lonlocal::texthash (
+ 0 => 'No',
+ 1 => 'Yes',
+ 2 => 'Yes, and copy existing passwd file to passwd.bak file',
+ );
+ $datatable .= '
';
+ foreach my $option (@options) {
+ my $checked = ' ';
+ if ($defaults{$item} eq $option) {
+ $checked = ' checked="checked"';
+ }
+ $datatable .= '
'.
+ '
';
+ }
+ $datatable .= '
';
+ } elsif ($item eq 'intauth_check') {
+ my @options = (0,1,2);
+ my %optiondesc = &Apache::lonlocal::texthash (
+ 0 => 'No',
+ 1 => 'Yes, allow login then update passwd file using default cost (if higher)',
+ 2 => 'Yes, disallow login if stored cost is less than domain default',
+ );
+ $datatable .= '
';
+ foreach my $option (@options) {
+ my $checked = ' ';
+ my $onclick;
+ if ($defaults{$item} eq $option) {
+ $checked = ' checked="checked"';
+ }
+ if ($option == 2) {
+ $onclick = ' onclick="javascript:warnIntAuth(this);"';
+ }
+ $datatable .= '
';
+ my (%shownprivs,@levelorder);
+ @levelorder = ('c','d','s');
+ if ((keys(%changes)) && ($putresult eq 'ok')) {
foreach my $item (sort(keys(%changes))) {
if ($item eq 'submitbugs') {
$resulttext .= '
'.&mt('Display link to: [_1] set to "'.$offon[$env{'form.'.$item}].'".',
&Apache::loncommon::modal_link('http://bugs.loncapa.org',
&mt('LON-CAPA bug tracker'),600,500)).'
';
+ } elsif ($item eq 'customrole') {
+ if (ref($changes{'customrole'}) eq 'HASH') {
+ my @keyorder = ('order','desc','access','status','exc','inc');
+ my %keytext = &Apache::lonlocal::texthash(
+ order => 'Order',
+ desc => 'Role description',
+ access => 'Role usage',
+ status => 'Allowed instituional types',
+ exc => 'Allowed personnel',
+ inc => 'Disallowed personnel',
+ );
+ foreach my $role (sort(keys(%{$changes{'customrole'}}))) {
+ if (ref($changes{'customrole'}{$role}) eq 'HASH') {
+ if ($role eq $newrole) {
+ $resulttext .= '
'.&mt('New custom role added: [_1]',
+ $role).'
';
+ } else {
+ $resulttext .= '
'.&mt('Existing custom role modified: [_1]',
+ $role).'
';
+ }
+ foreach my $key (@keyorder) {
+ if ($changes{'customrole'}{$role}{$key}) {
+ $resulttext .= '
'.&mt("[_1] set to: [_2]",
+ $keytext{$key},$newsettings{$role}{$key}).
+ '
'.&mt('Submit button(s) remain enabled on page after student makes submission.');
} else {
$resulttext .= '
'.&mt('Submit button(s) disabled on page after student makes submission').'; ';
- if (ref($defaultshash{'coursedefaults'}{'postsubmit'}) eq 'HASH') {
+ if (ref($defaultshash{'coursedefaults'}{'postsubmit'}) eq 'HASH') {
$resulttext .= &mt('durations:').'