--- loncom/interface/domainprefs.pm 2014/04/25 17:56:43 1.237 +++ loncom/interface/domainprefs.pm 2014/04/28 01:48:04 1.238 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set domain-wide configuration settings # -# $Id: domainprefs.pm,v 1.237 2014/04/25 17:56:43 bisitz Exp $ +# $Id: domainprefs.pm,v 1.238 2014/04/28 01:48:04 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -387,7 +387,9 @@ sub handler { 'coursecategories' => { text => 'Cataloging of courses/communities', help => 'Domain_Configuration_Cataloging_Courses', - header => [{col1 => 'Category settings', + header => [{col1 => 'Catalog type/availability', + col2 => '',}, + {col1 => 'Category settings for standard catalog', col2 => '',}, {col1 => 'Categories', col2 => '', @@ -665,7 +667,7 @@ sub print_config_box { if ($numheaders > 1) { my $colspan = ''; my $rightcolspan = ''; - if (($action eq 'rolecolors') || ($action eq 'coursecategories') || ($action eq 'defaults') || + if (($action eq 'rolecolors') || ($action eq 'defaults') || (($action eq 'login') && ($numheaders < 3))) { $colspan = ' colspan="2"'; } @@ -713,8 +715,14 @@ sub print_config_box { $rowtotal ++; if (($action eq 'autoupdate') || ($action eq 'usercreation') || ($action eq 'selfcreation') || ($action eq 'selfenrollment') || - ($action eq 'usersessions')) { - $output .= $item->{'print'}->('middle',$dom,$settings,\$rowtotal).' + ($action eq 'usersessions') || ($action eq 'coursecategories')) { + if ($action eq 'coursecategories') { + $output .= &print_coursecategories('middle',$dom,$item,$settings,\$rowtotal); + $colspan = ' colspan="2"'; + } else { + $output .= $item->{'print'}->('middle',$dom,$settings,\$rowtotal); + } + $output .= ' @@ -724,14 +732,16 @@ sub print_config_box { '.&mt($item->{'header'}->[2]->{'col1'}).' '.&mt($item->{'header'}->[2]->{'col2'}).' - '."\n". - $item->{'print'}->('bottom',$dom,$settings,\$rowtotal); + '."\n"; + if ($action eq 'coursecategories') { + $output .= &print_coursecategories('bottom',$dom,$item,$settings,\$rowtotal); + } else { + $output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal); + } $rowtotal ++; } elsif (($action eq 'usermodification') || ($action eq 'coursedefaults') || ($action eq 'defaults')) { $output .= $item->{'print'}->('bottom',$dom,$settings,\$rowtotal); - } elsif ($action eq 'coursecategories') { - $output .= &print_coursecategories('bottom',$dom,$item,$settings,\$rowtotal); } elsif ($action eq 'login') { if ($numheaders == 3) { $output .= &print_login('page',$dom,$confname,$phase,$settings,\$rowtotal).' @@ -4746,6 +4756,49 @@ sub print_coursecategories { my ($position,$dom,$hdritem,$settings,$rowtotal) = @_; my $datatable; if ($position eq 'top') { + my (%checked); + my @catitems = ('unauth','auth'); + my @cattypes = ('std','domonly','codesrch','none'); + $checked{'unauth'} = 'std'; + $checked{'auth'} = 'std'; + if (ref($settings) eq 'HASH') { + foreach my $type (@cattypes) { + if ($type eq $settings->{'unauth'}) { + $checked{'unauth'} = $type; + } + if ($type eq $settings->{'auth'}) { + $checked{'auth'} = $type; + } + } + } + my %lt = &Apache::lonlocal::texthash ( + unauth => 'Catalog type for unauthenticated users', + auth => 'Catalog type for authenticated users', + none => 'No catalog', + std => 'Standard catalog', + domonly => 'Domain-only catalog', + codesrch => "Code search form", + ); + my $itemcount = 0; + foreach my $item (@catitems) { + my $css_class = $itemcount%2? ' class="LC_odd_row"':''; + $datatable .= ''. + ''.$lt{$item}.''. + ''; + foreach my $type (@cattypes) { + my $ischecked; + if ($checked{$item} eq $type) { + $ischecked=' checked="checked"'; + } + $datatable .= ' '; + } + $datatable .= ''; + $itemcount ++; + } + $$rowtotal += $itemcount; + } elsif ($position eq 'middle') { my $toggle_cats_crs = ' '; my $toggle_cats_dom = ' checked="checked" '; my $can_cat_crs = ' '; @@ -4952,7 +5005,7 @@ sub print_coursecategories { $datatable .= &initialize_categories($itemcount); } } else { - $datatable .= ''.$hdritem->{'header'}->[0]->{'col2'}.'' + $datatable .= ''.$hdritem->{'header'}->[1]->{'col2'}.'' .&initialize_categories($itemcount); } $$rowtotal += $itemcount; @@ -9315,6 +9368,8 @@ sub modify_coursecategories { my ($resulttext,%deletions,%reorderings,%needreordering,%adds,%changes,$errors, $cathash); my @deletecategory = &Apache::loncommon::get_env_multiple('form.deletecategory'); + my @catitems = ('unauth','auth'); + my @cattypes = ('std','domonly','codesrch','none'); if (ref($domconfig{'coursecategories'}) eq 'HASH') { $cathash = $domconfig{'coursecategories'}{'cats'}; if ($domconfig{'coursecategories'}{'togglecats'} ne $env{'form.togglecats'}) { @@ -9333,6 +9388,14 @@ sub modify_coursecategories { $changes{'categorizecomm'} = 1; $domconfig{'coursecategories'}{'categorizecomm'} = $env{'form.categorizecomm'}; } + foreach my $item (@catitems) { + if (grep(/^\Q$env{'form.coursecat_'.$item}\E$/,@cattypes)) { + if ($domconfig{'coursecategories'}{$item} ne $env{'form.coursecat_'.$item}) { + $changes{$item} = 1; + $domconfig{'coursecategories'}{$item} = $env{'form.coursecat_'.$item}; + } + } + } } else { $changes{'togglecats'} = 1; $changes{'categorize'} = 1; @@ -9344,6 +9407,14 @@ sub modify_coursecategories { togglecatscomm => $env{'form.togglecatscomm'}, categorizecomm => $env{'form.categorizecomm'}, }; + foreach my $item (@catitems) { + if ($env{'form.coursecat_'.$item} ne 'std') { + $changes{$item} = 1; + } + if (grep(/^\Q$env{'form.coursecat_'.$item}\E$/,@cattypes)) { + $domconfig{'coursecategories'}{$item} = $env{'form.coursecat_'.$item}; + } + } } if (ref($cathash) eq 'HASH') { if (($domconfig{'coursecategories'}{'cats'}{'instcode::0'} ne '') && ($env{'form.instcode'} == 0)) { @@ -9466,6 +9537,10 @@ sub modify_coursecategories { dom => 'set in Domain ("Modify Course/Community")', crs => 'set in Course ("Course Configuration")', comm => 'set in Community ("Community Configuration")', + none => 'No catalog', + std => 'Standard catalog', + domonly => 'Domain-only catalog', + codesrch => 'Code search form', ); $resulttext = &mt('Changes made:').'