--- loncom/interface/domainprefs.pm 2014/03/03 18:09:24 1.160.6.35
+++ loncom/interface/domainprefs.pm 2013/12/25 20:43:46 1.218
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.160.6.35 2014/03/03 18:09:24 raeburn Exp $
+# $Id: domainprefs.pm,v 1.218 2013/12/25 20:43:46 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -95,7 +95,7 @@ institutional affiliation in the domain
but is now also used to manage availability of user tools:
i.e., blogs, aboutme page, and portfolios, and the course request tool,
used by course owners to request creation of a course, and to display/store
-default quota sizes for Authoring Spaces.
+default quota sizes for authoring spaces.
Outputs: 1
@@ -211,13 +211,15 @@ sub handler {
'quotas','autoenroll','autoupdate','autocreate',
'directorysrch','usercreation','usermodification',
'contacts','defaults','scantron','coursecategories',
- 'serverstatuses','requestcourses','coursedefaults',
- 'usersessions','loadbalancing','requestauthor'],$dom);
+ 'serverstatuses','requestcourses','helpsettings',
+ 'coursedefaults','usersessions','loadbalancing',
+ 'requestauthor'],$dom);
my @prefs_order = ('rolecolors','login','defaults','quotas','autoenroll',
'autoupdate','autocreate','directorysrch','contacts',
- 'usercreation','selfcreation','usermodification','scantron',
+ 'usercreation','usermodification','scantron',
'requestcourses','requestauthor','coursecategories',
- 'serverstatuses','coursedefaults','usersessions');
+ 'serverstatuses','helpsettings',
+ 'coursedefaults','usersessions');
my %existing;
if (ref($domconfig{'loadbalancing'}) eq 'HASH') {
%existing = %{$domconfig{'loadbalancing'}};
@@ -273,7 +275,7 @@ sub handler {
{col1 => 'Setting',
col2 => 'Affiliation'},
{col1 => 'User population',
- col2 => 'Updatable user data'}],
+ col2 => 'Updateable user data'}],
},
'autocreate' =>
{ text => 'Auto-course creation settings',
@@ -293,6 +295,7 @@ sub handler {
header => [{col1 => 'Setting',
col2 => 'Value',}],
},
+
'usercreation' =>
{ text => 'User creation',
help => 'Domain_Configuration_User_Creation',
@@ -303,23 +306,15 @@ sub handler {
{col1 => 'Context',
col2 => 'Assignable authentication types'}],
},
- 'selfcreation' =>
- { text => 'Users self-creating accounts',
- help => 'Domain_Configuration_Self_Creation',
- header => [{col1 => 'Self-creation with institutional username',
- col2 => 'Enabled?'},
- {col1 => 'Institutional user type (login/SSO self-creation)',
- col2 => 'Information user can enter'},
- {col1 => 'Self-creation with e-mail as username',
- col2 => 'Settings'}],
- },
'usermodification' =>
{ text => 'User modification',
help => 'Domain_Configuration_User_Modification',
header => [{col1 => 'Target user has role',
- col2 => 'User information updatable in author context'},
+ col2 => 'User information updateable in author context'},
{col1 => 'Target user has role',
- col2 => 'User information updatable in course context'}],
+ col2 => 'User information updateable in course context'},
+ {col1 => "Status of user",
+ col2 => 'Information settable when self-creating account (if directory data blank)'}],
},
'scantron' =>
{ text => 'Bubblesheet format file',
@@ -339,7 +334,7 @@ sub handler {
col2 => ''}],
},
'requestauthor' =>
- {text => 'Request Authoring Space',
+ {text => 'Request authoring space',
help => 'Domain_Configuration_Request_Author',
header => [{col1 => 'User affiliation',
col2 => 'Availability/Processing of requests',},
@@ -363,12 +358,26 @@ sub handler {
col3 => 'Specific IPs',
}],
},
- 'coursedefaults' =>
+ 'helpsettings' =>
+ {text => 'Help page settings',
+ help => 'Domain_Configuration_Help_Settings',
+ header => [{col1 => 'Help Settings (logged-in users)',
+ col2 => 'Value'}],
+ },
+ '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',},],
},
+ 'privacy' =>
+ {text => 'User Privacy',
+ help => 'Domain_Configuration_User_Privacy',
+ header => [{col1 => 'Setting',
+ col2 => 'Value',}],
+ },
'usersessions' =>
{text => 'User session hosting/offloading',
help => 'Domain_Configuration_User_Sessions',
@@ -411,7 +420,7 @@ sub handler {
if ($phase eq 'process') {
my $result = &Apache::lonconfigsettings::make_changes($r,$dom,$phase,$context,\@prefs_order,
\%prefs,\%domconfig,$confname,\@roles);
- if ((ref($result) eq 'HASH') && (keys(%{$result}))) {
+ if (ref($result) eq 'HASH') {
$r->rflush();
&devalidate_remote_domconfs($dom,$result);
}
@@ -529,8 +538,6 @@ sub process_changes {
$output = &modify_directorysrch($dom,%domconfig);
} elsif ($action eq 'usercreation') {
$output = &modify_usercreation($dom,%domconfig);
- } elsif ($action eq 'selfcreation') {
- $output = &modify_selfcreation($dom,%domconfig);
} elsif ($action eq 'usermodification') {
$output = &modify_usermodification($dom,%domconfig);
} elsif ($action eq 'contacts') {
@@ -547,6 +554,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 'usersessions') {
@@ -599,8 +608,6 @@ sub print_config_box {
$output .= &print_autoupdate('top',$dom,$settings,\$rowtotal);
} elsif ($action eq 'usercreation') {
$output .= &print_usercreation('top',$dom,$settings,\$rowtotal);
- } elsif ($action eq 'selfcreation') {
- $output .= &print_selfcreation('top',$dom,$settings,\$rowtotal);
} elsif ($action eq 'usermodification') {
$output .= &print_usermodification('top',$dom,$settings,\$rowtotal);
} elsif ($action eq 'coursecategories') {
@@ -620,6 +627,8 @@ sub print_config_box {
$output .= &print_usersessions('top',$dom,$settings,\$rowtotal);
} elsif ($action eq 'rolecolors') {
$output .= &print_rolecolors($phase,'student',$dom,$confname,$settings,\$rowtotal);
+ } elsif ($action eq 'coursedefaults') {
+ $output .= &print_coursedefaults('top',$dom,$settings,\$rowtotal);
}
$output .= '
@@ -660,8 +669,8 @@ sub print_config_box {
'.&mt($item->{'header'}->[2]->{'col2'}).' | '.
&print_usercreation('bottom',$dom,$settings,\$rowtotal);
$rowtotal ++;
- } elsif ($action eq 'selfcreation') {
- $output .= &print_selfcreation('middle',$dom,$settings,\$rowtotal).'
+ } elsif ($action eq 'usermodification') {
+ $output .= &print_usermodification('middle',$dom,$settings,\$rowtotal).'
@@ -670,12 +679,9 @@ sub print_config_box {
'.&mt($item->{'header'}->[2]->{'col1'}).' |
- '.&mt($item->{'header'}->[2]->{'col2'}).' |
-
'.
- &print_selfcreation('bottom',$dom,$settings,\$rowtotal);
+ '.&mt($item->{'header'}->[2]->{'col2'}).' | '.
+ &print_usermodification('bottom',$dom,$settings,\$rowtotal);
$rowtotal ++;
- } elsif ($action eq 'usermodification') {
- $output .= &print_usermodification('middle',$dom,$settings,\$rowtotal);
} elsif ($action eq 'coursecategories') {
$output .= &print_coursecategories('bottom',$dom,$item,$settings,\$rowtotal);
} elsif ($action eq 'login') {
@@ -723,6 +729,8 @@ sub print_config_box {
'.&mt($item->{'header'}->[2]->{'col2'}).' | '.
&print_usersessions('bottom',$dom,$settings,\$rowtotal);
$rowtotal ++;
+ } elsif ($action eq 'coursedefaults') {
+ $output .= &print_coursedefaults('bottom',$dom,$settings,\$rowtotal);
} elsif ($action eq 'rolecolors') {
$output .= &print_rolecolors($phase,'coordinator',$dom,$confname,$settings,\$rowtotal).'
@@ -819,8 +827,6 @@ sub print_config_box {
$output .= &print_helpsettings($dom,$confname,$settings,\$rowtotal);
} elsif ($action eq 'loadbalancing') {
$output .= &print_loadbalancing($dom,$settings,\$rowtotal);
- } elsif ($action eq 'coursedefaults') {
- $output .= &print_coursedefaults('bottom',$dom,$settings,\$rowtotal);
}
}
$output .= '
@@ -1986,26 +1992,23 @@ sub print_requestmail {
if (ref($settings) eq 'HASH') {
if (ref($settings->{'notify'}) eq 'HASH') {
if ($settings->{'notify'}{'approval'} ne '') {
- map {$currapp{$_}=1;} split(/,/,$settings->{'notify'}{'approval'});
+ map {$currapp{$_}=1;} split(/,/,$settings->{'notify'}{'approval'});
}
}
}
my $numinrow = 2;
- my $css_class;
- $css_class = ($$rowtotal%2? ' class="LC_odd_row"':'');
+ my $css_class = 'class="LC_odd_row"';
my $text;
if ($action eq 'requestcourses') {
$text = &mt('Receive notification of course requests requiring approval');
- } elsif ($action eq 'requestauthor') {
- $text = &mt('Receive notification of Authoring Space requests requiring approval');
} else {
- $text = &mt('Receive notification of queued requests for self-created user accounts requiring approval');
+ $text = &mt('Receive notification of authoring space requests requiring approval')
}
- $datatable = ''.
+ $datatable = '
'.
' '.$text.' | '.
' ';
my ($numdc,$table,$rows) = &active_dc_picker($dom,$numinrow,'checkbox',
- $action.'notifyapproval',%currapp);
+ 'reqapprovalnotify',%currapp);
if ($numdc > 0) {
$datatable .= $table;
} else {
@@ -3648,22 +3651,42 @@ sub print_usercreation {
$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 .= ' |
'.&mt('No format rules have been defined for usernames or IDs in this domain.').' |
';
$$rowtotal ++;
$rowcount ++;
}
} elsif ($position eq 'middle') {
- my @creators = ('author','course','requestcrs');
+ my @creators = ('author','course','requestcrs','selfcreate');
my ($rules,$ruleorder) =
&Apache::lonnet::inst_userrules($dom,'username');
my %lt = &usercreation_types();
my %checked;
+ my @selfcreate;
if (ref($settings) eq 'HASH') {
if (ref($settings->{'cancreate'}) eq 'HASH') {
foreach my $item (@creators) {
$checked{$item} = $settings->{'cancreate'}{$item};
}
+ if (ref($settings->{'cancreate'}{'selfcreate'}) eq 'ARRAY') {
+ @selfcreate = @{$settings->{'cancreate'}{'selfcreate'}};
+ } elsif ($settings->{'cancreate'}{'selfcreate'} ne '') {
+ if ($settings->{'cancreate'}{'selfcreate'} eq 'any') {
+ @selfcreate = ('email','login','sso');
+ } elsif ($settings->{'cancreate'}{'selfcreate'} ne 'none') {
+ @selfcreate = ($settings->{'cancreate'}{'selfcreate'});
+ }
+ }
} elsif (ref($settings->{'cancreate'}) eq 'ARRAY') {
foreach my $item (@creators) {
if (grep(/^\Q$item\E$/,@{$settings->{'cancreate'}})) {
@@ -3675,8 +3698,10 @@ sub print_usercreation {
my $rownum = 0;
foreach my $item (@creators) {
$rownum ++;
- if ($checked{$item} eq '') {
- $checked{$item} = 'any';
+ if ($item ne 'selfcreate') {
+ if ($checked{$item} eq '') {
+ $checked{$item} = 'any';
+ }
}
my $css_class;
if ($rownum%2) {
@@ -3687,18 +3712,30 @@ sub print_usercreation {
$datatable .= ''.
''.$lt{$item}.
' | ';
- my @options = ('any');
- if (ref($rules) eq 'HASH') {
- if (keys(%{$rules}) > 0) {
- push(@options,('official','unofficial'));
+ my @options;
+ if ($item eq 'selfcreate') {
+ push(@options,('email','login','sso'));
+ } else {
+ @options = ('any');
+ if (ref($rules) eq 'HASH') {
+ if (keys(%{$rules}) > 0) {
+ push(@options,('official','unofficial'));
+ }
}
+ push(@options,'none');
}
- push(@options,'none');
foreach my $option (@options) {
my $type = 'radio';
my $check = ' ';
- if ($checked{$item} eq $option) {
- $check = ' checked="checked" ';
+ if ($item eq 'selfcreate') {
+ $type = 'checkbox';
+ if (grep(/^\Q$option\E$/,@selfcreate)) {
+ $check = ' checked="checked" ';
+ }
+ } else {
+ if ($checked{$item} eq $option) {
+ $check = ' checked="checked" ';
+ }
}
$datatable .= ' |