--- loncom/interface/domainprefs.pm 2009/01/27 15:59:30 1.85 +++ loncom/interface/domainprefs.pm 2009/02/08 21:04:01 1.86 @@ -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 @@ 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', @@ -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', @@ -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 .= ' @@ -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 .= '  '; } @@ -1653,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; } @@ -3504,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}})) { @@ -3526,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; } } } @@ -3589,7 +3668,7 @@ sub modify_quotas { } my %quotahash = ( - quotas => { %confhash } + $action => { %confhash } ); my $putresult = &Apache::lonnet::put_dom('configuration',\%quotahash, $dom); @@ -3599,18 +3678,20 @@ sub modify_quotas { &Apache::lonnet::do_cache_new('domdefaults',$dom,\%domdefaults,$cachetime); $resulttext = &mt('Changes made:').'