[LON-CAPA-cvs] cvs: loncom(version_2_9_X) /interface courseprefs.pm

raeburn raeburn@source.lon-capa.org
Sun, 03 Jan 2010 01:09:41 -0000


raeburn		Sun Jan  3 01:09:41 2010 EDT

  Modified files:              (Branch: version_2_9_X)
    /loncom/interface	courseprefs.pm 
  Log:
   Backport 1.12, and part of 1.9.
  
  
Index: loncom/interface/courseprefs.pm
diff -u loncom/interface/courseprefs.pm:1.8.2.2 loncom/interface/courseprefs.pm:1.8.2.3
--- loncom/interface/courseprefs.pm:1.8.2.2	Sun Jan  3 00:07:02 2010
+++ loncom/interface/courseprefs.pm	Sun Jan  3 01:09:41 2010
@@ -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 @@
                                                  \@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_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 @@
         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 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 @@
     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 @@
     } 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 = '<h3>'.&mt('Categorize Course').'</h3>';
+    my $categoriesform = '<h3>'.$catcrs.'</h3>';
     if ($hascats) {
         my %currsettings =
             &Apache::lonnet::get('environment',['hidefromcat','categories'],$cdom,$cnum);
-        $categoriesform .= &mt('Assign one or more categories to this course.').'<br /><br />'.
+        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.'<br /><br />'.
                                '<form name="chgcats" action="/adm/courseprefs" method="post">'."\n".
-                               &Apache::loncommon::assign_categories_table($cathash,
-                                                       $currsettings{'categories'})."\n".
+                               $cattable."\n".
                                '<br /><input type="button" name="changes" value="'.
                                &mt('Copy to main window').'" '.
                                'onclick="javascript:updateCategories()" /></form><br />';
+        }
     } 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;