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

raeburn raeburn@source.lon-capa.org
Sat, 02 Jan 2010 21:50:55 -0000


This is a MIME encoded message

--raeburn1262469055
Content-Type: text/plain

raeburn		Sat Jan  2 21:50:55 2010 EDT

  Modified files:              (Branch: version_2_9_X)
    /loncom/interface	domainprefs.pm 
  Log:
  - Backport 1.116, 1.120, 1.124.
  
  
--raeburn1262469055
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20100102215055.txt"

Index: loncom/interface/domainprefs.pm
diff -u loncom/interface/domainprefs.pm:1.102.2.5 loncom/interface/domainprefs.pm:1.102.2.6
--- loncom/interface/domainprefs.pm:1.102.2.5	Fri Oct  9 02:00:21 2009
+++ loncom/interface/domainprefs.pm	Sat Jan  2 21:50:54 2010
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Handler to set domain-wide configuration settings
 #
-# $Id: domainprefs.pm,v 1.102.2.5 2009/10/09 02:00:21 raeburn Exp $
+# $Id: domainprefs.pm,v 1.102.2.6 2010/01/02 21:50:54 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -302,7 +302,7 @@
                               col2 => 'Value'}],
                  },
         'coursecategories' =>
-                  { text => 'Cataloging of courses',
+                  { text => 'Cataloging of courses/communities',
                     help => 'Domain_Configuration_Cataloging_Courses',
                     header => [{col1 => 'Category settings',
                                 col2 => '',},
@@ -728,7 +728,7 @@
 sub login_choices {
     my %choices =
         &Apache::lonlocal::texthash (
-            coursecatalog => 'Display Course Catalog link?',
+            coursecatalog => 'Display Course/Community Catalog link?',
             adminmail => "Display Administrator's E-mail Address?",
             newuser   => "Link to create a user account",
             img => "Header",
@@ -2439,6 +2439,11 @@
         my $toggle_cats_dom = ' checked="checked" ';
         my $can_cat_crs = ' ';
         my $can_cat_dom = ' checked="checked" ';
+        my $toggle_catscomm_comm = ' ';
+        my $toggle_catscomm_dom = ' checked="checked" ';
+        my $can_catcomm_comm = ' ';
+        my $can_catcomm_dom = ' checked="checked" ';
+
         if (ref($settings) eq 'HASH') {
             if ($settings->{'togglecats'} eq 'crs') {
                 $toggle_cats_crs = $toggle_cats_dom;
@@ -2448,14 +2453,25 @@
                 $can_cat_crs = $can_cat_dom;
                 $can_cat_dom = ' ';
             }
+            if ($settings->{'togglecatscomm'} eq 'comm') {
+                $toggle_catscomm_comm = $toggle_catscomm_dom;
+                $toggle_catscomm_dom = ' ';
+            }
+            if ($settings->{'categorizecomm'} eq 'comm') {
+                $can_catcomm_comm = $can_catcomm_dom;
+                $can_catcomm_dom = ' ';
+            }
         }
         my %title = &Apache::lonlocal::texthash (
-                     togglecats => 'Show/Hide a course in the catalog',
-                     categorize    => 'Assign a category to a course',
+                     togglecats     => 'Show/Hide a course in catalog',
+                     togglecatscomm => 'Show/Hide a community in catalog',
+                     categorize     => 'Assign a category to a course',
+                     categorizecomm => 'Assign a category to a community',
                     );
         my %level = &Apache::lonlocal::texthash (
-                     dom => 'Set in "Modify Course" (Domain)',
-                     crs => 'Set in "Modify Parameters" (Course)',   
+                     dom => 'Set in Domain',
+                     crs => 'Set in Course',   
+                     comm => 'Set in Community',
                     );
         $datatable = '<tr class="LC_odd_row">'.
                   '<td>'.$title{'togglecats'}.'</td>'.
@@ -2471,8 +2487,22 @@
                   $can_cat_dom.' value="dom" />'.$level{'dom'}.'</label>&nbsp;'.
                   '<label><input type="radio" name="categorize"'.
                   $can_cat_crs.'value="crs" />'.$level{'crs'}.'</label></span></td>'.
+                  '</tr><tr class="LC_odd_row">'.
+                  '<td>'.$title{'togglecatscomm'}.'</td>'.
+                  '<td class="LC_right_item"><span class="LC_nobreak"><label>'.
+                  '<input type="radio" name="togglecatscomm"'.
+                  $toggle_catscomm_dom.' value="dom" />'.$level{'dom'}.'</label>&nbsp;'.
+                  '<label><input type="radio" name="togglecatscomm"'.
+                  $toggle_catscomm_comm.' value="comm" />'.$level{'comm'}.'</label></span></td>'.
+                  '</tr><tr>'.
+                  '<td>'.$title{'categorizecomm'}.'</td>'.
+                  '<td class="LC_right_item"><span class="LC_nobreak">'.
+                  '<label><input type="radio" name="categorizecomm"'.
+                  $can_catcomm_dom.' value="dom" />'.$level{'dom'}.'</label>&nbsp;'.
+                  '<label><input type="radio" name="categorizecomm"'.
+                  $can_catcomm_comm.'value="comm" />'.$level{'comm'}.'</label></span></td>'.
                   '</tr>';
-        $$rowtotal += 2;
+        $$rowtotal += 4;
     } else {
         my $css_class;
         my $itemcount = 1;
@@ -2494,7 +2524,15 @@
                 if (ref($cats[0]) eq 'ARRAY') {
                     my $numtop = @{$cats[0]};
                     my $maxnum = $numtop;
-                    if ((!grep(/^instcode$/,@{$cats[0]})) || ($cathash->{'instcode::0'} eq '')) {
+                    my %default_names = (
+                          instcode    => &mt('Official courses'),
+                          communities => &mt('Communities'),
+                    );
+
+                    if ((!grep(/^instcode$/,@{$cats[0]})) ||
+                        ($cathash->{'instcode::0'} eq '') ||
+                        (!grep(/^communities$/,@{$cats[0]})) ||
+                        ($cathash->{'communities::0'} eq '')) {
                         $maxnum ++;
                     }
                     my $lastidx;
@@ -2515,14 +2553,33 @@
                             $datatable .= '<option value="'.$k.'"'.$selstr.'>'.$vpos.'</option>';
                         }
                         $datatable .= '</select></td><td>';
-                        if ($parent eq 'instcode') {
-                            $datatable .=  '<span class="LC_nobreak">'.&mt('Official courses')
-                                           .'</span><br /><span class="LC_nobreak">('
-                                           .&mt('with institutional codes').')</span></td>'
-                                           .'<td'.$colattrib.'><span class="LC_nobreak"><label><input type="radio" name="instcode" value="1" checked="checked" />'
-                                            .&mt('Display').'</label>&nbsp;'
-                                            .'<label><input type="radio" name="instcode" value="0" />'
-                                            .&mt('Do not display').'</label></span></td>';
+                        if ($parent eq 'instcode' || $parent eq 'communities') {
+                            $datatable .=  '<span class="LC_nobreak">'.
+                                           .$default_names{$parent}.'</span>';
+                            if ($parent eq 'instcode') {
+                                $datatable .= '<br /><span class="LC_nobreak">('
+                                              .&mt('with institutional codes')
+                                              .')</span></td><td'.$colattrib.'>';
+                            } else {
+                                $datatable .= '<table><tr><td>';
+                            }
+                            $datatable .= '<span class="LC_nobreak">'
+                                          .'<label><input type="radio" name="'
+                                          .$parent.'" value="1" checked="checked" />'
+                                          .&mt('Display').'</label>';
+                            if ($parent eq 'instcode') {
+                                $datatable .= '&nbsp;';
+                            } else {
+                                $datatable .= '</span></td></tr><tr><td>'
+                                              .'<span class="LC_nobreak">';
+                            }
+                            $datatable .= '<label><input type="radio" name="'
+                                          .$parent.'" value="0" />'
+                                          .&mt('Do not display').'</label></span>';
+                            if ($parent eq 'communities') {
+                                $datatable .= '</td></tr></table>';
+                            }
+                            $datatable .= '</td>';
                         } else {
                             $datatable .= $parent
                                           .'&nbsp;<label><input type="checkbox" name="deletecategory" '
@@ -2550,26 +2607,33 @@
                                   .'<input type="text" size="20" name="addcategory_name" value="" /></td>'
                                   .'</tr>'."\n";
                     $itemcount ++;
-                    if ((!grep(/^instcode$/,@{$cats[0]})) || ($cathash->{'instcode::0'} eq '')) {
-                        $css_class = $itemcount%2?' class="LC_odd_row"':'';
-                        my $chgstr = ' onchange="javascript:reorderCats(this.form,'."'','instcode_pos','$lastidx'".');"';
-                        $datatable .= '<tr><td colspan="'.$maxdepth.'" class="LC_row_separator"></td></tr><tr '.$css_class.'><td>'.
-                                      '<span class="LC_nobreak"><select name="instcode_pos"'.$chgstr.'>';
-                        for (my $k=0; $k<=$maxnum; $k++) {
-                            my $vpos = $k+1;
-                            my $selstr;
-                            if ($k == $maxnum) {
-                                $selstr = ' selected="selected" ';
+                    foreach my $default ('instcode','communities') {
+                        if ((!grep(/^\Q$default\E$/,@{$cats[0]})) || ($cathash->{$default.'::0'} eq '')) {
+                            $css_class = $itemcount%2?' class="LC_odd_row"':'';
+                            my $chgstr = ' onchange="javascript:reorderCats(this.form,'."'','$default"."_pos','$lastidx'".');"';
+                            $datatable .= '<tr><td colspan="'.$maxdepth.'" class="LC_row_separator"></td></tr><tr '.$css_class.'><td>'.
+                                          '<span class="LC_nobreak"><select name="'.$default.'_pos"'.$chgstr.'>';
+                            for (my $k=0; $k<=$maxnum; $k++) {
+                                my $vpos = $k+1;
+                                my $selstr;
+                                if ($k == $maxnum) {
+                                    $selstr = ' selected="selected" ';
+                                }
+                                $datatable .= '<option value="'.$k.'"'.$selstr.'>'.$vpos.'</option>';
                             }
-                            $datatable .= '<option value="'.$k.'"'.$selstr.'>'.$vpos.'</option>';
+                            $datatable .= '</select></span></td>'.
+                                          '<td><span class="LC_nobreak">'.
+                                          $default_names{$default}.'</span>';
+                            if ($default eq 'instcode') {
+                                $datatable .= '<br /><span class="LC_nobreak">('
+                                              .&mt('with institutional codes').')</span>';
+                            }
+                            $datatable .= '</td>'
+                                          .'<td><span class="LC_nobreak"><label><input type="radio" name="'.$default.'" value="1" />'
+                                          .&mt('Display').'</label>&nbsp;'
+                                          .'<label><input type="radio" name="'.$default.'" value="0" checked="checked"/>'
+                                          .&mt('Do not display').'</label></span></td></tr>';
                         }
-                        $datatable .= '</select></span></td><td><span class="LC_nobreak">'
-                                      .&mt('Official courses').'</span>'.'<br /><span class="LC_nobreak">('
-                                      .&mt('with institutional codes').')</span></td>'
-                                      .'<td><span class="LC_nobreak"><label><input type="radio" name="instcode" value="1" />'
-                                      .&mt('Display').'</label>&nbsp;'
-                                      .'<label><input type="radio" name="instcode" value="0" checked="checked"/>'
-                                      .&mt('Do not display').'</label></span></td></tr>';
                     }
                 }
             } else {
@@ -2658,6 +2722,9 @@
         $jstext  = '    var categories = Array(1);'."\n".
                    '    categories[0] = Array("instcode_pos");'."\n"; 
     }
+    my $instcode_reserved = &mt('The name: "instcode" is a reserved category');
+    my $communities_reserved = &mt('The name: "communities" is a reserved category');
+    my $choose_again = '\\n'.&mt('Please use a different name for the new top level category');
     $output = <<"ENDSCRIPT";
 <script type="text/javascript">
 // <![CDATA[
@@ -2717,6 +2784,19 @@
     }
     return;
 }
+
+function categoryCheck(form) {
+    if (form.elements['addcategory_name'].value == 'instcode') {
+        alert('$instcode_reserved\\n$choose_again');
+        return false;
+    }
+    if (form.elements['addcategory_name'].value == 'communities') {
+        alert('$communities_reserved\\n$choose_again');
+        return false;
+    }
+    return true;
+}
+
 // ]]>
 </script>
 
@@ -2726,25 +2806,40 @@
 
 sub initialize_categories {
     my ($itemcount) = @_;
-    my $datatable;
-    my $css_class = $itemcount%2?' class="LC_odd_row"':'';
-    my $chgstr = ' onchange="javascript:reorderCats(this.form,'."'','instcode_pos','0'".');"';
-
-    $datatable = '<tr '.$css_class.'><td><span class="LC_nobreak">'
-                 .'<select name="instcode_pos"><option value="0" selected="selected">1</option>'
-                 .'<option value="1">2</option></select>&nbsp;'
-                 .&mt('Official courses (with institutional codes)')
-                 .'</span></td><td><span class="LC_nobreak">'
-                 .'<label><input type="radio" name="instcode" value="1" checked="checked" />'
-                 .&mt('Display').'</label>&nbsp;<label>'
-                 .'<input type="radio" name="instcode" value="0" />'.&mt('Do not display')
+    my ($datatable,$css_class,$chgstr);
+    my %default_names = (
+                      instcode    => 'Official courses (with institutional codes)',
+                      communities => 'Communities',
+                        );
+    my $select0 = ' selected="selected"';
+    my $select1 = '';
+    foreach my $default ('instcode','communities') {
+        $css_class = $itemcount%2?' class="LC_odd_row"':'';
+        $chgstr = ' onchange="javascript:reorderCats(this.form,'."'',$default"."_pos','0'".');"';
+        if ($default eq 'communities') {
+            $select1 = $select0;
+            $select0 = '';
+        }
+        $datatable .= '<tr '.$css_class.'><td><span class="LC_nobreak">'
+                     .'<select name="'.$default.'_pos">'
+                     .'<option value="0"'.$select0.'>1</option>'
+                     .'<option value="1"'.$select1.'>2</option>'
+                     .'<option value="2">3</option></select>&nbsp;'
+                     .$default_names{$default}
+                     .'</span></td><td><span class="LC_nobreak">'
+                     .'<label><input type="radio" name="'.$default.'" value="1" checked="checked" />'
+                     .&mt('Display').'</label>&nbsp;<label>'
+                     .'<input type="radio" name="'.$default.'" value="0" />'.&mt('Do not display')
                  .'</label></span></td></tr>';
-    $itemcount ++;
+        $itemcount ++;
+    }
     $css_class = $itemcount%2?' class="LC_odd_row"':'';
     $chgstr = ' onchange="javascript:reorderCats(this.form,'."'','addcategory_pos','0'".');"';
     $datatable .= '<tr '.$css_class.'><td><span class="LC_nobreak">'
-                  .'<select name="addcategory_pos"'.$chgstr.'><option value="0">1</option>'
-                  .'<option value="1" selected="selected">2</option></select>&nbsp;'
+                  .'<select name="addcategory_pos"'.$chgstr.'>'
+                  .'<option value="0">1</option>'
+                  .'<option value="1">2</option>'
+                  .'<option value="2" selected="selected">3</option></select>&nbsp;'
                   .&mt('Add category').'</td><td>'.&mt('Name:')
                   .'&nbsp;<input type="text" size="20" name="addcategory_name" value="" /></td></tr>';
     return $datatable;
@@ -5189,18 +5284,33 @@
             $changes{'categorize'} = 1;
             $domconfig{'coursecategories'}{'categorize'} = $env{'form.categorize'};
         }
+        if ($domconfig{'coursecategories'}{'togglecatscomm'} ne $env{'form.togglecatscomm'}) {
+            $changes{'togglecatscomm'} = 1;
+            $domconfig{'coursecategories'}{'togglecatscomm'} = $env{'form.togglecatscomm'};
+        }
+        if ($domconfig{'coursecategories'}{'categorizecomm'} ne $env{'form.categorizecomm'}) {
+            $changes{'categorizecomm'} = 1;
+            $domconfig{'coursecategories'}{'categorizecomm'} = $env{'form.categorizecomm'};
+        }
     } else {
         $changes{'togglecats'} = 1;
         $changes{'categorize'} = 1;
+        $changes{'togglecatscomm'} = 1;
+        $changes{'categorizecomm'} = 1;
         $domconfig{'coursecategories'} = {
                                              togglecats => $env{'form.togglecats'},
                                              categorize => $env{'form.categorize'},
+                                             togglecatscomm => $env{'form.togglecatscomm'},
+                                             categorizecomm => $env{'form.categorizecomm'},
                                          };
     }
     if (ref($cathash) eq 'HASH') {
         if (($domconfig{'coursecategories'}{'cats'}{'instcode::0'} ne '')  && ($env{'form.instcode'} == 0)) {
             push (@deletecategory,'instcode::0');
         }
+        if (($domconfig{'coursecategories'}{'cats'}{'communities::0'} ne '')  && ($env{'form.communities'} == 0)) {
+            push(@deletecategory,'communities::0');
+        }
     }
     my (@predelcats,@predeltrails,%predelallitems,%sort_by_deltrail);
     if (ref($cathash) eq 'HASH') {
@@ -5250,10 +5360,26 @@
             $adds{$newitem} = 1;
         }
     }
+    if ($env{'form.communities'} eq '1') {
+        if (ref($cathash) eq 'HASH') {
+            my $newitem = 'communities::0';
+            if ($cathash->{$newitem} eq '') {
+                $domconfig{'coursecategories'}{'cats'}{$newitem} = $env{'form.communities_pos'};
+                $adds{$newitem} = 1;
+            }
+        } else {
+            my $newitem = 'communities::0';
+            $domconfig{'coursecategories'}{'cats'}{$newitem} = $env{'form.communities_pos'};
+            $adds{$newitem} = 1;
+        }
+    }
     if ($env{'form.addcategory_name'} ne '') {
-        my $newitem = &escape($env{'form.addcategory_name'}).'::0';
-        $domconfig{'coursecategories'}{'cats'}{$newitem} = $env{'form.addcategory_pos'};
-        $adds{$newitem} = 1;
+        if (($env{'form.addcategory_name'} ne 'instcode') &&
+            ($env{'form.addcategory_name'} ne 'communities')) {
+            my $newitem = &escape($env{'form.addcategory_name'}).'::0';
+            $domconfig{'coursecategories'}{'cats'}{$newitem} = $env{'form.addcategory_pos'};
+            $adds{$newitem} = 1;
+        }
     }
     my $putresult;
     if ((keys(%deletions) > 0) || (keys(%reorderings) > 0) || (keys(%adds) > 0)) {
@@ -5290,12 +5416,15 @@
         $putresult = &Apache::lonnet::put_dom('configuration',\%domconfig,$dom);
         if ($putresult eq 'ok') {
             my %title = (
-                         togglecats  => 'Show/Hide a course in the catalog',
-                         categorize     => 'Category assigned to course',
+                         togglecats     => 'Show/Hide a course in catalog',
+                         categorize     => 'Assign a category to a course',
+                         togglecatscomm => 'Show/Hide a community in catalog',
+                         categorizecomm => 'Assign a category to a community',
                         );
             my %level = (
-                         dom => 'set from "Modify Course" (Domain)',
-                         crs => 'set from "Parameters" (Course)',
+                         dom  => 'set in Domain ("Modify Course/Community")',
+                         crs  => 'set in Course ("Course Configuration")',
+                         comm => 'set in Community ("Community Configuration")',
                         );
             $resulttext = &mt('Changes made:').'<ul>';
             if ($changes{'togglecats'}) {
@@ -5304,6 +5433,12 @@
             if ($changes{'categorize'}) {
                 $resulttext .= '<li>'.&mt("$title{'categorize'} $level{$env{'form.categorize'}}").'</li>';
             }
+            if ($changes{'togglecatscomm'}) {
+                $resulttext .= '<li>'.&mt("$title{'togglecatscomm'} $level{$env{'form.togglecatscomm'}}").'</li>';
+            }
+            if ($changes{'categorizecomm'}) {
+                $resulttext .= '<li>'.&mt("$title{'categorizecomm'} $level{$env{'form.categorizecomm'}}").'</li>';
+            }
             if ((keys(%deletions) > 0) || (keys(%reorderings) > 0) || (keys(%adds) > 0)) {
                 my $cathash;
                 if (ref($domconfig{'coursecategories'}) eq 'HASH') {
@@ -5353,7 +5488,7 @@
                           &mt('An error occurred: [_1]',$putresult).'</span>';
         }
     } else {
-        $resulttext = &mt('No changes made to course categories');
+        $resulttext = &mt('No changes made to course and community categories');
     }
     return $resulttext;
 }

--raeburn1262469055--