--- loncom/interface/domainprefs.pm 2009/09/14 15:59:10 1.76.4.2
+++ loncom/interface/domainprefs.pm 2009/02/09 03:42:03 1.87
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.76.4.2 2009/09/14 15:59:10 raeburn Exp $
+# $Id: domainprefs.pm,v 1.87 2009/02/09 03:42:03 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -74,11 +74,12 @@ sub handler {
&Apache::lonnet::get_dom('configuration',['login','rolecolors',
'quotas','autoenroll','autoupdate','directorysrch',
'usercreation','usermodification','contacts','defaults',
- 'scantron','coursecategories','serverstatuses'],$dom);
+ 'scantron','coursecategories','serverstatuses',
+ 'requestcourses'],$dom);
my @prefs_order = ('rolecolors','login','defaults','quotas','autoenroll',
'autoupdate','directorysrch','contacts',
'usercreation','usermodification','scantron',
- 'coursecategories','serverstatuses');
+ 'requestcourses','coursecategories','serverstatuses');
my %prefs = (
'rolecolors' =>
{ text => 'Default color schemes',
@@ -107,7 +108,7 @@ sub handler {
'quotas' =>
{ text => 'User blogs, home pages and portfolios',
help => 'Domain_Configuration_Quotas',
- header => [{col1 => 'User type',
+ header => [{col1 => 'User affiliation',
col2 => 'Available tools',
col3 => 'Portfolio quota',}],
},
@@ -165,6 +166,12 @@ sub handler {
col2 => '',
}],
},
+ 'requestcourses' =>
+ {text => 'Request creation of courses',
+ help => 'Domain_Configuration_Request_Courses',
+ header => [{col1 => 'User affiliation',
+ col2 => 'Requestable course types',}],
+ },
'coursecategories' =>
{ text => 'Cataloging of courses',
help => 'Domain_Configuration_Cataloging_Courses',
@@ -175,7 +182,7 @@ sub handler {
}],
},
'serverstatuses' =>
- {text => 'Access to Server Status Pages',
+ {text => 'Access to server status pages',
help => 'Domain_Configuration_Server_Status',
header => [{col1 => 'Status Page',
col2 => 'Other named users',
@@ -363,7 +370,7 @@ sub process_changes {
$output = &modify_rolecolors($r,$dom,$confname,$roles,
%domconfig);
} elsif ($action eq 'quotas') {
- $output = &modify_quotas($dom,%domconfig);
+ $output = &modify_quotas($dom,$action,%domconfig);
} elsif ($action eq 'autoenroll') {
$output = &modify_autoenroll($dom,%domconfig);
} elsif ($action eq 'autoupdate') {
@@ -384,6 +391,8 @@ sub process_changes {
$output = &modify_coursecategories($dom,%domconfig);
} elsif ($action eq 'serverstatuses') {
$output = &modify_serverstatuses($dom,%domconfig);
+ } elsif ($action eq 'requestcourses') {
+ $output = &modify_quotas($dom,$action,%domconfig);
}
return $output;
}
@@ -544,7 +553,7 @@ sub print_config_box {
if ($action eq 'login') {
$output .= &print_login($dom,$confname,$phase,$settings,\$rowtotal);
} elsif ($action eq 'quotas') {
- $output .= &print_quotas($dom,$settings,\$rowtotal);
+ $output .= &print_quotas($dom,$settings,\$rowtotal,$action);
} elsif ($action eq 'autoenroll') {
$output .= &print_autoenroll($dom,$settings,\$rowtotal);
} elsif ($action eq 'directorysrch') {
@@ -557,6 +566,8 @@ sub print_config_box {
$output .= &print_scantronformat($r,$dom,$confname,$settings,\$rowtotal);
} elsif ($action eq 'serverstatuses') {
$output .= &print_serverstatuses($dom,$settings,\$rowtotal);
+ } elsif ($action eq 'requestcourses') {
+ $output .= &print_quotas($dom,$settings,\$rowtotal,$action);
}
}
$output .= '
@@ -817,9 +828,9 @@ sub login_choices {
bgs => "Background colors",
links => "Link colors",
font => "Font color",
- pgbg => "Page",
- mainbg => "Main panel",
- sidebg => "Side panel",
+ pgbg => "Header",
+ mainbg => "Page",
+ sidebg => "Login box",
link => "Link",
alink => "Active link",
vlink => "Visited link",
@@ -1236,21 +1247,33 @@ ENDCOL
}
sub print_quotas {
- my ($dom,$settings,$rowtotal) = @_;
- my $datatable;
+ my ($dom,$settings,$rowtotal,$action) = @_;
+ my $context;
+ if ($action eq 'quotas') {
+ $context = 'tools';
+ } else {
+ $context = $action;
+ }
+ my ($datatable,$defaultquota,@usertools);
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
my $typecount = 0;
my $css_class;
- my @usertools = ('aboutme','blog','portfolio');
+ if ($context eq 'requestcourses') {
+ @usertools = ('official','unofficial');
+ } else {
+ @usertools = ('aboutme','blog','portfolio');
+ }
my %titles = &tool_titles();
if (ref($types) eq 'ARRAY') {
foreach my $type (@{$types}) {
my $currdefquota;
- if (ref($settings) eq 'HASH') {
- if (ref($settings->{defaultquota}) eq 'HASH') {
- $currdefquota = $settings->{defaultquota}->{$type};
- } else {
- $currdefquota = $settings->{$type};
+ unless ($context eq 'requestcourses') {
+ if (ref($settings) eq 'HASH') {
+ if (ref($settings->{defaultquota}) eq 'HASH') {
+ $currdefquota = $settings->{defaultquota}->{$type};
+ } else {
+ $currdefquota = $settings->{$type};
+ }
}
}
if (defined($usertypes->{$type})) {
@@ -1260,32 +1283,44 @@ sub print_quotas {
'
'.$usertypes->{$type}.' | '.
'';
foreach my $item (@usertools) {
- my $checked = 'checked="checked" ';
+ my $checked;
+ unless ($context eq 'requestcourses') {
+ $checked = 'checked="checked" ';
+ }
if (ref($settings) eq 'HASH') {
if (ref($settings->{$item}) eq 'HASH') {
if ($settings->{$item}->{$type} == 0) {
$checked = '';
+ } elsif ($settings->{$item}->{$type} == 1) {
+ $checked = 'checked="checked" ';
}
}
}
$datatable .= ' ';
}
- $datatable .= ' | '.
+ $datatable .= ' | ';
+ unless ($context eq 'requestcourses') {
+ $datatable .=
+ ''.
' Mb | ';
+ '" size="5" /> Mb';
+ }
+ $datatable .= '';
}
}
}
- my $defaultquota = '20';
- if (ref($settings) eq 'HASH') {
- if (ref($settings->{'defaultquota'}) eq 'HASH') {
- $defaultquota = $settings->{'defaultquota'}->{'default'};
- } elsif (defined($settings->{'default'})) {
- $defaultquota = $settings->{'default'};
+ unless ($context eq 'requestcourses') {
+ $defaultquota = '20';
+ if (ref($settings) eq 'HASH') {
+ if (ref($settings->{'defaultquota'}) eq 'HASH') {
+ $defaultquota = $settings->{'defaultquota'}->{'default'};
+ } elsif (defined($settings->{'default'})) {
+ $defaultquota = $settings->{'default'};
+ }
}
}
$typecount ++;
@@ -1294,38 +1329,52 @@ sub print_quotas {
''.$othertitle.' | '.
'';
foreach my $item (@usertools) {
- my $checked = 'checked="checked" ';
+ my $checked;
+ unless ($context eq 'requestcourses') {
+ $checked = 'checked="checked" ';
+ }
if (ref($settings) eq 'HASH') {
if (ref($settings->{$item}) eq 'HASH') {
if ($settings->{$item}->{'default'} == 0) {
$checked = '';
+ } elsif ($settings->{$item}->{'default'} == 1) {
+ $checked = 'checked="checked" ';
}
}
}
$datatable .= ' ';
}
- $datatable .= ' | '.
- ' Mb | ';
+ $datatable .= '';
+ unless ($context eq 'requestcourses') {
+ $datatable .= ''.
+ ' Mb | ';
+ }
+ $datatable .= '';
$typecount ++;
$css_class = $typecount%2?' class="LC_odd_row"':'';
$datatable .= ''.
' '.&mt('LON-CAPA Advanced Users').' | '.
' ';
foreach my $item (@usertools) {
- my $checked = 'checked="checked" ';
+ my $checked;
+ unless ($context eq 'requestcourses') {
+ $checked = 'checked="checked" ';
+ }
if (ref($settings) eq 'HASH') {
if (ref($settings->{$item}) eq 'HASH') {
if ($settings->{$item}->{'_LC_adv'} == 0) {
$checked = '';
+ } elsif ($settings->{$item}->{'_LC_adv'} == 1) {
+ $checked = 'checked="checked" ';
}
}
}
$datatable .= ' ';
}
@@ -1571,7 +1620,7 @@ sub print_contacts {
my $datatable;
my @contacts = ('adminemail','supportemail');
my (%checked,%to,%otheremails);
- my @mailings = ('errormail','packagesmail','lonstatusmail','helpdeskmail');
+ my @mailings = ('errormail','packagesmail','helpdeskmail');
foreach my $type (@mailings) {
$otheremails{$type} = '';
}
@@ -1591,8 +1640,6 @@ sub print_contacts {
}
$otheremails{$type} = $settings->{$type}{'others'};
}
- } elsif ($type eq 'lonstatusmail') {
- $checked{'lonstatusmail'}{'adminemail'} = ' checked="checked" ';
}
}
} else {
@@ -1600,8 +1647,7 @@ sub print_contacts {
$to{'adminemail'} = $Apache::lonnet::perlvar{'lonAdmEMail'};
$checked{'errormail'}{'adminemail'} = ' checked="checked" ';
$checked{'packagesmail'}{'adminemail'} = ' checked="checked" ';
- $checked{'helpdeskmail'}{'supportemail'} = ' checked="checked" ';
- $checked{'lonstatusmail'}{'adminemail'} = ' checked="checked" ';
+ $checked{'helpdeskmail'}{'supportemail'} = ' checked="checked" ';
}
my ($titles,$short_titles) = &contact_titles();
my $rownum = 0;
@@ -1645,8 +1691,7 @@ sub contact_titles {
'adminemail' => 'Default Server Admin E-mail address',
'errormail' => 'Error reports to be e-mailed to',
'packagesmail' => 'Package update alerts to be e-mailed to',
- 'helpdeskmail' => 'Helpdesk requests to be e-mailed to',
- 'lonstatusmail' => 'E-mail from nightly status check (warnings/errors)',
+ 'helpdeskmail' => 'Helpdesk requests to be e-mailed to'
);
my %short_titles = &Apache::lonlocal::texthash (
adminemail => 'Admin E-mail address',
@@ -1657,10 +1702,11 @@ sub contact_titles {
sub tool_titles {
my %titles = &Apache::lonlocal::texthash (
- aboutme => 'Personal Home Page',
- blog => 'Blog',
- portfolio => 'Portfolio',
- );
+ aboutme => 'Personal Home Page',
+ blog => 'Blog',
+ portfolio => 'Portfolio',
+ official => 'Official courses (with institutional codes)', unofficial => 'Unofficial courses',
+ );
return %titles;
}
@@ -1898,7 +1944,7 @@ sub usercreation_types {
any => 'Any',
official => 'Institutional only ',
unofficial => 'Non-institutional only',
- email => 'Email address',
+ email => 'E-mail address',
login => 'Institutional Login',
sso => 'SSO',
none => 'None',
@@ -3508,21 +3554,36 @@ END
}
sub modify_quotas {
- my ($dom,%domconfig) = @_;
+ my ($dom,$action,%domconfig) = @_;
+ my ($context,@usertools);
+ if ($action eq 'quotas') {
+ $context = 'tools';
+ } else {
+ $context = $action;
+ }
+ if ($context eq 'requestcourses') {
+ @usertools = ('official','unofficial');
+ } else {
+ @usertools = ('aboutme','blog','portfolio');
+ }
my %domdefaults = &Apache::lonnet::get_domain_defaults($dom);
my ($resulttext,%changes);
my ($othertitle,$usertypes,$types) = &Apache::loncommon::sorted_inst_types($dom);
- my @usertools = ('aboutme','blog','portfolio');
my %titles = &tool_titles();
my (%confhash,%toolshash);
foreach my $key (keys(%env)) {
- if ($key =~ /^form\.quota_(.+)$/) {
- $confhash{'defaultquota'}{$1} = $env{$key};
- } elsif ($key =~ /^form\.tools_(.+)$/) {
+ unless ($context eq 'requestcourses') {
+ if ($key =~ /^form\.quota_(.+)$/) {
+ $confhash{'defaultquota'}{$1} = $env{$key};
+ }
+ }
+ if ($key =~ /^form\.\Q$context\E_(.+)$/) {
@{$toolshash{$1}} = &Apache::loncommon::get_env_multiple($key);
}
}
- $confhash{'defaultquota'}{'default'} = $env{'form.defaultquota'};
+ unless ($context eq 'requestcourses') {
+ $confhash{'defaultquota'}{'default'} = $env{'form.defaultquota'};
+ }
foreach my $item (@usertools) {
foreach my $type (@{$types},'default','_LC_adv') {
if (grep(/^\Q$type\E$/,@{$toolshash{$item}})) {
@@ -3530,60 +3591,74 @@ sub modify_quotas {
} else {
$confhash{$item}{$type} = 0;
}
- if (ref($domconfig{'quotas'}) eq 'HASH') {
- if (ref($domconfig{'quotas'}{$item}) eq 'HASH') {
- if ($domconfig{'quotas'}{$item}{$type} ne $confhash{$item}{$type}) {
+ if (ref($domconfig{$action}) eq 'HASH') {
+ if (ref($domconfig{$action}{$item}) eq 'HASH') {
+ if ($domconfig{$action}{$item}{$type} ne $confhash{$item}{$type}) {
$changes{$item}{$type} = 1;
}
} else {
- if (!$confhash{$item}{$type}) {
- $changes{$item}{$type} = 1;
+ if ($context eq 'requestcourses') {
+ if ($confhash{$item}{$type}) {
+ $changes{$item}{$type} = 1;
+ }
+ } else {
+ if (!$confhash{$item}{$type}) {
+ $changes{$item}{$type} = 1;
+ }
}
}
} else {
- if (!$confhash{$item}{$type}) {
- $changes{$item}{$type} = 1;
+ if ($context eq 'requestcourses') {
+ if ($confhash{$item}{$type}) {
+ $changes{$item}{$type} = 1;
+ }
+ } else {
+ if (!$confhash{$item}{$type}) {
+ $changes{$item}{$type} = 1;
+ }
}
}
}
}
- if (ref($domconfig{'quotas'}) eq 'HASH') {
- if (ref($domconfig{'quotas'}{'defaultquota'}) eq 'HASH') {
- foreach my $key (keys(%{$domconfig{'quotas'}{'defaultquota'}})) {
- if (exists($confhash{'defaultquota'}{$key})) {
- if ($confhash{'defaultquota'}{$key} ne $domconfig{'quotas'}{'defaultquota'}{$key}) {
- $changes{'defaultquota'}{$key} = 1;
+ unless ($context eq 'requestcourses') {
+ if (ref($domconfig{'quotas'}) eq 'HASH') {
+ if (ref($domconfig{'quotas'}{'defaultquota'}) eq 'HASH') {
+ foreach my $key (keys(%{$domconfig{'quotas'}{'defaultquota'}})) {
+ if (exists($confhash{'defaultquota'}{$key})) {
+ if ($confhash{'defaultquota'}{$key} ne $domconfig{'quotas'}{'defaultquota'}{$key}) {
+ $changes{'defaultquota'}{$key} = 1;
+ }
+ } else {
+ $confhash{'defaultquota'}{$key} = $domconfig{'quotas'}{'defaultquota'}{$key};
}
- } else {
- $confhash{'defaultquota'}{$key} = $domconfig{'quotas'}{'defaultquota'}{$key};
}
- }
- } else {
- foreach my $key (keys(%{$domconfig{'quotas'}})) {
- if (exists($confhash{'defaultquota'}{$key})) {
- if ($confhash{'defaultquota'}{$key} ne $domconfig{'quotas'}{$key}) {
- $changes{'defaultquota'}{$key} = 1;
+ } else {
+ foreach my $key (keys(%{$domconfig{'quotas'}})) {
+ if (exists($confhash{'defaultquota'}{$key})) {
+ if ($confhash{'defaultquota'}{$key} ne $domconfig{'quotas'}{$key}) {
+ $changes{'defaultquota'}{$key} = 1;
+ }
+ } else {
+ $confhash{'defaultquota'}{$key} = $domconfig{'quotas'}{$key};
}
- } else {
- $confhash{'defaultquota'}{$key} = $domconfig{'quotas'}{$key};
}
}
}
- }
- if (ref($confhash{'defaultquota'}) eq 'HASH') {
- foreach my $key (keys(%{$confhash{'defaultquota'}})) {
- if (ref($domconfig{'quotas'}) eq 'HASH') {
- if (ref($domconfig{'quotas'}{'defaultquota'}) eq 'HASH') {
- if (!exists($domconfig{'quotas'}{'defaultquota'}{$key})) {
- $changes{'defaultquota'}{$key} = 1;
+ if (ref($confhash{'defaultquota'}) eq 'HASH') {
+ foreach my $key (keys(%{$confhash{'defaultquota'}})) {
+ if (ref($domconfig{'quotas'}) eq 'HASH') {
+ if (ref($domconfig{'quotas'}{'defaultquota'}) eq 'HASH') {
+ if (!exists($domconfig{'quotas'}{'defaultquota'}{$key})) {
+ $changes{'defaultquota'}{$key} = 1;
+ }
+ } else {
+ if (!exists($domconfig{'quotas'}{$key})) {
+ $changes{'defaultquota'}{$key} = 1;
+ }
}
} else {
- if (!exists($domconfig{'quotas'}{$key})) {
- $changes{'defaultquota'}{$key} = 1;
- }
+ $changes{'defaultquota'}{$key} = 1;
}
- } else {
- $changes{'defaultquota'}{$key} = 1;
}
}
}
@@ -3593,7 +3668,7 @@ sub modify_quotas {
}
my %quotahash = (
- quotas => { %confhash }
+ $action => { %confhash }
);
my $putresult = &Apache::lonnet::put_dom('configuration',\%quotahash,
$dom);
@@ -3603,28 +3678,36 @@ sub modify_quotas {
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime);
$resulttext = &mt('Changes made:').'';
- if (ref($changes{'defaultquota'}) eq 'HASH') {
- $resulttext .= '- '.&mt('Portfolio default quotas').'
';
- foreach my $type (@{$types},'default') {
- if (defined($changes{'defaultquota'}{$type})) {
- my $typetitle = $usertypes->{$type};
- if ($type eq 'default') {
- $typetitle = $othertitle;
+ unless ($context eq 'requestcourses') {
+ if (ref($changes{'defaultquota'}) eq 'HASH') {
+ $resulttext .= '- '.&mt('Portfolio default quotas').'
';
+ foreach my $type (@{$types},'default') {
+ if (defined($changes{'defaultquota'}{$type})) {
+ my $typetitle = $usertypes->{$type};
+ if ($type eq 'default') {
+ $typetitle = $othertitle;
+ }
+ $resulttext .= '- '.&mt('[_1] set to [_2] Mb',$typetitle,$confhash{'defaultquota'}{$type}).'
';
}
- $resulttext .= '- '.&mt('[_1] set to [_2] Mb',$typetitle,$confhash{'defaultquota'}{$type}).'
';
}
+ $resulttext .= ' ';
}
- $resulttext .= ' ';
}
my %newenv;
foreach my $item (@usertools) {
if (ref($changes{$item}) eq 'HASH') {
- my $newacc =
+ my $newacc =
&Apache::lonnet::usertools_access($env{'user.name'},
$env{'user.domain'},
- $item,'reload');
- if ($env{'environment.availabletools.'.$item} ne $newacc) {
+ $item,'reload',$context);
+ if ($context eq 'requestcourses') {
+ if ($env{'environment.canrequest.'.$item} ne $newacc) {
+ $newenv{'environment.canrequest.'.$item} = $newacc;
+ }
+ } else {
+ if ($env{'environment.availabletools.'.$item} ne $newacc) {
$newenv{'environment.availabletools.'.$item} = $newacc;
+ }
}
$resulttext .= '- '.$titles{$item}.'
';
foreach my $type (@{$types},'default','_LC_adv') {
@@ -3650,7 +3733,11 @@ sub modify_quotas {
&Apache::lonnet::appenv(\%newenv);
}
} else {
- $resulttext = &mt('No changes made to availability of home pages, blogs, portfolios or default quotas');
+ if ($context eq 'requestcourses') {
+ $resulttext = &mt('No changes made to rights to request creation of courses.');
+ } else {
+ $resulttext = &mt('No changes made to availability of home pages, blogs, portfolios or default quotas');
+ }
}
} else {
$resulttext = ''.
@@ -4033,7 +4120,7 @@ sub modify_contacts {
}
my (%others,%to);
my @contacts = ('supportemail','adminemail');
- my @mailings = ('errormail','packagesmail','helpdeskmail','lonstatusmail');
+ my @mailings = ('errormail','packagesmail','helpdeskmail');
foreach my $type (@mailings) {
@{$newsetting{$type}} =
&Apache::loncommon::get_env_multiple('form.'.$type);
@@ -4078,7 +4165,6 @@ sub modify_contacts {
$default{'errormail'} = 'adminemail';
$default{'packagesmail'} = 'adminemail';
$default{'helpdeskmail'} = 'supportemail';
- $default{'lonstatusmail'} = 'adminemail';
foreach my $item (@contacts) {
if ($to{$item} ne $default{$item}) {
$changes{$item} = 1;
@@ -4588,10 +4674,8 @@ sub modify_defaults {
if ($newvalues{$item} ne '') {
if ($newvalues{$item} =~ /^(\w+)/) {
my $langcode = $1;
- if ($langcode ne 'gci' && $langcode ne 'x_chef') {
- if (code2language($langcode) eq '') {
- push(@errors,$item);
- }
+ if (code2language($langcode) eq '') {
+ push(@errors,$item);
}
} else {
push(@errors,$item);
@@ -4991,7 +5075,7 @@ sub modify_serverstatuses {
foreach my $setting ('namedusers','machines') {
my (@current,@new);
if (ref($currserverstatus{$type}) eq 'HASH') {
- if ($currserverstatus{$type}{$setting} ne '') {
+ if ($currserverstatus{$type}{$setting} ne '') {
@current = split(/,/,$currserverstatus{$type}{$setting});
}
}
|