--- loncom/interface/domainprefs.pm 2015/03/11 15:56:36 1.160.6.56
+++ loncom/interface/domainprefs.pm 2014/10/06 00:48:39 1.254
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.160.6.56 2015/03/11 15:56:36 raeburn Exp $
+# $Id: domainprefs.pm,v 1.254 2014/10/06 00:48:39 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -213,15 +213,15 @@ sub handler {
'quotas','autoenroll','autoupdate','autocreate',
'directorysrch','usercreation','usermodification',
'contacts','defaults','scantron','coursecategories',
- 'serverstatuses','requestcourses','coursedefaults',
- 'usersessions','loadbalancing','requestauthor',
- 'selfenrollment','inststatus'],$dom);
+ 'serverstatuses','requestcourses','helpsettings',
+ 'coursedefaults','usersessions','loadbalancing',
+ 'requestauthor','selfenrollment','inststatus'],$dom);
my @prefs_order = ('rolecolors','login','defaults','quotas','autoenroll',
'autoupdate','autocreate','directorysrch','contacts',
'usercreation','selfcreation','usermodification','scantron',
'requestcourses','requestauthor','coursecategories',
- 'serverstatuses','coursedefaults','selfenrollment',
- 'usersessions');
+ 'serverstatuses','helpsettings',
+ 'coursedefaults','selfenrollment','usersessions');
my %existing;
if (ref($domconfig{'loadbalancing'}) eq 'HASH') {
%existing = %{$domconfig{'loadbalancing'}};
@@ -250,8 +250,6 @@ sub handler {
header => [{col1 => 'Log-in Page Items',
col2 => '',},
{col1 => 'Log-in Help',
- col2 => 'Value'},
- {col1 => 'Custom HTML in document head',
col2 => 'Value'}],
print => \&print_login,
modify => \&modify_login,
@@ -411,10 +409,20 @@ sub handler {
print => \&print_serverstatuses,
modify => \&modify_serverstatuses,
},
+ 'helpsettings' =>
+ {text => 'Help page settings',
+ help => 'Domain_Configuration_Help_Settings',
+ header => [{col1 => 'Help Settings (logged-in users)',
+ col2 => 'Value'}],
+ print => \&print_helpsettings,
+ modify => \&modify_helpsettings,
+ },
'coursedefaults' =>
{text => 'Course/Community defaults',
help => 'Domain_Configuration_Course_Defaults',
- header => [{col1 => 'Defaults which can be overridden for each course by a DC',
+ header => [{col1 => 'Defaults which can be overridden in each course by a CC',
+ col2 => 'Value',},
+ {col1 => 'Defaults which can be overridden for each course by a DC',
col2 => 'Value',},],
print => \&print_coursedefaults,
modify => \&modify_coursedefaults,
@@ -431,6 +439,14 @@ sub handler {
print => \&print_selfenrollment,
modify => \&modify_selfenrollment,
},
+ 'privacy' =>
+ {text => 'User Privacy',
+ help => 'Domain_Configuration_User_Privacy',
+ header => [{col1 => 'Setting',
+ col2 => 'Value',}],
+ print => \&print_privacy,
+ modify => \&modify_privacy,
+ },
'usersessions' =>
{text => 'User session hosting/offloading',
help => 'Domain_Configuration_User_Sessions',
@@ -463,8 +479,6 @@ sub handler {
{col1 => 'Log-in Page Items',
col2 => ''},
{col1 => 'Log-in Help',
- col2 => 'Value'},
- {col1 => 'Custom HTML in document head',
col2 => 'Value'}],
print => \&print_login,
modify => \&modify_login,
@@ -617,6 +631,8 @@ sub process_changes {
$output = &modify_quotas($r,$dom,$action,$lastactref,%domconfig);
} elsif ($action eq 'requestauthor') {
$output = &modify_quotas($r,$dom,$action,$lastactref,%domconfig);
+ } elsif ($action eq 'helpsettings') {
+ $output = &modify_helpsettings($r,$dom,$confname,%domconfig);
} elsif ($action eq 'coursedefaults') {
$output = &modify_coursedefaults($dom,$lastactref,%domconfig);
} elsif ($action eq 'selfenrollment') {
@@ -654,7 +670,7 @@ sub print_config_box {
my $colspan = '';
my $rightcolspan = '';
if (($action eq 'rolecolors') || ($action eq 'defaults') ||
- (($action eq 'login') && ($numheaders < 4))) {
+ (($action eq 'login') && ($numheaders < 3))) {
$colspan = ' colspan="2"';
}
if ($action eq 'usersessions') {
@@ -670,13 +686,13 @@ sub print_config_box {
';
$rowtotal ++;
if (($action eq 'autoupdate') || ($action eq 'usercreation') || ($action eq 'selfcreation') ||
- ($action eq 'usermodification') || ($action eq 'defaults') ||
+ ($action eq 'usermodification') || ($action eq 'defaults') || ($action eq 'coursedefaults') ||
($action eq 'selfenrollment') || ($action eq 'usersessions')) {
$output .= $item->{'print'}->('top',$dom,$settings,\$rowtotal);
} elsif ($action eq 'coursecategories') {
$output .= $item->{'print'}->('top',$dom,$item,$settings,\$rowtotal);
} elsif ($action eq 'login') {
- if ($numheaders == 4) {
+ if ($numheaders == 3) {
$colspan = ' colspan="2"';
$output .= &print_login('service',$dom,$confname,$phase,$settings,\$rowtotal);
} else {
@@ -725,10 +741,11 @@ sub print_config_box {
$output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal);
}
$rowtotal ++;
- } elsif (($action eq 'usermodification') || ($action eq 'defaults')) {
+ } elsif (($action eq 'usermodification') || ($action eq 'coursedefaults') ||
+ ($action eq 'defaults')) {
$output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal);
} elsif ($action eq 'login') {
- if ($numheaders == 4) {
+ if ($numheaders == 3) {
$output .= &print_login('page',$dom,$confname,$phase,$settings,\$rowtotal).'
@@ -744,27 +761,6 @@ sub print_config_box {
} else {
$output .= &print_login('help',$dom,$confname,$phase,$settings,\$rowtotal);
}
- $output .= '
-
-
-
-
-
-
- ';
- if ($numheaders == 4) {
- $output .= '
- '.&mt($item->{'header'}->[3]->{'col1'}).' |
- '.&mt($item->{'header'}->[3]->{'col2'}).' |
- ';
- } else {
- $output .= '
- '.&mt($item->{'header'}->[2]->{'col1'}).' |
- '.&mt($item->{'header'}->[2]->{'col2'}).' |
- ';
- }
- $rowtotal ++;
- $output .= &print_login('headtag',$dom,$confname,$phase,$settings,\$rowtotal);
} elsif ($action eq 'requestcourses') {
$output .= &print_requestmail($dom,$action,$settings,\$rowtotal);
$rowtotal ++;
@@ -889,8 +885,6 @@ sub print_config_box {
$output .= &print_scantronformat($r,$dom,$confname,$settings,\$rowtotal);
} elsif ($action eq 'helpsettings') {
$output .= &print_helpsettings($dom,$confname,$settings,\$rowtotal);
- } elsif ($action eq 'coursedefaults') {
- $output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal);
}
}
$output .= '
@@ -1187,57 +1181,6 @@ sub print_login {
$itemcount ++;
}
$datatable .= &captcha_choice('login',$settings,$itemcount);
- } elsif ($caller eq 'headtag') {
- my %domservers = &Apache::lonnet::get_servers($dom);
- my $choice = $choices{'headtag'};
- $css_class = ' class="LC_odd_row"';
- $datatable .= ''.$choice.' | '.
- ' | ';
}
return $datatable;
}
@@ -1271,9 +1214,6 @@ sub login_choices {
link => "Link",
alink => "Active link",
vlink => "Visited link",
- headtag => "Custom markup",
- action => "Action",
- current => "Current",
);
return %choices;
}
@@ -5239,7 +5179,7 @@ sub serverstatus_pages {
sub defaults_javascript {
my ($settings) = @_;
- return unless (ref($settings) eq 'HASH');
+ return unless (ref($settings) eq 'HASH');
if ((ref($settings->{'inststatusorder'}) eq 'ARRAY') && (ref($settings->{'inststatustypes'}) eq 'HASH')) {
my $maxnum = scalar(@{$settings->{'inststatusorder'}});
if ($maxnum eq '') {
@@ -5839,7 +5779,6 @@ sub modify_login {
}
my %servers = &Apache::lonnet::internet_dom_servers($dom);
- my %domservers = &Apache::lonnet::get_servers($dom);
my @loginvia_attribs = ('serverpath','custompath','exempt');
if (keys(%servers) > 1) {
foreach my $lonhost (keys(%servers)) {
@@ -5882,7 +5821,22 @@ sub modify_login {
$changes{'loginvia'}{$lonhost} = 1;
}
if ($item eq 'exempt') {
- $new = &check_exempt_addresses($new);
+ $new =~ s/^\s+//;
+ $new =~ s/\s+$//;
+ my @poss_ips = split(/\s*[,:]\s*/,$new);
+ my @okips;
+ foreach my $ip (@poss_ips) {
+ if ($ip =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) {
+ if (($1 <= 255) && ($2 <= 255) && ($3 <= 255) && ($4 <= 255)) {
+ push(@okips,$ip);
+ }
+ }
+ }
+ if (@okips > 0) {
+ $new = join(',',@okips);
+ } else {
+ $new = '';
+ }
}
$loginhash{login}{loginvia}{$lonhost}{$item} = $new;
}
@@ -5994,85 +5948,6 @@ sub modify_login {
$errors .= ''.$error.'';
}
}
-
- my (%currheadtagurls,%currexempt,@newhosts,%newheadtagurls,%possexempt);
- if (ref($domconfig{'login'}) eq 'HASH') {
- if (ref($domconfig{'login'}{'headtag'}) eq 'HASH') {
- foreach my $lonhost (keys(%{$domconfig{'login'}{'headtag'}})) {
- if ($domservers{$lonhost}) {
- if (ref($domconfig{'login'}{'headtag'}{$lonhost}) eq 'HASH') {
- $currheadtagurls{$lonhost} = $domconfig{'login'}{'headtag'}{$lonhost}{'url'};
- $currexempt{$lonhost} = $domconfig{'login'}{'headtagexempt'}{$lonhost}{'exempt'}
- }
- }
- }
- }
- }
- my @delheadtagurls = &Apache::loncommon::get_env_multiple('form.loginheadtag_del');
- foreach my $lonhost (sort(keys(%domservers))) {
- if (grep(/^\Q$lonhost\E$/,@delheadtagurls)) {
- $changes{'headtag'}{$lonhost} = 1;
- } else {
- if ($env{'form.loginheadtagexempt_'.$lonhost}) {
- $possexempt{$lonhost} = &check_exempt_addresses($env{'form.loginheadtagexempt_'.$lonhost});
- }
- if ($env{'form.loginheadtag_'.$lonhost.'.filename'}) {
- push(@newhosts,$lonhost);
- } elsif ($currheadtagurls{$lonhost}) {
- $loginhash{'login'}{'headtag'}{$lonhost}{'url'} = $currheadtagurls{$lonhost};
- if ($currexempt{$lonhost}) {
- if ((!exists($possexempt{$lonhost})) || ($possexempt{$lonhost} ne $currexempt{$lonhost})) {
- $changes{'headtag'}{$lonhost} = 1;
- }
- } elsif ($possexempt{$lonhost}) {
- $changes{'headtag'}{$lonhost} = 1;
- }
- if ($possexempt{$lonhost}) {
- $loginhash{'login'}{'headtag'}{$lonhost}{'exempt'} = $possexempt{$lonhost};
- }
- }
- }
- }
- if (@newhosts) {
- my $error;
- my ($configuserok,$author_ok,$switchserver) = &config_check($dom,$confname,$servadm);
- if ($configuserok eq 'ok') {
- if ($switchserver) {
- $error = &mt("Upload of custom markup is not permitted to this server: [_1]",$switchserver);
- } elsif ($author_ok eq 'ok') {
- foreach my $lonhost (@newhosts) {
- my $formelem = 'loginheadtag_'.$lonhost;
- (my $result,$newheadtagurls{$lonhost}) = &publishlogo($r,'upload',$formelem,$dom,$confname,
- "login/headtag/$lonhost",'','',
- $env{'form.loginheadtag_'.$lonhost.'.filename'});
- if ($result eq 'ok') {
- $loginhash{'login'}{'headtag'}{$lonhost}{'url'} = $newheadtagurls{$lonhost};
- $changes{'headtag'}{$lonhost} = 1;
- if ($possexempt{$lonhost}) {
- $loginhash{'login'}{'headtag'}{$lonhost}{'exempt'} = $possexempt{$lonhost};
- }
- } else {
- my $puberror = &mt("Upload of [_1] failed because an error occurred publishing the file in RES space. Error was: [_2].",
- $newheadtagurls{$lonhost},$result);
- $errors .= ''.$puberror.'';
- if ((grep(/^\Q$lonhost\E$/,keys(%currheadtagurls))) &&
- (!grep(/^\Q$lonhost\E$/,@delheadtagurls))) {
- $loginhash{'login'}{'headtag'}{$lonhost} = $currheadtagurls{$lonhost};
- }
- }
- }
- } else {
- $error = &mt("Upload of custom markup file(s) failed because an author role could not be assigned to a Domain Configuration user ([_1]) in domain: [_2]. Error was: [_3].",$confname,$dom,$author_ok);
- }
- } else {
- $error = &mt("Upload of custom markup file(s) failed because a Domain Configuration user ([_1]) could not be created in domain: [_2]. Error was: [_3].",$confname,$dom,$configuserok);
- }
- if ($error) {
- &Apache::lonnet::logthis($error);
- $errors .= ''.$error.'';
- }
- }
-
&process_captcha('login',\%changes,$loginhash{'login'},$domconfig{'login'});
my $defaulthelpfile = '/adm/loginproblems.html';
@@ -6173,25 +6048,6 @@ sub modify_login {
}
}
}
- } elsif ($item eq 'headtag') {
- if (ref($changes{$item}) eq 'HASH') {
- foreach my $lonhost (sort(keys(%{$changes{$item}}))) {
- if (grep(/^\Q$lonhost\E$/,@delheadtagurls)) {
- $resulttext .= ''.&mt('custom markup file removed for [_1]',$domservers{$lonhost}).'';
- } elsif (ref($loginhash{'login'}{'headtag'}{$lonhost}) eq 'HASH') {
- $resulttext .= ''.&mt('custom markup').' '.&mt('(for [_1])',$servers{$lonhost}).' ';
- if ($possexempt{$lonhost}) {
- $resulttext .= &mt('not included for client IP(s): [_1]',$possexempt{$lonhost});
- } else {
- $resulttext .= &mt('included for any client IP');
- }
- $resulttext .= '';
- }
- }
- }
} elsif ($item eq 'captcha') {
if (ref($loginhash{'login'}) eq 'HASH') {
my $chgtxt;
@@ -6247,27 +6103,6 @@ sub modify_login {
return $resulttext;
}
-sub check_exempt_addresses {
- my ($iplist) = @_;
- $iplist =~ s/^\s+//;
- $iplist =~ s/\s+$//;
- my @poss_ips = split(/\s*[,:]\s*/,$iplist);
- my (@okips,$new);
- foreach my $ip (@poss_ips) {
- if ($ip =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) {
- if (($1 <= 255) && ($2 <= 255) && ($3 <= 255) && ($4 <= 255)) {
- push(@okips,$ip);
- }
- }
- }
- if (@okips > 0) {
- $new = join(',',@okips);
- } else {
- $new = '';
- }
- return $new;
-}
-
sub color_font_choices {
my %choices =
&Apache::lonlocal::texthash (
@@ -7156,7 +6991,7 @@ sub modify_quotas {
my $newpos = $env{'form.'.$itemid};
$newpos =~ s/\D+//g;
foreach my $item ('subject','title','publisher','author') {
- next if ((($item eq 'author') || ($item eq 'publisher')) &&
+ next if ((($item eq 'author') || ($item eq 'publisher')) &&
($type eq 'templates'));
$confhash{$type}{$key}{$item} = $env{'form.'.$type.'_'.$item.'_'.$i};
if ($domconfig{$action}{$type}{$key}{$item} ne $confhash{$type}{$key}{$item}) {
@@ -10944,10 +10779,7 @@ sub modify_loadbalancing {
$rule = $env{'form.loadbalancing_rules_'.$i.'_'.$type};
}
if ($rule eq 'specific') {
- my $specifiedhost = $env{'form.loadbalancing_singleserver_'.$i.'_'.$type};
- if (exists($servers{$specifiedhost})) {
- $rule = $specifiedhost;
- }
+ $rule = $env{'form.loadbalancing_singleserver_'.$i.'_'.$type};
}
$defaultshash{'loadbalancing'}{$balancer}{'rules'}{$type} = $rule;
if (ref($currrules{$balancer}) eq 'HASH') {
@@ -11021,7 +10853,7 @@ sub modify_loadbalancing {
if ($rule eq '') {
$balancetext = $ruletitles{'default'};
} elsif (($rule eq 'homeserver') || ($rule eq 'externalbalancer') ||
- ($type eq '_LC_ipchange') || ($type eq '_LC_ipchangesso')) {
+ ($type eq '_LC_ipchange') || ($type eq '_LC_ipchangesso')) {
if (($type eq '_LC_ipchange') || ($type eq '_LC_ipchangesso')) {
foreach my $sparetype (@sparestypes) {
if (ref($defaultshash{'loadbalancing'}{$balancer}{'targets'}{$sparetype}) eq 'ARRAY') {
|