--- loncom/interface/courseprefs.pm 2010/01/03 00:07:02 1.8.2.2 +++ loncom/interface/courseprefs.pm 2010/01/03 01:09:41 1.8.2.3 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to set configuration settings for a course # -# $Id: courseprefs.pm,v 1.8.2.2 2010/01/03 00:07:02 raeburn Exp $ +# $Id: courseprefs.pm,v 1.8.2.3 2010/01/03 01:09:41 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -268,7 +268,7 @@ sub handler { \@prefs_order,\%prefs,\%values, $cnum,undef,\@allitems); } elsif ($phase eq 'display') { - my $jscript = &get_jscript($cdom,$phase); + my $jscript = &get_jscript($cdom,$phase,$crstype); my @allitems = &get_allitems(%prefs); &Apache::lonconfigsettings::display_settings($r,$cdom,$phase,$context, \@prefs_order,\%prefs,\%values,undef,$jscript,\@allitems); @@ -1073,8 +1073,8 @@ sub get_course { } sub get_jscript { - my ($cdom,$phase) = @_; - my ($can_toggle_cat,$can_categorize) = &can_modify_catsettings($cdom); + my ($cdom,$phase,$crstype) = @_; + my ($can_toggle_cat,$can_categorize) = &can_modify_catsettings($cdom,$crstype); my ($jscript,$categorize_js); my $stubrowse_js = &Apache::loncommon::studentbrowser_javascript(); my $browse_js = &Apache::loncommon::browser_and_searcher_javascript('parmset'); @@ -1194,14 +1194,14 @@ sub print_courseinfo { if (ref($cathash) eq 'HASH') { $categoriesform = &Apache::loncommon::assign_categories_table($cathash, - $settings->{'categories'})."\n"; + $settings->{'categories'},$crstype)."\n"; } } if (!defined($categoriesform)) { $categoriesform = &mt('No categories defined for this domain'); } - my ($can_toggle_cat,$can_categorize) = &can_modify_catsettings($cdom); + my ($can_toggle_cat,$can_categorize) = &can_modify_catsettings($cdom,$crstype); my %items = ( 'url' => { @@ -1394,15 +1394,24 @@ sub new_cloners_dom_row { } sub can_modify_catsettings { - my ($dom) = @_; + my ($dom,$crstype) = @_; my %domconf = &Apache::lonnet::get_dom('configuration',['coursecategories'],$dom); my ($can_toggle_cat,$can_categorize); if (ref($domconf{'coursecategories'}) eq 'HASH') { - if ($domconf{'coursecategories'}{'togglecats'} eq 'crs') { - $can_toggle_cat = 1; - } - if ($domconf{'coursecategories'}{'categorize'} eq 'crs') { - $can_categorize = 1; + if ($crstype eq 'Community') { + if ($domconf{'coursecategories'}{'togglecatscomm'} eq 'comm') { + $can_toggle_cat = 1; + } + if ($domconf{'coursecategories'}{'categorizecomm'} eq 'comm') { + $can_categorize = 1; + } + } else { + if ($domconf{'coursecategories'}{'togglecats'} eq 'crs') { + $can_toggle_cat = 1; + } + if ($domconf{'coursecategories'}{'categorize'} eq 'crs') { + $can_categorize = 1; + } } } return ($can_toggle_cat,$can_categorize); @@ -1418,7 +1427,13 @@ sub assign_course_categories { if (ref($domconf{'coursecategories'}) eq 'HASH') { $cathash = $domconf{'coursecategories'}{'cats'}; if (ref($cathash) eq 'HASH') { - $hascats = 1; + foreach my $cat (keys(%{$cathash})) { + next if ($cat eq 'instcode::0'); + unless ($crstype eq 'Community') { + next if ($cat eq 'communities::0'); + } + $hascats ++; + } } } my $catwin_js; @@ -1461,23 +1476,38 @@ ENDSCRIPT } else { my $onload; } + my ($crscat,$catcrs,$assign); + if ($crstype eq 'Community') { + $crscat = 'Community Categories'; + $catcrs = &mt('Categorize Community'); + $assign = &mt('Assign one or more categories to this community.') + } else { + $crscat = 'Course Categories'; + $catcrs = &mt('Categorize Course'); + $assign = &mt('Assign one or more categories to this course.') + } my $start_page = - &Apache::loncommon::start_page('Course Categories',$catwin_js, + &Apache::loncommon::start_page($crscat,$catwin_js, {'only_body' => 1,}); my $end_page = &Apache::loncommon::end_page(); - my $categoriesform = '

'.&mt('Categorize Course').'

'; + my $categoriesform = '

'.$catcrs.'

'; if ($hascats) { my %currsettings = &Apache::lonnet::get('environment',['hidefromcat','categories'],$cdom,$cnum); - $categoriesform .= &mt('Assign one or more categories to this course.').'

'. + my $cattable = &Apache::loncommon::assign_categories_table($cathash, + $currsettings{'categories'},$crstype); + if ($cattable eq '') { + $categoriesform .= &mt('No suitable categories defined for this course type in this domain.'); + } else { + $categoriesform .= $assign.'

'. '
'."\n". - &Apache::loncommon::assign_categories_table($cathash, - $currsettings{'categories'})."\n". + $cattable."\n". '

'; + } } else { - $categoriesform .= &mt('No categories defined for this domain'); + $categoriesform .= &mt('No categories defined in this domain'); } $r->print($start_page.$categoriesform.$end_page); return;