[LON-CAPA-cvs] cvs: loncom /auth lonlogin.pm /interface domainprefs.pm
raeburn
lon-capa-cvs-allow@mail.lon-capa.org
Sun, 24 Feb 2008 23:18:40 -0000
This is a MIME encoded message
--raeburn1203895120
Content-Type: text/plain
raeburn Sun Feb 24 18:18:40 2008 EDT
Modified files:
/loncom/auth lonlogin.pm
/loncom/interface domainprefs.pm
Log:
- can add a "New User?" link to the log-in page to allow users with out LON-CAPA accounts to create them
- Default authentication type, argument and language configurable via "Domain Configuration" interface (supercede domain.tab).
- when these domain defaults are changed an e-mail is sent to LON-CAPA cluster administrator so dns_domain.tab can be updated to support LON-CAPA versions: 2.4, 2.5 and 2.6.
- Ability to enable/disable format rules for users self-enrolling wth e-mail addresses.
- Ability to determine types of usernames which may be created when self-enrolling (e-mail address, institutional logon, SSO, any, or none.
--raeburn1203895120
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20080224181840.txt"
Index: loncom/auth/lonlogin.pm
diff -u loncom/auth/lonlogin.pm:1.100 loncom/auth/lonlogin.pm:1.101
--- loncom/auth/lonlogin.pm:1.100 Thu Jan 24 10:06:21 2008
+++ loncom/auth/lonlogin.pm Sun Feb 24 18:18:37 2008
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Login Screen
#
-# $Id: lonlogin.pm,v 1.100 2008/01/24 15:06:21 bisitz Exp $
+# $Id: lonlogin.pm,v 1.101 2008/02/24 23:18:37 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -263,6 +263,8 @@
my $showcoursecat =
&Apache::loncommon::designparm('login.coursecatalog',$domain);
my $loginheader =&Apache::loncommon::designparm('login.loginheader',$domain);
+ my $shownewuserlink =
+ &Apache::loncommon::designparm('login.newuser',$domain);
my $now=time;
my $js = (<<ENDSCRIPT);
@@ -349,6 +351,7 @@
'servadm' => 'Server Administration',
'helpdesk' => 'Contact Helpdesk',
'forgotpw' => 'Forgot password?',
+ 'newuser' => 'New User?',
'options_headline' => 'Select Accessibility Options',
'sprs_img' => 'Suppress rendering of images',
'sprs_applet' => 'Suppress Java applets',
@@ -396,6 +399,10 @@
if (($showcoursecat eq '') || ($showcoursecat)) {
$coursecatalog = &coursecatalog_link($lt{'catalog'});
}
+ my $newuserlink;
+ if ($shownewuserlink) {
+ $newuserlink = &newuser_link($lt{'newuser'});
+ }
if ($fullgraph) { $r->print(<<ENDTOP);
<!-- The LON-CAPA Header -->
<tr>
@@ -523,6 +530,8 @@
<td bgcolor="$mainbg" valign="bottom" align="left" colspan="2">
$loginhelp
$forgotpw
+ $newuserlink
+ <br />
</td>
</tr>
</table>
@@ -667,7 +676,7 @@
my (%lt) = @_;
my $prompt_for_resetpw = 1;
if ($prompt_for_resetpw) {
- return '<br /> <a href="/adm/resetpw">'.$lt{'forgotpw'}.'</a></b><br /><br />';
+ return '<br /> <a href="/adm/resetpw">'.$lt{'forgotpw'}.'</a></b><br />';
}
return;
}
@@ -691,5 +700,10 @@
END
}
+sub newuser_link {
+ my ($linkname) = @_;
+ return ' <a href="/adm/createaccount"><b>'.$linkname.'</b></a><br />';
+}
+
1;
__END__
Index: loncom/interface/domainprefs.pm
diff -u loncom/interface/domainprefs.pm:1.42 loncom/interface/domainprefs.pm:1.43
--- loncom/interface/domainprefs.pm:1.42 Fri Feb 15 12:02:31 2008
+++ loncom/interface/domainprefs.pm Sun Feb 24 18:18:40 2008
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.42 2008/02/15 17:02:31 raeburn Exp $
+# $Id: domainprefs.pm,v 1.43 2008/02/24 23:18:40 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -36,9 +36,11 @@
use Apache::loncommon();
use Apache::lonhtmlcommon();
use Apache::lonlocal;
+use Apache::lonmsg();
use LONCAPA();
use LONCAPA::Enrollment;
use File::Copy;
+use Locale::Language;
sub handler {
my $r=shift;
@@ -68,8 +70,8 @@
my %domconfig =
&Apache::lonnet::get_dom('configuration',['login','rolecolors',
'quotas','autoenroll','autoupdate','directorysrch',
- 'usercreation','usermodification','contacts'],$dom);
- my @prefs_order = ('rolecolors','login','quotas','autoenroll',
+ 'usercreation','usermodification','contacts','defaults'],$dom);
+ my @prefs_order = ('rolecolors','login','defaults','quotas','autoenroll',
'autoupdate','directorysrch','contacts',
'usercreation','usermodification');
my %prefs = (
@@ -91,6 +93,12 @@
header => [{col1 => 'Item',
col2 => '',}],
},
+ 'defaults' =>
+ { text => 'Default authentication/language',
+ help => '',
+ header => [{col1 => 'Setting',
+ col2 => 'Value'}],
+ },
'quotas' =>
{ text => 'Default quotas for user portfolios',
help => 'Default_User_Quota',
@@ -108,7 +116,7 @@
help => 'Domain_Auto_Update',
header => [{col1 => 'Setting',
col2 => 'Value',},
- {col1 => 'User Population',
+ {col1 => 'User population',
col2 => 'Updataeable user data'}],
},
'directorysrch' =>
@@ -127,12 +135,12 @@
'usercreation' =>
{ text => 'User creation',
help => 'Domain_User_Creation',
- header => [{col1 => 'Format Rule Type',
- col2 => 'Format Rules in force'},
+ header => [{col1 => 'Format rule type',
+ col2 => 'Format rules in force'},
{col1 => 'User account creation',
col2 => 'Usernames which may be created',},
{col1 => 'Context',
- col2 => 'Assignable Authentication Types'}],
+ col2 => 'Assignable authentication types'}],
},
'usermodification' =>
{ text => 'User modification',
@@ -333,6 +341,8 @@
$output = &modify_usermodification($dom,%domconfig);
} elsif ($action eq 'contacts') {
$output = &modify_contacts($dom,%domconfig);
+ } elsif ($action eq 'defaults') {
+ $output = &modify_defaults($dom,$r);
}
return $output;
}
@@ -454,6 +464,8 @@
$output .= &print_directorysrch($dom,$settings,\$rowtotal);
} elsif ($action eq 'contacts') {
$output .= &print_contacts($dom,$settings,\$rowtotal);
+ } elsif ($action eq 'defaults') {
+ $output .= &print_defaults($dom,\$rowtotal);
}
}
$output .= '
@@ -569,10 +581,11 @@
my ($dom,$confname,$phase,$settings,$rowtotal) = @_;
my %choices = &login_choices();
my %defaultchecked = (
- 'coursecatalog' => 'on',
- 'adminmail' => 'off',
- );
- my @toggles = ('coursecatalog','adminmail');
+ 'coursecatalog' => 'on',
+ 'adminmail' => 'off',
+ 'newuser' => 'off',
+ );
+ my @toggles = ('coursecatalog','adminmail','newuser');
my (%checkedon,%checkedoff);
foreach my $item (@toggles) {
if ($defaultchecked{$item} eq 'on') {
@@ -699,6 +712,7 @@
&Apache::lonlocal::texthash (
coursecatalog => 'Display Course Catalog link?',
adminmail => "Display Administrator's E-mail Address?",
+ newuser => "Link to create a user account",
img => "Header",
logo => "Main Logo",
domlogo => "Domain Logo",
@@ -1479,13 +1493,23 @@
$rowcount ++;
}
}
+ my ($emailrules,$emailruleorder) =
+ &Apache::lonnet::inst_userrules($dom,'email');
+ if (ref($emailrules) eq 'HASH') {
+ if (keys(%{$emailrules}) > 0) {
+ $datatable .= &user_formats_row('email',$settings,$emailrules,
+ $emailruleorder,$numinrow,$rowcount);
+ $$rowtotal ++;
+ $rowcount ++;
+ }
+ }
if ($rowcount == 0) {
$datatable .= '<tr><td colspan="2">'.&mt('No format rules have been defined for usernames or IDs in this domain.').'</td></tr>';
$$rowtotal ++;
$rowcount ++;
}
} elsif ($position eq 'middle') {
- my @creators = ('author','course');
+ my @creators = ('author','course','selfenroll');
my ($rules,$ruleorder) =
&Apache::lonnet::inst_userrules($dom,'username');
my %lt = &usercreation_types();
@@ -1507,7 +1531,11 @@
foreach my $item (@creators) {
$rownum ++;
if ($checked{$item} eq '') {
- $checked{$item} = 'any';
+ if ($item eq 'selfenroll') {
+ $checked{$item} = 'none';
+ } else {
+ $checked{$item} = 'any';
+ }
}
my $css_class;
if ($rownum%2) {
@@ -1519,9 +1547,13 @@
'<td><span class="LC_nobreak">'.$lt{$item}.
'</span></td><td align="right">';
my @options = ('any');
- if (ref($rules) eq 'HASH') {
- if (keys(%{$rules}) > 0) {
- push(@options,('official','unofficial'));
+ if ($item eq 'selfenroll') {
+ push(@options,('email','login','sso'));
+ } else {
+ if (ref($rules) eq 'HASH') {
+ if (keys(%{$rules}) > 0) {
+ push(@options,('official','unofficial'));
+ }
}
}
push(@options,'none');
@@ -1594,6 +1626,7 @@
my %text = (
'username' => 'new usernames',
'id' => 'IDs',
+ 'email' => 'e-mail addresses of self-enrollers',
);
my $css_class = $rowcount%2?' class="LC_odd_row"':'';
$output = '<tr '.$css_class.'>'.
@@ -1644,9 +1677,13 @@
my %lt = &Apache::lonlocal::texthash (
author => 'When adding a co-author',
course => 'When adding a user to a course',
+ selfenroll => 'When a user is self-enrolling',
any => 'Any',
official => 'Institutional only ',
unofficial => 'Non-institutional only',
+ email => 'Email address',
+ login => 'Institutional Login',
+ sso => 'SSO',
none => 'None',
);
return %lt;
@@ -1697,6 +1734,61 @@
return $datatable;
}
+sub print_defaults {
+ my ($dom,$rowtotal) = @_;
+ my @items = ('auth_def','auth_arg_def','lang_def');
+ my %domdefaults = &Apache::lonnet::get_domain_defaults($dom);
+ my $titles = &defaults_titles();
+ my $rownum = 0;
+ my ($datatable,$css_class);
+ foreach my $item (@items) {
+ if ($rownum%2) {
+ $css_class = '';
+ } else {
+ $css_class = ' class="LC_odd_row" ';
+ }
+ $datatable .= '<tr'.$css_class.'>'.
+ '<td><span class="LC_nobreak">'.$titles->{$item}.
+ '</span></td><td class="LC_right_item">';
+ if ($item eq 'auth_def') {
+ my @authtypes = ('internal','krb4','krb5','localauth');
+ my %shortauth = (
+ internal => 'int',
+ krb4 => 'krb4',
+ krb5 => 'krb5',
+ localauth => 'loc'
+ );
+ my %authnames = &authtype_names();
+ foreach my $auth (@authtypes) {
+ my $checked = ' ';
+ if ($domdefaults{$item} eq $auth) {
+ $checked = ' checked="checked" ';
+ }
+ $datatable .= '<label><input type="radio" name="'.$item.
+ '" value="'.$auth.'"'.$checked.'/>'.
+ $authnames{$shortauth{$auth}}.'</label> ';
+ }
+ } else {
+ $datatable .= '<input type="text" name="'.$item.'" value="'.
+ $domdefaults{$item}.'" />';
+ }
+ $datatable .= '</td></tr>';
+ $rownum ++;
+ }
+ $$rowtotal += $rownum;
+ return $datatable;
+}
+
+sub defaults_titles {
+ my %titles = &Apache::lonlocal::texthash (
+ 'auth_def' => 'Default authentication type',
+ 'auth_arg_def' => 'Default authentication argument',
+ 'lang_def' => 'Default language',
+ );
+ return (\%titles);
+}
+
+
sub modifiable_userdata_row {
my ($context,$role,$settings,$numinrow,$rowcount) = @_;
my $rolename;
@@ -1908,12 +2000,13 @@
my ($resulttext,$errors,$colchgtext,%changes,%colchanges);
my %title = ( coursecatalog => 'Display course catalog',
adminmail => 'Display administrator E-mail address',
+ newuser => 'Link for visitors to create a user account',
loginheader => 'Log-in box header');
my @offon = ('off','on');
my %loginhash;
($errors,%colchanges) = &modify_colors($r,$dom,$confname,['login'],
\%domconfig,\%loginhash);
- my @toggles = ('coursecatalog','adminmail');
+ my @toggles = ('coursecatalog','adminmail','newuser');
foreach my $item (@toggles) {
$loginhash{login}{$item} = $env{'form.'.$item};
}
@@ -1925,10 +2018,11 @@
my $putresult = &Apache::lonnet::put_dom('configuration',\%loginhash,
$dom);
if ($putresult eq 'ok') {
- my @toggles = ('coursecatalog','adminmail');
+ my @toggles = ('coursecatalog','adminmail','newuser');
my %defaultchecked = (
'coursecatalog' => 'on',
'adminmail' => 'off',
+ 'newuser' => 'off',
);
foreach my $item (@toggles) {
if ($defaultchecked{$item} eq 'on') {
@@ -3097,20 +3191,26 @@
sub modify_usercreation {
my ($dom,%domconfig) = @_;
my ($resulttext,%curr_usercreation,%changes,%authallowed,%cancreate);
+ my $warningmsg;
if (ref($domconfig{'usercreation'}) eq 'HASH') {
foreach my $key (keys(%{$domconfig{'usercreation'}})) {
$curr_usercreation{$key} = $domconfig{'usercreation'}{$key};
}
}
- my %title = &Apache::lonlocal::texthash (
- author => 'adding co-authors/assistant authors',
- course => 'adding users to a course',
- );
my @username_rule = &Apache::loncommon::get_env_multiple('form.username_rule');
my @id_rule = &Apache::loncommon::get_env_multiple('form.id_rule');
- my @contexts = ('author','course');
+ my @email_rule = &Apache::loncommon::get_env_multiple('form.email_rule');
+ my @contexts = ('author','course','selfenroll');
foreach my $item(@contexts) {
$cancreate{$item} = $env{'form.can_createuser_'.$item};
+ if ($item eq 'selfenroll') {
+ my %domdefaults = &Apache::lonnet::get_domain_defaults($dom);
+ if (!((($domdefaults{'auth_def'} =~/^krb/) && ($domdefaults{'auth_arg_def'} ne '')) || ($domdefaults{'auth_def'} eq 'localauth'))) {
+ if (($cancreate{$item} eq 'any') || ($cancreate{$item} eq 'login')) {
+ $warningmsg = &mt('Although account creation has been set to be available for institutional logins, currently default authentication in this domain has not been set to support this.').' '.&mt('You need to set the default authentication type to Kerberos 4 or 5 (with a Kerberos domain specified), or to Local authentication, if the localauth module has been customized in your domain to authenticate institutional logins.');
+ }
+ }
+ }
}
if (ref($curr_usercreation{'cancreate'}) eq 'HASH') {
foreach my $item (@contexts) {
@@ -3120,7 +3220,7 @@
}
} elsif (ref($curr_usercreation{'cancreate'}) eq 'ARRAY') {
foreach my $item (@contexts) {
- if (grep(/^\Q$item\E$/,@{$curr_usercreation{'cancreate'}})) {
+ if (!grep(/^\Q$item\E$/,@{$curr_usercreation{'cancreate'}})) {
if ($cancreate{$item} ne 'any') {
push(@{$changes{'cancreate'}},$item);
}
@@ -3131,7 +3231,7 @@
}
}
} else {
- foreach my $item ('author','course') {
+ foreach my $item (@contexts) {
push(@{$changes{'cancreate'}},$item);
}
}
@@ -3166,10 +3266,25 @@
push(@{$changes{'id_rule'}},@id_rule);
}
- my @contexts = ('author','course','domain');
+ if (ref($curr_usercreation{'email_rule'}) eq 'ARRAY') {
+ foreach my $type (@{$curr_usercreation{'email_rule'}}) {
+ if (!grep(/^\Q$type\E$/,@email_rule)) {
+ push(@{$changes{'email_rule'}},$type);
+ }
+ }
+ foreach my $type (@email_rule) {
+ if (!grep(/^\Q$type\E$/,@{$curr_usercreation{'email_rule'}})) {
+ push(@{$changes{'email_rule'}},$type);
+ }
+ }
+ } else {
+ push(@{$changes{'email_rule'}},@email_rule);
+ }
+
+ my @authen_contexts = ('author','course','domain');
my @authtypes = ('int','krb4','krb5','loc');
my %authhash;
- foreach my $item (@contexts) {
+ foreach my $item (@authen_contexts) {
my @authallowed = &Apache::loncommon::get_env_multiple('form.'.$item.'_auth');
foreach my $auth (@authtypes) {
if (grep(/^\Q$auth\E$/,@authallowed)) {
@@ -3180,7 +3295,7 @@
}
}
if (ref($curr_usercreation{'authtypes'}) eq 'HASH') {
- foreach my $item (@contexts) {
+ foreach my $item (@authen_contexts) {
if (ref($curr_usercreation{'authtypes'}{$item}) eq 'HASH') {
foreach my $auth (@authtypes) {
if ($authhash{$item}{$auth} ne $curr_usercreation{'authtypes'}{$item}{$auth}) {
@@ -3191,7 +3306,7 @@
}
}
} else {
- foreach my $item (@contexts) {
+ foreach my $item (@authen_contexts) {
push(@{$changes{'authtypes'}},$item);
}
}
@@ -3201,6 +3316,7 @@
cancreate => \%cancreate,
username_rule => \@username_rule,
id_rule => \@id_rule,
+ email_rule => \@email_rule,
authtypes => \%authhash,
}
);
@@ -3213,15 +3329,29 @@
if (ref($changes{'cancreate'}) eq 'ARRAY') {
my %lt = &usercreation_types();
foreach my $type (@{$changes{'cancreate'}}) {
- my $chgtext;
- if ($cancreate{$type} eq 'none') {
- $chgtext = $lt{$type}.' '.&mt('creation of new users is not permitted, except by a Domain Coordinator.');
- } elsif ($cancreate{$type} eq 'any') {
- $chgtext = $lt{$type}.' '.&mt('creation of new users is permitted for both institutional and non-institutional usernames.');
- } elsif ($cancreate{$type} eq 'official') {
- $chgtext = $lt{$type}.' '.&mt('creation of new users is only permitted for institutional usernames.',$lt{$type});
- } elsif ($cancreate{$type} eq 'unofficial') {
- $chgtext = $lt{$type}.' '.&mt('creation of new users is only permitted for non-institutional usernames.',$lt{$type});
+ my $chgtext = $lt{$type}.', ';
+ if ($type eq 'selfenroll') {
+ if ($cancreate{$type} eq 'none') {
+ $chgtext .= &mt('creation of a new user account is not permitted.');
+ } elsif ($cancreate{$type} eq 'any') {
+ $chgtext .= &mt('creation of a new account is permitted for users authenticated by institutional log-in and SSO, and also for e-mail addresses used as usernames.');
+ } elsif ($cancreate{$type} eq 'login') {
+ $chgtext .= &mt('creation of a new account is only permitted for users authenticated by institutional log-in.');
+ } elsif ($cancreate{$type} eq 'sso') {
+ $chgtext .= &mt('creation of a new account is only permitted for users authenticated by institutional single sign on.');
+ } elsif ($cancreate{$type} eq 'email') {
+ $chgtext .= &mt('creation of a new account is only permitted for users who provide a valid e-mail address for use as the username.');
+ }
+ } else {
+ if ($cancreate{$type} eq 'none') {
+ $chgtext .= &mt('creation of new users is not permitted, except by a Domain Coordinator.');
+ } elsif ($cancreate{$type} eq 'any') {
+ $chgtext .= &mt('creation of new users is permitted for both institutional and non-institutional usernames.');
+ } elsif ($cancreate{$type} eq 'official') {
+ $chgtext .= &mt('creation of new users is only permitted for institutional usernames.');
+ } elsif ($cancreate{$type} eq 'unofficial') {
+ $chgtext .= &mt('creation of new users is only permitted for non-institutional usernames.');
+ }
}
$resulttext .= '<li>'.$chgtext.'</li>';
}
@@ -3258,6 +3388,23 @@
$resulttext .= '<li>'.&mt('There are now no ID formats restricted to verified users in the institutional directory.').'</li>';
}
}
+ if (ref($changes{'email_rule'}) eq 'ARRAY') {
+ my ($emailrules,$emailruleorder) =
+ &Apache::lonnet::inst_userrules($dom,'email');
+ my $chgtext = '<ul>';
+ foreach my $type (@email_rule) {
+ if (ref($emailrules->{$type}) eq 'HASH') {
+ $chgtext .= '<li>'.$emailrules->{$type}{'name'}.'</li>';
+ }
+ }
+ $chgtext .= '</ul>';
+ if (@email_rule > 0) {
+ $resulttext .= '<li>'.&mt('Accounts may not be created by users self-enrolling with e-mail addresses of the following types: ').$chgtext.'</li>';
+ } else {
+ $resulttext .= '<li>'.&mt('There are now no restrictions on e-mail addresses which may be used as a username when self-enrolling.').'</li>';
+ }
+ }
+
my %authname = &authtype_names();
my %context_title = &context_names();
if (ref($changes{'authtypes'}) eq 'ARRAY') {
@@ -3270,7 +3417,11 @@
push(@allowed,$authname{$auth});
}
}
- $chgtext .= join(', ',@allowed).'</li>';
+ if (@allowed > 0) {
+ $chgtext .= join(', ',@allowed).'</li>';
+ } else {
+ $chgtext .= &mt('none').'</li>';
+ }
}
$chgtext .= '</ul>';
$resulttext .= '<li>'.&mt('Authentication types available for assignment to new users').'<br />'.$chgtext;
@@ -3284,6 +3435,9 @@
$resulttext = '<span class="LC_error">'.
&mt('An error occurred: [_1]',$putresult).'</span>';
}
+ if ($warningmsg ne '') {
+ $resulttext .= '<br /><span class="LC_warning">'.$warningmsg.'</span><br />';
+ }
return $resulttext;
}
@@ -3387,4 +3541,91 @@
return $resulttext;
}
+sub modify_defaults {
+ my ($dom,$r) = @_;
+ my ($resulttext,$mailmsgtxt,%newvalues,%changes,@errors);
+ my %domdefaults = &Apache::lonnet::get_domain_defaults($dom);
+ my @items = ('auth_def','auth_arg_def','lang_def');
+ my @authtypes = ('internal','krb4','krb5','localauth');
+ foreach my $item (@items) {
+ $newvalues{$item} = $env{'form.'.$item};
+ if ($item eq 'auth_def') {
+ if ($newvalues{$item} ne '') {
+ if (!grep(/^\Q$newvalues{$item}\E$/,@authtypes)) {
+ push(@errors,$item);
+ }
+ }
+ } elsif ($item eq 'lang_def') {
+ if ($newvalues{$item} ne '') {
+ if ($newvalues{$item} =~ /^(\w+)/) {
+ my $langcode = $1;
+ if (code2language($langcode) eq '') {
+ push(@errors,$item);
+ }
+ } else {
+ push(@errors,$item);
+ }
+ }
+ }
+ if (grep(/^\Q$item\E$/,@errors)) {
+ $newvalues{$item} = $domdefaults{$item};
+ } elsif ($domdefaults{$item} ne $newvalues{$item}) {
+ $changes{$item} = 1;
+ }
+ }
+ my %defaults_hash = (
+ defaults => { auth_def => $newvalues{'auth_def'},
+ auth_arg_def => $newvalues{'auth_arg_def'},
+ lang_def => $newvalues{'lang_def'},
+ }
+ );
+ my $title = &defaults_titles();
+ my $putresult = &Apache::lonnet::put_dom('configuration',\%defaults_hash,
+ $dom);
+ if ($putresult eq 'ok') {
+ if (keys(%changes) > 0) {
+ $resulttext = &mt('Changes made:').'<ul>';
+ my $version = $r->dir_config('lonVersion');
+ my $mailmsgtext = "Changes made to domain settings in a LON-CAPA installation - domain: $dom (running version: $version) - dns_domain.tab needs to be updated with the following changes, to support legacy 2.4, 2.5 and 2.6 versions of LON-CAPA.\n\n";
+ foreach my $item (sort(keys(%changes))) {
+ my $value = $env{'form.'.$item};
+ if ($value eq '') {
+ $value = &mt('none');
+ } elsif ($item eq 'auth_def') {
+ my %authnames = &authtype_names();
+ my %shortauth = (
+ internal => 'int',
+ krb4 => 'krb4',
+ krb5 => 'krb5',
+ localauth => 'loc',
+ );
+ $value = $authnames{$shortauth{$value}};
+ }
+ $resulttext .= '<li>'.&mt('[_1] set to "[_2]"',$title->{$item},$value).'</li>';
+ $mailmsgtext .= "$title->{$item} set to $value\n";
+ }
+ $resulttext .= '</ul>';
+ $mailmsgtext .= "\n";
+ my $cachetime = 24*60*60;
+ &Apache::lonnet::do_cache_new('domdefaults',$dom,
+ $defaults_hash{'defaults'},$cachetime);
+ my $sysmail = $r->dir_config('lonSysEMail');
+ &Apache::lonmsg::sendemail($sysmail,"LON-CAPA Domain Settings Change - $dom",$mailmsgtext);
+ } else {
+ $resulttext = &mt('No changes made to default authentication/language settings');
+ }
+ } else {
+ $resulttext = '<span class="LC_error">'.
+ &mt('An error occurred: [_1]',$putresult).'</span>';
+ }
+ if (@errors > 0) {
+ $resulttext .= '<br />'.&mt('The following were left unchanged because the values entered were invalid:');
+ foreach my $item (@errors) {
+ $resulttext .= ' "'.$title->{$item}.'",';
+ }
+ $resulttext =~ s/,$//;
+ }
+ return $resulttext;
+}
+
1;
--raeburn1203895120--