'.&mt('Failsafe for no drops if institutional data missing for a section: deleted');
}
&Apache::lonnet::get_domain_defaults($dom,1);
if (ref($lastactref) eq 'HASH') {
@@ -10160,7 +10542,7 @@ sub modify_autocreate {
}
sub modify_directorysrch {
- my ($dom,%domconfig) = @_;
+ my ($dom,$lastactref,%domconfig) = @_;
my ($resulttext,%changes);
my %currdirsrch;
if (ref($domconfig{'directorysrch'}) eq 'HASH') {
@@ -10354,6 +10736,10 @@ sub modify_directorysrch {
$resulttext .= '
'.&mt($title{'searchtypes'}.' set to: "[_1]"',$chgtext).'
';
}
$resulttext .= '
';
+ &Apache::lonnet::do_cache_new('directorysrch',$dom,$dirsrch_hash{'directorysrch'},3600);
+ if (ref($lastactref) eq 'HASH') {
+ $lastactref->{'directorysrch'} = 1;
+ }
} else {
$resulttext = &mt('No changes made to directory search settings');
}
@@ -10672,12 +11058,10 @@ sub modify_usercreation {
if ($key eq 'cancreate') {
if (ref($domconfig{'usercreation'}{$key}) eq 'HASH') {
foreach my $item (keys(%{$domconfig{'usercreation'}{$key}})) {
- if (($item eq 'selfcreate') || ($item eq 'statustocreate') ||
- ($item eq 'captcha') || ($item eq 'recaptchakeys') ||
- ($item eq 'recaptchaversion')) {
- $save_usercreate{$key}{$item} = $domconfig{'usercreation'}{$key}{$item};
- } else {
+ if (($item eq 'requestcrs') || ($item eq 'course') || ($item eq 'author')) {
$curr_usercreation{$key}{$item} = $domconfig{'usercreation'}{$key}{$item};
+ } else {
+ $save_usercreate{$key}{$item} = $domconfig{'usercreation'}{$key}{$item};
}
}
}
@@ -10882,12 +11266,18 @@ sub modify_usercreation {
sub modify_selfcreation {
my ($dom,%domconfig) = @_;
my ($resulttext,$warningmsg,%curr_usercreation,%curr_usermodify,%changes,%cancreate);
- my (%save_usercreate,%save_usermodify);
- my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
- if (ref($types) eq 'ARRAY') {
- $usertypes->{'default'} = $othertitle;
- push(@{$types},'default');
+ my (%save_usercreate,%save_usermodify,@types,%usertypes);
+ my ($othertitle,$usertypesref,$typesref) = &Apache::loncommon::sorted_inst_types($dom);
+ if (ref($typesref) eq 'ARRAY') {
+ @types = @{$typesref};
}
+ unless (grep(/^default$/,@types)) {
+ push(@types,'default');
+ }
+ if (ref($usertypesref) eq 'HASH') {
+ %usertypes = %{$usertypesref};
+ }
+ $usertypes{'default'} = $othertitle;
#
# Retrieve current domain configuration for self-creation of usernames from $domconfig{'usercreation'}.
#
@@ -10897,10 +11287,11 @@ sub modify_selfcreation {
if (ref($domconfig{'usercreation'}{$key}) eq 'HASH') {
foreach my $item (keys(%{$domconfig{'usercreation'}{$key}})) {
if (($item eq 'selfcreate') || ($item eq 'statustocreate') ||
- ($item eq 'captcha') || ($item eq 'recaptchakeys') ||
- ($item eq 'recaptchaversion') ||
- ($item eq 'emailusername') || ($item eq 'notify') ||
- ($item eq 'selfcreateprocessing') || ($item eq 'shibenv')) {
+ ($item eq 'captcha') || ($item eq 'recaptchakeys') ||
+ ($item eq 'recaptchaversion') || ($item eq 'notify') ||
+ ($item eq 'emailusername') || ($item eq 'shibenv') ||
+ ($item eq 'selfcreateprocessing') || ($item eq 'emailverified') ||
+ ($item eq 'emaildomain')) {
$curr_usercreation{$key}{$item} = $domconfig{'usercreation'}{$key}{$item};
} else {
$save_usercreate{$key}{$item} = $domconfig{'usercreation'}{$key}{$item};
@@ -10933,10 +11324,12 @@ sub modify_selfcreation {
@{$cancreate{'statustocreate'}} = ();
%{$cancreate{'selfcreateprocessing'}} = ();
%{$cancreate{'shibenv'}} = ();
+ %{$cancreate{'emailverified'}} = ();
+ %{$cancreate{'emaildomain'}} = ();
my %selfcreatetypes = (
sso => 'users authenticated by institutional single sign on',
login => 'users authenticated by institutional log-in',
- email => 'users who provide a valid e-mail address for use as username',
+ email => 'users verified by e-mail',
);
#
# Populate $cancreate{'selfcreate'} array reference with types of user, for which self-creation of user accounts
@@ -10955,12 +11348,22 @@ sub modify_selfcreation {
if ($item eq 'email') {
if ($env{'form.cancreate_email'}) {
push(@{$cancreate{'selfcreate'}},'email');
- push(@contexts,'selfcreateprocessing');
+ push(@contexts,('selfcreateprocessing','emailverified','emaildomain'));
foreach my $type (@statuses) {
if ($type eq 'default') {
$cancreate{'selfcreateprocessing'}{$type} = $env{'form.cancreate_emailprocess'};
+ unless ($cancreate{'selfcreateprocessing'}{$type} eq 'notinuse') {
+ $cancreate{'emailverified'}{$type} = $env{'form.cancreate_emailverified'};
+ if ($cancreate{'emailverified'}{$type} eq 'other') {
+ $cancreate{'emaildomain'}{$type} =$env{'form.cancreate_emaildomain'};
+ }
+ }
} else {
$cancreate{'selfcreateprocessing'}{$type} = $env{'form.cancreate_emailprocess_'.$type};
+ $cancreate{'emailverified'}{$type} = $env{'form.cancreate_emailverified_'.$type};
+ if ($cancreate{'emailverified'}{$type} eq 'other') {
+ $cancreate{'emaildomain'}{$type} =$env{'form.cancreate_emaildomain_'.$type};
+ }
}
}
}
@@ -10979,8 +11382,8 @@ sub modify_selfcreation {
if ($env{'form.cancreate_email'}) {
push(@contexts,'emailusername');
- if (ref($types) eq 'ARRAY') {
- foreach my $type (@{$types}) {
+ if (@types) {
+ foreach my $type (@types) {
if (ref($infofields) eq 'ARRAY') {
foreach my $field (@{$infofields}) {
if ($env{'form.canmodify_emailusername_'.$type.'_'.$field} =~ /^(required|optional)$/) {
@@ -10992,7 +11395,7 @@ sub modify_selfcreation {
}
#
# Populate $cancreate{'notify'} hash ref with names of Domain Coordinators who are to be notified of
-# queued requests for self-creation of account using e-mail address as username
+# queued requests for self-creation of account verified by e-mail.
#
my @approvalnotify = &Apache::loncommon::get_env_multiple('form.selfcreationnotifyapproval');
@@ -11013,7 +11416,7 @@ sub modify_selfcreation {
}
#
-# Retrieve rules (if any) governing types of e-mail address which may be used as a username
+# Retrieve rules (if any) governing types of e-mail address which may be used to verify a username.
#
@email_rule = &Apache::loncommon::get_env_multiple('form.email_rule');
&process_captcha('cancreate',\%changes,\%savecaptcha,$curr_usercreation{'cancreate'});
@@ -11060,14 +11463,14 @@ sub modify_selfcreation {
# which the user may supply, if institutional data is unavailable.
#
if (($env{'form.cancreate_login'}) || ($env{'form.cancreate_sso'})) {
- if (ref($types) eq 'ARRAY') {
- if (@{$types} > 1) {
+ if (@types) {
+ if (@types > 1) {
@{$cancreate{'statustocreate'}} = &Apache::loncommon::get_env_multiple('form.statustocreate');
push(@contexts,'statustocreate');
} else {
undef($cancreate{'statustocreate'});
}
- foreach my $type (@{$types}) {
+ foreach my $type (@types) {
my @modifiable = &Apache::loncommon::get_env_multiple('form.canmodify_'.$type);
foreach my $field (@fields) {
if (grep(/^\Q$field\E$/,@modifiable)) {
@@ -11078,7 +11481,7 @@ sub modify_selfcreation {
}
}
if (ref($curr_usermodify{'selfcreate'}) eq 'HASH') {
- foreach my $type (@{$types}) {
+ foreach my $type (@types) {
if (ref($curr_usermodify{'selfcreate'}{$type}) eq 'HASH') {
foreach my $field (@fields) {
if ($save_usermodify{'selfcreate'}{$type}{$field} ne
@@ -11090,7 +11493,7 @@ sub modify_selfcreation {
}
}
} else {
- foreach my $type (@{$types}) {
+ foreach my $type (@types) {
push(@{$changes{'selfcreate'}},$type);
}
}
@@ -11148,7 +11551,7 @@ sub modify_selfcreation {
}
}
}
- } elsif ($item eq 'selfcreateprocessing') {
+ } elsif (($item eq 'selfcreateprocessing') || ($item eq 'emailverified') || ($item eq 'emaildomain')) {
if ($cancreate{$item}{$curr} ne $curr_usercreation{'cancreate'}{$item}{$curr}) {
if (!grep(/^$item$/,@{$changes{'cancreate'}})) {
push(@{$changes{'cancreate'}},$item);
@@ -11236,6 +11639,12 @@ sub modify_selfcreation {
if (ref($cancreate{'selfcreateprocessing'}) eq 'HASH') {
$save_usercreate{'cancreate'}{'selfcreateprocessing'} = $cancreate{'selfcreateprocessing'};
}
+ if (ref($cancreate{'emailverified'}) eq 'HASH') {
+ $save_usercreate{'cancreate'}{'emailverified'} = $cancreate{'emailverified'};
+ }
+ if (ref($cancreate{'emaildomain'}) eq 'HASH') {
+ $save_usercreate{'cancreate'}{'emaildomain'} = $cancreate{'emaildomain'};
+ }
if (ref($cancreate{'statustocreate'}) eq 'ARRAY') {
$save_usercreate{'cancreate'}{'statustocreate'} = $cancreate{'statustocreate'};
}
@@ -11260,7 +11669,7 @@ sub modify_selfcreation {
if (ref($changes{'cancreate'}) eq 'ARRAY') {
my %lt = &selfcreation_types();
foreach my $type (@{$changes{'cancreate'}}) {
- my $chgtext;
+ my $chgtext = '';
if ($type eq 'selfcreate') {
if (@{$cancreate{$type}} == 0) {
$chgtext .= &mt('Self creation of a new user account is not permitted.');
@@ -11275,10 +11684,25 @@ sub modify_selfcreation {
if (grep(/^(login|sso)$/,@{$cancreate{$type}})) {
if (ref($cancreate{'statustocreate'}) eq 'ARRAY') {
if (@{$cancreate{'statustocreate'}} == 0) {
- $chgtext .= ' '.
- ''.
- &mt("However, no institutional affiliations (including 'other') are currently permitted to create accounts.").
- '';
+ $chgtext .= ''.
+ &mt("However, no institutional affiliations (including 'other') are currently permitted to create accounts via log-in or single sign-on.").
+ ' ';
+ }
+ }
+ }
+ if (grep(/^email$/,@{$cancreate{$type}})) {
+ if (@statuses > 1) {
+ my $numtypes = 0;
+ foreach my $type (@statuses) {
+ unless ($cancreate{'selfcreateprocessing'}{$type} eq 'notinuse') {
+ $numtypes ++;
+ }
+ }
+ if (!$numtypes) {
+ $chgtext .= ''.
+ &mt("However, e-mail verification is currently set to 'unavailable' for all user types (including 'other'), so self-creation of accounts is not possible for non-institutional log-in.").
+ ' ';
+
}
}
}
@@ -11286,7 +11710,7 @@ sub modify_selfcreation {
}
} elsif ($type eq 'shibenv') {
if (keys(%{$cancreate{$type}}) == 0) {
- $chgtext .= &mt('Shibboleth-autheticated user does not use environment variables to set user information');
+ $chgtext .= &mt('Shibboleth-autheticated user does not use environment variables to set user information').' ';
} else {
$chgtext .= &mt('Shibboleth-autheticated user information set from environment variables, as follows:').
'
';
- }
+ }
} elsif ($type eq 'statustocreate') {
if ((ref($cancreate{'selfcreate'}) eq 'ARRAY') &&
(ref($cancreate{'statustocreate'}) eq 'ARRAY')) {
@@ -11312,7 +11736,7 @@ sub modify_selfcreation {
&mt("However, no institutional affiliations (including 'other') are currently permitted to create accounts.").
'';
}
- } elsif (ref($usertypes) eq 'HASH') {
+ } elsif (keys(%usertypes) > 0) {
if (grep(/^(login|sso)$/,@{$cancreate{'selfcreate'}})) {
$chgtext .= &mt('Creation of a new account for an institutional user is restricted to the following institutional affiliation(s):');
} else {
@@ -11323,12 +11747,12 @@ sub modify_selfcreation {
if ($case eq 'default') {
$chgtext .= '
'.$othertitle.'
';
} else {
- $chgtext .= '
'.$usertypes->{$case}.'
';
+ $chgtext .= '
'.$usertypes{$case}.'
';
}
}
$chgtext .= '';
if (!grep(/^(login|sso)$/,@{$cancreate{'selfcreate'}})) {
- $chgtext .= ' '.
+ $chgtext .= ''.
&mt('However, users authenticated by institutional login/single sign on are not currently permitted to create accounts.').
'';
}
@@ -11340,26 +11764,109 @@ sub modify_selfcreation {
$chgtext .= &mt('Although institutional affiliations permitted to create accounts were changed, self creation of accounts is not currently permitted for any authentication types.');
}
}
+ $chgtext .= ' ';
}
} elsif ($type eq 'selfcreateprocessing') {
my %choices = &Apache::lonlocal::texthash (
automatic => 'Automatic approval',
approval => 'Queued for approval',
+ notinuse => 'Unavailable',
);
if (@statuses > 1) {
- $chgtext .= &mt('Processing of requests to create account with e-mail address as username set as follows:').
- '
';
- foreach my $type (@statuses) {
- if ($type eq 'default') {
- $chgtext .= '
';
+ }
+ } else {
+ if ($cancreate{'emailverified'}{'default'} eq 'other') {
+ if ($cancreate{'emaildomain'}{'default'} eq '') {
+ $chgtext .= &mt('No restriction on e-mail domain for self-created accounts verified by e-mail address, where username is chosen by user.');
+ } else {
+ $chgtext .= &mt('For self-created accounts verified by e-mail address, where username is chosen by user, e-mail domain needs to be: [_1],
+ $cancreate{'selfcreateprocessing'}{'default'});
+ }
+ }
}
} elsif ($type eq 'captcha') {
if ($savecaptcha{$type} eq 'notused') {
@@ -11396,11 +11903,11 @@ sub modify_selfcreation {
}
} elsif ($type eq 'emailusername') {
if (ref($cancreate{'emailusername'}) eq 'HASH') {
- if (ref($types) eq 'ARRAY') {
- foreach my $type (@{$types}) {
+ if (@types) {
+ foreach my $type (@types) {
if (ref($cancreate{'emailusername'}{$type}) eq 'HASH') {
if (keys(%{$cancreate{'emailusername'}{$type}}) > 0) {
- $chgtext .= &mt('When self-creating account with e-mail as username, the following information will be provided by [_1]:',"'$usertypes->{$type}'").
+ $chgtext .= &mt('When self-creating account with e-mail verification, the following information will be provided by [_1]:',"'$usertypes{$type}'").
'
';
foreach my $field (@{$infofields}) {
if ($cancreate{'emailusername'}{$type}{$field}) {
@@ -11409,23 +11916,27 @@ sub modify_selfcreation {
}
$chgtext .= '
';
} else {
- $chgtext .= &mt('When self creating account with e-mail as username, no information besides e-mail address will be provided by [_1].',"'$usertypes->{$type}'").' ';
+ $chgtext .= &mt('When self creating account with e-mail verification, no information besides e-mail address will be provided by [_1].',"'$usertypes{$type}'").' ';
}
} else {
- $chgtext .= &mt('When self creating account with e-mail as username, no information besides e-mail address will be provided by [_1].',"'$usertypes->{$type}'").' ';
+ $chgtext .= &mt('When self creating account with e-mail verification, no information besides e-mail address will be provided by [_1].',"'$usertypes{$type}'").' ';
}
}
}
}
} elsif ($type eq 'notify') {
- $chgtext = &mt('No Domain Coordinators will receive notification of username requests requiring approval.');
+ my $numapprove = 0;
if (ref($changes{'cancreate'}) eq 'ARRAY') {
if ((grep(/^notify$/,@{$changes{'cancreate'}})) && (ref($cancreate{'notify'}) eq 'HASH')) {
if ($cancreate{'notify'}{'approval'}) {
- $chgtext = &mt('Notification of username requests requiring approval will be sent to: ').$cancreate{'notify'}{'approval'};
+ $chgtext .= &mt('Notification of username requests requiring approval will be sent to: ').$cancreate{'notify'}{'approval'};
+ $numapprove ++;
}
}
}
+ unless ($numapprove) {
+ $chgtext .= &mt('No Domain Coordinators will receive notification of username requests requiring approval.');
+ }
}
if ($chgtext) {
$resulttext .= '
'.$chgtext.'
';
@@ -11444,12 +11955,12 @@ sub modify_selfcreation {
$chgtext .= '';
if (@email_rule > 0) {
$resulttext .= '
'.
- &mt('Accounts may not be created by users self-enrolling with e-mail addresses of the following types: ').
+ &mt('Accounts may not be created by users verified by e-mail, for e-mail addresses of the following types: ').
$chgtext.
'
';
} else {
$resulttext .= '
'.
- &mt('There are now no restrictions on e-mail addresses which may be used as a username when self-enrolling.').
+ &mt('There are now no restrictions on e-mail addresses which may be used for verification when self-enrolling.').
'
';
}
}
@@ -11458,9 +11969,9 @@ sub modify_selfcreation {
my %fieldtitles = &Apache::loncommon::personal_data_fieldtitles();
foreach my $type (@{$changes{'selfcreate'}}) {
my $typename = $type;
- if (ref($usertypes) eq 'HASH') {
- if ($usertypes->{$type} ne '') {
- $typename = $usertypes->{$type};
+ if (keys(%usertypes) > 0) {
+ if ($usertypes{$type} ne '') {
+ $typename = $usertypes{$type};
}
}
my @modifiable;
@@ -11679,7 +12190,8 @@ sub modify_defaults {
my ($dom,$lastactref,%domconfig) = @_;
my ($resulttext,$mailmsgtxt,%newvalues,%changes,@errors);
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom,1);
- my @items = ('auth_def','auth_arg_def','lang_def','timezone_def','datelocale_def','portal_def');
+ my @items = ('auth_def','auth_arg_def','lang_def','timezone_def','datelocale_def',
+ 'portal_def','intauth_cost','intauth_check','intauth_switch');
my @authtypes = ('internal','krb4','krb5','localauth');
foreach my $item (@items) {
$newvalues{$item} = $env{'form.'.$item};
@@ -11721,6 +12233,24 @@ sub modify_defaults {
push(@errors,$item);
}
}
+ } elsif ($item eq 'intauth_cost') {
+ if ($newvalues{$item} ne '') {
+ if ($newvalues{$item} =~ /\D/) {
+ push(@errors,$item);
+ }
+ }
+ } elsif ($item eq 'intauth_check') {
+ if ($newvalues{$item} ne '') {
+ unless ($newvalues{$item} =~ /^(0|1|2)$/) {
+ push(@errors,$item);
+ }
+ }
+ } elsif ($item eq 'intauth_switch') {
+ if ($newvalues{$item} ne '') {
+ unless ($newvalues{$item} =~ /^(0|1|2)$/) {
+ push(@errors,$item);
+ }
+ }
}
if (grep(/^\Q$item\E$/,@errors)) {
$newvalues{$item} = $domdefaults{$item};
@@ -11875,6 +12405,28 @@ sub modify_defaults {
localauth => 'loc',
);
$value = $authnames{$shortauth{$value}};
+ } elsif ($item eq 'intauth_switch') {
+ my %optiondesc = &Apache::lonlocal::texthash (
+ 0 => 'No',
+ 1 => 'Yes',
+ 2 => 'Yes, and copy existing passwd file to passwd.bak file',
+ );
+ if ($value =~ /^(0|1|2)$/) {
+ $value = $optiondesc{$value};
+ } else {
+ $value = &mt('none -- defaults to No');
+ }
+ } elsif ($item eq 'intauth_check') {
+ 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',
+ );
+ if ($value =~ /^(0|1|2)$/) {
+ $value = $optiondesc{$value};
+ } else {
+ $value = &mt('none -- defaults to No');
+ }
}
$resulttext .= '
'.&mt('[_1] set to "[_2]"',$title->{$item},$value).'
';
$mailmsgtext .= "$title->{$item} set to $value\n";
@@ -12459,7 +13011,7 @@ sub modify_helpsettings {
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','anydh','anyda','none','status','inc','exc');
+ my @accesstypes = ('all','dh','da','none','status','inc','exc');
my %domhelpdesk = &Apache::lonnet::get_active_domroles($dom,['dh','da']);
my %lt = &Apache::lonlocal::texthash(
s => 'system',
@@ -12467,8 +13019,8 @@ sub modify_helpsettings {
order => 'Display order',
access => 'Role usage',
all => 'All with domain helpdesk or helpdesk assistant role',
- anydh => 'All with domain helpdesk role',
- anyda => 'All with domain helpdesk assistant role',
+ dh => 'All with domain helpdesk role',
+ da => 'All with domain helpdesk assistant role',
none => 'None',
status => 'Determined based on institutional status',
inc => 'Include all, but exclude specific personnel',
@@ -12665,7 +13217,7 @@ sub modify_helpsettings {
order => 'Order',
desc => 'Role description',
access => 'Role usage',
- status => 'Allowed instituional types',
+ status => 'Allowed institutional types',
exc => 'Allowed personnel',
inc => 'Disallowed personnel',
);
@@ -13592,8 +14144,10 @@ sub modify_usersessions {
}
my $cachetime = 24*60*60;
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime);
+ &Apache::lonnet::do_cache_new('usersessions',$dom,$defaultshash{'usersessions'},3600);
if (ref($lastactref) eq 'HASH') {
$lastactref->{'domdefaults'} = 1;
+ $lastactref->{'usersessions'} = 1;
}
if (keys(%changes) > 0) {
my %lt = &usersession_titles();
@@ -13694,7 +14248,7 @@ sub modify_ssl {
my %servers = &Apache::lonnet::internet_dom_servers($dom);
my (%defaultshash,%changes);
my $action = 'ssl';
- my @prefixes = ('connect','replication');
+ my @prefixes = ('connto','connfrom','replication');
foreach my $prefix (@prefixes) {
$defaultshash{$action}{$prefix} = {};
}
@@ -13704,12 +14258,13 @@ sub modify_ssl {
my @reptypes = ('certreq','nocertreq');
my @connecttypes = ('dom','intdom','other');
my %types = (
- connect => \@connecttypes,
- replication => \@reptypes,
+ connto => \@connecttypes,
+ connfrom => \@connecttypes,
+ replication => \@reptypes,
);
foreach my $prefix (sort(keys(%types))) {
foreach my $type (@{$types{$prefix}}) {
- if ($prefix eq 'connect') {
+ if (($prefix eq 'connto') || ($prefix eq 'connfrom')) {
my $value = 'yes';
if ($env{'form.'.$prefix.'_'.$type} =~ /^(no|req)$/) {
$value = $env{'form.'.$prefix.'_'.$type};
@@ -13798,8 +14353,11 @@ sub modify_ssl {
if (ref($defaultshash{$action}{'replication'}) eq 'HASH') {
$domdefaults{'replication'} = $defaultshash{$action}{'replication'};
}
- if (ref($defaultshash{$action}{'connect'}) eq 'HASH') {
- $domdefaults{'connect'} = $domconfig{$action}{'connect'};
+ if (ref($defaultshash{$action}{'connto'}) eq 'HASH') {
+ $domdefaults{'connto'} = $domconfig{$action}{'connto'};
+ }
+ if (ref($defaultshash{$action}{'connfrom'}) eq 'HASH') {
+ $domdefaults{'connfrom'} = $domconfig{$action}{'connfrom'};
}
}
my $cachetime = 24*60*60;
@@ -13818,7 +14376,7 @@ sub modify_ssl {
my $newvalue;
if (ref($defaultshash{$action}) eq 'HASH') {
if (ref($defaultshash{$action}{$prefix})) {
- if ($prefix eq 'connect') {
+ if (($prefix eq 'connto') || ($prefix eq 'connfrom')) {
$newvalue = $titles{$defaultshash{$action}{$prefix}{$type}};
} elsif (ref($defaultshash{$action}{$prefix}{$type}) eq 'ARRAY') {
if (@{$defaultshash{$action}{$prefix}{$type}} > 0) {
@@ -14914,6 +15472,7 @@ function toggleDisplay(domForm,caller) {
var optionsElement = domForm.coursecredits;
var checkval = 1;
var dispval = 'block';
+ var selfcreateRegExp = /^cancreate_emailverified/;
if (caller == 'emailoptions') {
optionsElement = domForm.cancreate_email;
}
@@ -14924,6 +15483,11 @@ function toggleDisplay(domForm,caller) {
optionsElement = domForm.canclone;
checkval = 'instcode';
}
+ if (selfcreateRegExp.test(caller)) {
+ optionsElement = domForm.elements[caller];
+ checkval = 'other';
+ dispval = 'inline'
+ }
if (optionsElement.length) {
var currval;
for (var i=0; i