';
+ 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();
@@ -4585,6 +4979,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 +5027,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},
@@ -8242,7 +8656,7 @@ sub modify_quotas {
}
if ($env{'form.validationdc'}) {
my $newval = $env{'form.validationdc'};
- my %domcoords = &get_active_dcs($dom);
+ my %domcoords = &Apache::lonnet::get_active_domroles($dom,['dc']);
if (exists($domcoords{$newval})) {
$confhash{'validation'}{'dc'} = $newval;
}
@@ -9499,7 +9913,7 @@ sub modify_autocreate {
$newvals{$item} = 0 if ($newvals{$item} eq '');
}
$newvals{'xmldc'} = $env{'form.autocreate_xmldc'};
- my %domcoords = &get_active_dcs($dom);
+ my %domcoords = &Apache::lonnet::get_active_domroles($dom,['dc']);
unless (exists($domcoords{$newvals{'xmldc'}})) {
$newvals{'xmldc'} = '';
}
@@ -11685,32 +12099,208 @@ sub modify_serverstatuses {
}
sub modify_helpsettings {
- my ($r,$dom,$confname,%domconfig) = @_;
+ my ($r,$dom,$confname,$lastactref,%domconfig) = @_;
my ($resulttext,$errors,%changes,%helphash);
my %defaultchecked = ('submitbugs' => 'on');
my @offon = ('off','on');
my @toggles = ('submitbugs');
+ my %current = ('submitbugs' => '',
+ 'adhoc' => {},
+ );
if (ref($domconfig{'helpsettings'}) eq 'HASH') {
- foreach my $item (@toggles) {
- if ($defaultchecked{$item} eq 'on') {
- if ($domconfig{'helpsettings'}{$item} eq '') {
- if ($env{'form.'.$item} eq '0') {
- $changes{$item} = 1;
- }
- } elsif ($domconfig{'helpsettings'}{$item} ne $env{'form.'.$item}) {
+ %current = %{$domconfig{'helpsettings'}};
+ }
+ my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1);
+ foreach my $item (@toggles) {
+ if ($defaultchecked{$item} eq 'on') {
+ if ($current{$item} eq '') {
+ if ($env{'form.'.$item} eq '0') {
$changes{$item} = 1;
}
- } elsif ($defaultchecked{$item} eq 'off') {
- if ($domconfig{'helpsettings'}{$item} eq '') {
- if ($env{'form.'.$item} eq '1') {
- $changes{$item} = 1;
- }
- } elsif ($domconfig{'helpsettings'}{$item} ne $env{'form.'.$item}) {
+ } elsif ($current{$item} ne $env{'form.'.$item}) {
+ $changes{$item} = 1;
+ }
+ } elsif ($defaultchecked{$item} eq 'off') {
+ if ($current{$item} eq '') {
+ if ($env{'form.'.$item} eq '1') {
$changes{$item} = 1;
}
+ } elsif ($current{$item} ne $env{'form.'.$item}) {
+ $changes{$item} = 1;
+ }
+ }
+ if (($env{'form.'.$item} eq '0') || ($env{'form.'.$item} eq '1')) {
+ $helphash{'helpsettings'}{$item} = $env{'form.'.$item};
+ }
+ }
+ my $maxnum = $env{'form.helproles_maxnum'};
+ my $confname = $dom.'-domainconfig';
+ my %existing=&Apache::lonnet::dump('roles',$dom,$confname,'rolesdef_');
+ my (@allpos,%newsettings,%changedprivs,$newrole);
+ my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
+ my @accesstypes = ('all','none','status','inc','exc');
+ my %domhelpdesk = &Apache::lonnet::get_active_domroles($dom,['dh']);
+ my %lt = &Apache::lonlocal::texthash(
+ s => 'system',
+ d => 'domain',
+ order => 'Display order',
+ access => 'Role usage',
+ all => 'All',
+ none => 'None',
+ status => 'Determined based on institutional status',
+ inc => 'Include all, but exclude specific personnel',
+ exc => 'Exclude all, but include specific personnel',
+ );
+ for (my $num=0; $num<=$maxnum; $num++) {
+ my ($prefix,$identifier,$rolename,%curr);
+ if ($num == $maxnum) {
+ next unless ($env{'form.newcusthelp'} == $maxnum);
+ $identifier = 'custhelp'.$num;
+ $prefix = 'helproles_'.$num;
+ $rolename = $env{'form.custhelpname'.$num};
+ $rolename=~s/[^A-Za-z0-9]//gs;
+ next if ($rolename eq '');
+ next if (exists($existing{'rolesdef_'.$rolename}));
+ my %newprivs = &Apache::lonuserutils::custom_role_update($rolename,$identifier);
+ my $result = &Apache::lonnet::definerole($rolename,$newprivs{'s'},$newprivs{'d'},
+ $newprivs{'c'},$confname,$dom);
+ if ($result ne 'ok') {
+ $errors .= '
'.
+ &mt('An error occurred storing the new custom role: [_1]',
+ $result).'
';
+ next;
+ } else {
+ $changedprivs{$rolename} = \%newprivs;
+ $newrole = $rolename;
+ }
+ } else {
+ $prefix = 'helproles_'.$num;
+ $rolename = $env{'form.'.$prefix};
+ next if ($rolename eq '');
+ next unless (exists($existing{'rolesdef_'.$rolename}));
+ $identifier = 'custhelp'.$num;
+ my %newprivs = &Apache::lonuserutils::custom_role_update($rolename,$identifier);
+ my %currprivs;
+ ($currprivs{'s'},$currprivs{'d'},$currprivs{'c'}) =
+ split(/\_/,$existing{'rolesdef_'.$rolename});
+ foreach my $level ('c','d','s') {
+ if ($newprivs{$level} ne $currprivs{$level}) {
+ my $result = &Apache::lonnet::definerole($rolename,$newprivs{'s'},$newprivs{'d'},
+ $newprivs{'c'},$confname,$dom);
+ if ($result ne 'ok') {
+ $errors .= '
'.
+ &mt('An error occurred storing privileges for existing role [_1]: [_2]',
+ $rolename,$result).'
';
+ 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}).
+ '