[LON-CAPA-cvs] cvs: loncom /interface domainprefs.pm
raeburn
raeburn@source.lon-capa.org
Sun, 08 Feb 2009 21:04:01 -0000
This is a MIME encoded message
--raeburn1234127041
Content-Type: text/plain
raeburn Sun Feb 8 21:04:01 2009 EDT
Modified files:
/loncom/interface domainprefs.pm
Log:
Work on ability of individual users to request creation of (a) official courses,
and (b) unofficial courses.
&print_quotas() accepts additional argument - $action
- 'quotas' to display options for setting portfoilo/blog/aboutme availability or portfolio quota
- 'requestcourses' to display options for setting rights to request official/unofficial courses
&modify_quotas() - argument changed. New arg ($action) added between two existing args.
- 'quotas' to store changes for domain defaults for user tools availability.
- 'requestcourses' to store changes for domain defaults for rights to request course creation.
--raeburn1234127041
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20090208210401.txt"
Index: loncom/interface/domainprefs.pm
diff -u loncom/interface/domainprefs.pm:1.85 loncom/interface/domainprefs.pm:1.86
--- loncom/interface/domainprefs.pm:1.85 Tue Jan 27 15:59:30 2009
+++ loncom/interface/domainprefs.pm Sun Feb 8 21:04:01 2009
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Handler to set domain-wide configuration settings
#
-# $Id: domainprefs.pm,v 1.85 2009/01/27 15:59:30 schafran Exp $
+# $Id: domainprefs.pm,v 1.86 2009/02/08 21:04:01 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -74,11 +74,12 @@
&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',
@@ -165,6 +166,12 @@
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',
@@ -363,7 +370,7 @@
$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 @@
$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 @@
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 @@
$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 .= '
@@ -1236,21 +1247,33 @@
}
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 @@
'<td>'.$usertypes->{$type}.'</td>'.
'<td class="LC_left_item">';
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 .= '<span class="LC_nobreak"><label>'.
- '<input type="checkbox" name="tools_'.$item.
+ '<input type="checkbox" name="'.$context.'_'.$item.
'" value="'.$type.'" '.$checked.'/>'.$titles{$item}.
'</label></span> ';
}
- $datatable .= '</td><td class="LC_right_item"><span class="LC_nobreak">'.
+ $datatable .= '</td>';
+ unless ($context eq 'requestcourses') {
+ $datatable .=
+ '<td class="LC_right_item"><span class="LC_nobreak">'.
'<input type="text" name="quota_'.$type.
'" value="'.$currdefquota.
- '" size="5" /> Mb</span></td></tr>';
+ '" size="5" /> Mb</span></td>';
+ }
+ $datatable .= '</tr>';
}
}
}
- 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 @@
'<td>'.$othertitle.'</td>'.
'<td class="LC_left_item">';
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 .= '<span class="LC_nobreak"><label>'.
- '<input type="checkbox" name="tools_'.$item.
+ '<input type="checkbox" name="'.$context.'_'.$item.
'" value="default" '.$checked.'/>'.$titles{$item}.
'</label></span> ';
}
- $datatable .= '</td><td class="LC_right_item"><span class="LC_nobreak">'.
- '<input type="text" name="defaultquota" value="'.
- $defaultquota.'" size="5" /> Mb</span></td></tr>';
+ $datatable .= '</td>';
+ unless ($context eq 'requestcourses') {
+ $datatable .= '<td class="LC_right_item"><span class="LC_nobreak">'.
+ '<input type="text" name="defaultquota" value="'.
+ $defaultquota.'" size="5" /> Mb</span></td>';
+ }
+ $datatable .= '</tr>';
$typecount ++;
$css_class = $typecount%2?' class="LC_odd_row"':'';
$datatable .= '<tr'.$css_class.'>'.
'<td><br/>'.&mt('LON-CAPA Advanced Users').'</td>'.
'<td class="LC_left_item" colspan="2"><br />';
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 .= '<span class="LC_nobreak"><label>'.
- '<input type="checkbox" name="tools_'.$item.
+ '<input type="checkbox" name="'.$context.'_'.$item.
'" value="_LC_adv" '.$checked.'/>'.$titles{$item}.
'</label></span> ';
}
@@ -1653,10 +1702,11 @@
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;
}
@@ -3504,21 +3554,36 @@
}
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}})) {
@@ -3526,60 +3591,74 @@
} 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;
}
}
}
@@ -3589,7 +3668,7 @@
}
my %quotahash = (
- quotas => { %confhash }
+ $action => { %confhash }
);
my $putresult = &Apache::lonnet::put_dom('configuration',\%quotahash,
$dom);
@@ -3599,18 +3678,20 @@
&Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime);
$resulttext = &mt('Changes made:').'<ul>';
- if (ref($changes{'defaultquota'}) eq 'HASH') {
- $resulttext .= '<li>'.&mt('Portfolio default quotas').'<ul>';
- 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 .= '<li>'.&mt('Portfolio default quotas').'<ul>';
+ foreach my $type (@{$types},'default') {
+ if (defined($changes{'defaultquota'}{$type})) {
+ my $typetitle = $usertypes->{$type};
+ if ($type eq 'default') {
+ $typetitle = $othertitle;
+ }
+ $resulttext .= '<li>'.&mt('[_1] set to [_2] Mb',$typetitle,$confhash{'defaultquota'}{$type}).'</li>';
}
- $resulttext .= '<li>'.&mt('[_1] set to [_2] Mb',$typetitle,$confhash{'defaultquota'}{$type}).'</li>';
}
+ $resulttext .= '</ul></li>';
}
- $resulttext .= '</ul></li>';
}
my %newenv;
foreach my $item (@usertools) {
@@ -3618,9 +3699,15 @@
my $newacc =
&Apache::lonnet::usertools_access($env{'user.name'},
$env{'user.domain'},
- $item,'reload');
- if ($env{'environment.availabletools.'.$item} ne $newacc) {
- $newenv{'environment.availabletools.'.$item} = $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 .= '<li>'.$titles{$item}.'<ul>';
foreach my $type (@{$types},'default','_LC_adv') {
@@ -3646,7 +3733,11 @@
&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 = '<span class="LC_error">'.
--raeburn1234127041--