--- loncom/interface/loncommon.pm	2009/11/20 04:12:43	1.917
+++ loncom/interface/loncommon.pm	2010/02/12 17:35:49	1.939
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.917 2009/11/20 04:12:43 raeburn Exp $
+# $Id: loncommon.pm,v 1.939 2010/02/12 17:35:49 bisitz Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -483,9 +483,9 @@ ENDAUTHORBRW
 
 sub coursebrowser_javascript {
     my ($domainfilter,$sec_element,$formname,$role_element,$crstype) = @_;
-    my $wintitle = &mt('Course Browser');
-    if ($crstype ne '') {
-        $wintitle = &mt($crstype);
+    my $wintitle = 'Course_Browser';
+    if ($crstype eq 'Community') {
+        $wintitle = 'Community_Browser';
     }
     my $id_functions = &javascript_index_functions();
     my $output = '
@@ -1127,7 +1127,7 @@ sub help_open_topic {
     $template.=' <a target="_top" href="'.$link.'" title="'.$title.'">'
               .'<img src="'.$helpicon.'" border="0"'
               .' alt="'.&mt('Help: [_1]',$topic).'"'
-              .' title="'.$title.'"' 
+              .' title="'.$title.'" style="vertical-align:middle;"' 
               .' /></a>';
     if ($text ne "") {	
         $template.='</span>';
@@ -1719,10 +1719,13 @@ sub create_workbook {
     my $workbook  = Spreadsheet::WriteExcel->new('/home/httpd'.$filename);
     if (! defined($workbook)) {
         $r->log_error("Error creating excel spreadsheet $filename: $!");
-        $r->print('<p>'.&mt("Unable to create new Excel file.  ".
-                            "This error has been logged.  ".
-                            "Please alert your LON-CAPA administrator").
-                  '</p>');
+        $r->print(
+            '<p class="LC_error">'
+           .&mt('Problems occurred in creating the new Excel file.')
+           .' '.&mt('This error has been logged.')
+           .' '.&mt('Please alert your LON-CAPA administrator.')
+           .'</p>'
+        );
         return (undef);
     }
     #
@@ -1762,9 +1765,13 @@ sub create_text_file {
     $fh = Apache::File->new('>/home/httpd'.$filename);
     if (! defined($fh)) {
         $r->log_error("Couldn't open $filename for output $!");
-        $r->print(&mt('Problems occurred in creating the output file. '
-                     .'This error has been logged. '
-                     .'Please alert your LON-CAPA administrator.'));
+        $r->print(
+            '<p class="LC_error">'
+           .&mt('Problems occurred in creating the output file.')
+           .' '.&mt('This error has been logged.')
+           .' '.&mt('Please alert your LON-CAPA administrator.')
+           .'</p>'
+        );
     }
     return ($fh,$filename)
 }
@@ -1877,7 +1884,7 @@ sub select_form {
         $selectform.=
 	    '<option value="'.&HTML::Entities::encode($key,'"<>&').'" '.
             ($key eq $def ? 'selected="selected" ' : '').
-                ">".&mt($hash{$key})."</option>\n";
+                ">".$hash{$key}."</option>\n";
     }
     $selectform.="</select>";
     return $selectform;
@@ -4367,18 +4374,30 @@ sub CSTR_pageheader {
     } else {
         $lastitem = $thisdisfn;
     }
-    return
+
+    my $output =
          '<div>'
         .&Apache::loncommon::help_open_menu('','',3,'Authoring') #FIXME: Broken? Where is it?
         .'<b>'.&mt('Construction Space:').'</b> '
         .'<form name="dirs" method="post" action="'.$formaction
-        .'" target="_top"><tt><b>' #FIXME lonpubdir: target="_parent"
-        .&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv','','+1',1)."$lastitem</b></tt><br />"
+        .'" target="_top">' #FIXME lonpubdir: target="_parent"
+        .&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv',undef,undef);
+
+    if ($lastitem) {
+        $output .=
+             '<span class="LC_filename">'
+            .$lastitem
+            .'</span>';
+    }
+    $output .=
+         '<br />'
         #FIXME lonpubdir: &Apache::lonhtmlcommon::crumbs($uname.$thisdisfn.'/','_top','/priv','','+1',1)."</b></tt><br />"
         .&Apache::lonhtmlcommon::select_recent('construct','recent','this.form.action=this.form.recent.value;this.form.submit()')
         .'</form>'
         .&Apache::lonmenu::constspaceform()
         .'</div>';
+
+    return $output;
 }
 
 ###############################################
@@ -4533,7 +4552,9 @@ sub bodytag {
             return $bodytag;
         }
 
-        $bodytag .= qq|<div id="LC_nav_bar">$name $role</div>|;
+        unless ($env{'request.symb'} =~ m/\.page___\d+___/) {
+            $bodytag .= qq|<div id="LC_nav_bar">$name $role</div>|;
+        }
 
         $bodytag .= Apache::lonhtmlcommon::scripttag(
             Apache::lonmenu::utilityfunctions(), 'start');
@@ -4549,8 +4570,13 @@ sub bodytag {
         if($env{'user.name'} ne 'public' && $env{'user.domain'} ne 'public'){
             $bodytag .= Apache::lonmenu::secondary_menu();
             $bodytag .= Apache::lonmenu::serverform();
-            $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); 
-            $bodytag .= Apache::lonmenu::innerregister($forcereg) if $forcereg;
+            $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end');
+            if ($env{'request.state'} eq 'construct') {
+                $bodytag .= &Apache::lonmenu::innerregister($forcereg,'',
+                                $args->{'bread_crumbs'});
+            } elsif ($forcereg) { 
+                $bodytag .= &Apache::lonmenu::innerregister($forcereg);
+            }
         }else{
             # this is to seperate menu from content when there's no secondary
             # menu. Especially needed for public accessible ressources.
@@ -4558,8 +4584,6 @@ sub bodytag {
             $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); 
         }
 
-        #SD testing
-        #$bodytag .= Apache::lonmenu::menubuttons($forcereg);
         return $bodytag;
     }
 
@@ -4751,11 +4775,6 @@ body {
   color:$font;
 }
 
-a:link,
-a:visited {
-  font-size:100%;
-}
-
 a:focus {
   color: red;
   background: yellow;
@@ -4773,15 +4792,14 @@ form, .inline {
   vertical-align:middle;
 }
 
-/* just for tests */
 .LC_400Box {
   width:400px;
 }
-/* end */
 
 .LC_filename {
   font-family: $mono;
   white-space:pre;
+  font-size: 120%;
 }
 
 .LC_fileicon {
@@ -4872,9 +4890,7 @@ table.LC_pastsubmission {
   margin: 2px;
 }
 
-table#LC_top_nav,
-table#LC_menubuttons,
-table#LC_nav_location {
+table#LC_menubuttons {
   width: 100%;
   background: $pgbg;
   border: 2px;
@@ -4892,7 +4908,7 @@ table#LC_title_bar {
 }
 
 table#LC_title_bar,
-table.LC_breadcrumbs,
+table.LC_breadcrumbs, /* obsolete? */
 table#LC_title_bar.LC_with_remote {
   width: 100%;
   border-color: $pgbg;
@@ -4905,46 +4921,26 @@ table#LC_title_bar.LC_with_remote {
   margin: 0;
 }
 
-/* #SD START (work in progress)*/
-
-ul.LC_bct {
+ul.LC_breadcrumb_tools_outerlist {
     margin: 0;
     padding: 0;
+    position: relative;
+    list-style: none;
 }
-ul.LC_bct ol {
-    display: inline;
-}
-ul.LC_bct ul {
-    display: inline;
-    padding: 0;
-}
-ul.LC_bct li {
-    list-style-type: none;
+ul.LC_breadcrumb_tools_outerlist li {
     display: inline;
 }
 
-
-ul.LC_breadcrumb_tools {
-}
-
-li.LC_breadcrumb_tools {
-}
-li.LC_breadcrumb_tools img{
-    vertical-align: middle;
-}
-
-.LC_breadcrumb_tools_A {
-    margin: 0 0 0 1em;
-}
-.LC_breadcrumb_tools_B {
-    float: right;
-    margin-top: 0.4em;
+.LC_breadcrumb_tools_navigation {
+    padding: 0;
+    margin: 0;
+    float: left;
 }
-.LC_breadcrumb_tools_C {
-    margin: 0 1em 0 0;
+.LC_breadcrumb_tools_tools {
+    padding: 0;
+    margin: 0;
     float: right;
 }
-/* #SD END */
 
 table#LC_title_bar td {
   background: $tabbg;
@@ -4954,41 +4950,6 @@ table#LC_menubuttons img {
   border: none;
 }
 
-table#LC_top_nav td {
-  background: $tabbg;
-  border: none;
-  font-size: small;
-  vertical-align:top;
-  padding:2px 5px 2px 5px;
-}
-
-table#LC_top_nav td a,
-div#LC_top_nav a {
-  color: $font;
-}
-
-table#LC_top_nav td.LC_top_nav_logo {
-  background: $tabbg;
-  text-align: left;
-  white-space: nowrap;
-  width: 31px;
-}
-
-table#LC_top_nav td.LC_top_nav_logo img {
-  border: none;
-  vertical-align: bottom;
-}
-
-table#LC_top_nav td.LC_top_nav_exit,
-table#LC_top_nav td.LC_top_nav_help {
-  width: 2.0em;
-}
-
-table#LC_top_nav td.LC_top_nav_login {
-  width: 4.0em;
-  text-align: center;
-}
-
 .LC_breadcrumbs_component {
   float: right;
   margin: 0 1em;
@@ -5001,10 +4962,6 @@ td.LC_table_cell_checkbox {
   text-align: center;
 }
 
-table#LC_mainmenu td.LC_mainmenu_column {
-  vertical-align: top;
-}
-
 .LC_fontsize_small {
   font-size: 70%;
 }
@@ -5014,9 +4971,7 @@ table#LC_mainmenu td.LC_mainmenu_column
   background: $sidebg;
   border-bottom: 1px solid $lg_border_color;
   line-height: 2.5em;
-     /* SD working here 
-     height: 2.5em;
-     overflow: hidden; */
+  overflow: hidden;
   margin: 0;
   padding: 0;
 }
@@ -5047,6 +5002,10 @@ table#LC_mainmenu td.LC_mainmenu_column
   padding-left:3px;
 }
 
+.LC_menubuttons_inline_text img{
+  vertical-align: middle;
+}
+
 .LC_menubuttons_link {
   text-decoration: none;
 }
@@ -5066,13 +5025,7 @@ td.LC_menubuttons_text {
   background: $tabbg;
 }
 
-.LC_new_mail {
-  background: $tabbg;
-  font-weight: bold;
-}
-
-table.LC_data_table,
-table.LC_mail_list {
+table.LC_data_table {
   border: 1px solid #000000;
   border-collapse: separate;
   border-spacing: 1px;
@@ -5098,9 +5051,16 @@ table.LC_nested {
   width: 100%;
 }
 
+.ui-accordion,
+.ui-accordion table.LC_data_table,
+.ui-accordion table.LC_nested_outer{
+  border: 0px;
+  border-spacing: 0px;
+  margin: 3px;
+}
+
 table.LC_data_table tr th,
 table.LC_calendar tr th,
-table.LC_mail_list tr th,
 table.LC_prior_tries tr th,
 table.LC_innerpickbox tr th {
   font-weight: bold;
@@ -5207,6 +5167,22 @@ table.LC_nested tr td.LC_right_item {
   text-align: right;
 }
 
+.ui-accordion table.LC_nested tr.LC_odd_row td.LC_left_item,
+.ui-accordion table.LC_nested tr.LC_even_row td.LC_left_item {
+  text-align: right;
+  width: 40%;
+  padding-right:10px;
+  vertical-align: top;
+  padding: 5px;
+}
+
+.ui-accordion table.LC_nested tr.LC_odd_row td.LC_right_item,
+.ui-accordion table.LC_nested tr.LC_even_row td.LC_right_item {
+  text-align: left;
+  width: 60%;
+  padding: 2px 4px;
+}
+
 table.LC_nested tr.LC_odd_row td {
   background-color: #EEEEEE;
 }
@@ -5248,43 +5224,43 @@ table.LC_calendar tr td.LC_calendar_day_
   background-color: $data_table_highlight;
 }
 
-table.LC_mail_list tr.LC_mail_new {
+table.LC_data_table tr td.LC_mail_new {
   background-color: $mail_new;
 }
 
-table.LC_mail_list tr.LC_mail_new:hover {
+table.LC_data_table tr.LC_mail_new:hover {
   background-color: $mail_new_hover;
 }
 
-table.LC_mail_list tr.LC_mail_even {
-}
-
-table.LC_mail_list tr.LC_mail_odd {
-}
-
-table.LC_mail_list tr.LC_mail_read {
+table.LC_data_table tr td.LC_mail_read {
   background-color: $mail_read;
 }
 
-table.LC_mail_list tr.LC_mail_read:hover {
+/*
+table.LC_data_table tr.LC_mail_read:hover {
   background-color: $mail_read_hover;
 }
+*/
 
-table.LC_mail_list tr.LC_mail_replied {
+table.LC_data_table tr td.LC_mail_replied {
   background-color: $mail_replied;
 }
 
-table.LC_mail_list tr.LC_mail_replied:hover {
+/*
+table.LC_data_table tr.LC_mail_replied:hover {
   background-color: $mail_replied_hover;
 }
+*/
 
-table.LC_mail_list tr.LC_mail_other {
+table.LC_data_table tr td.LC_mail_other {
   background-color: $mail_other;
 }
 
-table.LC_mail_list tr.LC_mail_other:hover {
+/*
+table.LC_data_table tr.LC_mail_other:hover {
   background-color: $mail_other_hover;
 }
+*/
 
 table.LC_data_table tr > td.LC_browser_file,
 table.LC_data_table tr > td.LC_browser_file_published {
@@ -5314,23 +5290,23 @@ table.LC_data_table tr > td.LC_roles_is
 }
 
 table.LC_data_table tr > td.LC_roles_future {
-  background: #FFFF77;
+  border-right: 8px solid #FFFF77;
 }
 
 table.LC_data_table tr > td.LC_roles_will {
-  background: #FFAA77;
+  border-right: 8px solid #FFAA77;
 }
 
 table.LC_data_table tr > td.LC_roles_expired {
-  background: #FF7777;
+  border-right: 8px solid #FF7777;
 }
 
 table.LC_data_table tr > td.LC_roles_will_not {
-  background: #AAFF77;
+  border-right: 8px solid #AAFF77;
 }
 
 table.LC_data_table tr > td.LC_roles_selected {
-  background: #11CC55;
+  border-right: 8px solid #11CC55;
 }
 
 span.LC_current_location {
@@ -5541,19 +5517,17 @@ table.LC_notify_front_page td {
 
 .LC_topic_bar {
   font-weight: bold;
-  width: 100%;
   background: $tabbg;
-  vertical-align: middle;
-  margin: 2ex 0ex 2ex 0ex;
+  margin: 1em 0em 1em 2em;
   padding: 3px;
+  font-size: 1.2em;
 }
 
 .LC_topic_bar span {
+  left: 0.5em;
+  position: absolute;
   vertical-align: middle;
-}
-
-.LC_topic_bar img {
-  vertical-align: bottom;
+  font-size: 1.2em;
 }
 
 table.LC_course_group_status {
@@ -5665,12 +5639,12 @@ span.LC_prior_string,
 span.LC_prior_custom,
 span.LC_prior_reaction,
 span.LC_prior_math {
-  font-family: monospace;
+  font-family: $mono;
   white-space: pre;
 }
 
 span.LC_prior_string {
-  font-family: monospace;
+  font-family: $mono;
   white-space: pre;
 }
 
@@ -5703,17 +5677,6 @@ span.LC_cusr_subheading {
   font-size: 85%;
 }
 
-table.LC_docs_documents {
-  background: #BBBBBB;
-  border-width: 0;
-  border-collapse: collapse;
-}
-
-table.LC_docs_documents td.LC_docs_document {
-  border: 2px solid black;
-  padding: 4px;
-}
-
 div.LC_docs_entry_move {
   border: 1px solid #BBBBBB;
   background: #DDDDDD;
@@ -5805,56 +5768,36 @@ div.LC_clear_float_footer {
 }
 
 div.LC_grade_show_user {
-  margin-top: 20px;
-  border: 1px solid black;
-}
-
-div.LC_grade_user_name {
-  background: #DDDDEE;
-  border-bottom: 1px solid black;
-  font-weight: bold;
-  font-size: large;
+  border-left: 5px solid $sidebg;
+  margin: 0;
+  padding: 15px 0 5px 10px;
 }
 
-div.LC_grade_show_user_odd_row div.LC_grade_user_name {
-  background: #DDEEDD;
+div.LC_grade_show_user_odd_row {
+  border-left: 5px solid #000000;
 }
 
-div.LC_grade_show_problem,
 div.LC_grade_submissions,
 div.LC_grade_message_center,
-div.LC_grade_info_links,
-div.LC_grade_assign {
+div.LC_grade_info_links {
   margin: 5px;
   width: 99%;
   background: #FFFFFF;
 }
 
-div.LC_grade_show_problem_header,
 div.LC_grade_submissions_header,
-div.LC_grade_message_center_header,
-div.LC_grade_assign_header {
+div.LC_grade_message_center_header {
   font-weight: bold;
   font-size: large;
 }
 
-div.LC_grade_show_problem_problem,
 div.LC_grade_submissions_body,
-div.LC_grade_message_center_body,
-div.LC_grade_assign_body {
+div.LC_grade_message_center_body {
   border: 1px solid black;
   width: 99%;
   background: #FFFFFF;
 }
 
-span.LC_grade_check_note {
-  font-weight: normal;
-  font-size: medium;
-  display: inline;
-  position: absolute;
-  right: 1em;
-}
-
 table.LC_scantron_action {
   width: 100%;
 }
@@ -5888,15 +5831,8 @@ div.LC_edit_problem_header_title {
 }
 
 table.LC_edit_problem_header_title {
-  font-size: larger;
-  font-weight:  bold;
   width: 100%;
-  border-color: $pgbg;
-  border-style: solid;
-  border-width: $border;
   background: $tabbg;
-  border-collapse: collapse;
-  padding: 0;
 }
 
 div.LC_edit_problem_discards {
@@ -5914,21 +5850,8 @@ img.stift {
   vertical-align: middle;
 }
 
-table#LC_mainmenu {
-  margin-top:10px;
-  width:80%;
-}
-
-table#LC_mainmenu td.LC_mainmenu_col_fieldset {
+table td.LC_mainmenu_col_fieldset {
   vertical-align: top;
-  width: 45%;
-}
-
-.LC_mainmenu_fieldset_category {
-  color: $font;
-  background: $pgbg;
-  font-size: small;
-  font-weight: bold;
 }
 
 div.LC_createcourse {
@@ -5942,13 +5865,6 @@ div.LC_createcourse {
   display:none;
 }
 
-/* ---- Remove when done ----
-# The following styles is part of the redesign of LON-CAPA and are
-# subject to change during this project.
-# Don't rely on their current functionality as they might be 
-# changed or removed.
-# --------------------------*/
-
 a:hover,
 ol.LC_primary_menu a:hover,
 ol#LC_MenuBreadcrumbs a:hover,
@@ -5991,12 +5907,6 @@ h6 {
   border: 0;
 }
 
-.LC_Right {
-  float: right;
-  margin: 0;
-  padding: 0;
-}
-
 .LC_FormSectionClearButton input {
   background-color:transparent;
   border: none;
@@ -6029,7 +5939,7 @@ fieldset > legend {
 
 #LC_nav_bar {
   float: left;
-  margin: 0.2em 0 0 0;
+  margin: 0;
 }
 
 #LC_realm {
@@ -6046,7 +5956,12 @@ fieldset > legend {
 
 ol.LC_primary_menu {
   float: right;
-  margin: 0.2em 0 0 0;
+  margin: 0;
+}
+
+span.LC_new_message{
+  font-weight:bold;
+  color: darkred;
 }
 
 ol#LC_PathBreadcrumbs {
@@ -6061,10 +5976,10 @@ ol.LC_primary_menu li {
 
 ol.LC_primary_menu li img {
   vertical-align: bottom;
+  height: 1.1em;
 }
 
 ol.LC_primary_menu a {
-  font-size: 90%;
   color: RGB(80, 80, 80);
   text-decoration: none;
 }
@@ -6202,18 +6117,14 @@ ol#LC_MenuBreadcrumbs,
 ol#LC_PathBreadcrumbs {
   padding-left: 10px;
   margin: 0;
-  list-style-position: inside;
-    /* SD working here 
-    white-space: nowrap; */
+  height: 2.5em;  /* equal to #LC_breadcrumbs line-height */
 }
 
 ol#LC_MenuBreadcrumbs li,
 ol#LC_PathBreadcrumbs li,
 ul.LC_CourseBreadcrumbs li {
   display: inline;
-  white-space: nowrap;
-    /* SD working here  
-    white-space: normal; */ 
+  white-space: normal;  
 }
 
 ol#LC_MenuBreadcrumbs li a,
@@ -6254,7 +6165,6 @@ dl.LC_ListStyleClean dd {
 .LC_ListStyleClean,
 .LC_ListStyleSimple,
 .LC_ListStyleNormal,
-.LC_ListStyle_Border,
 .LC_ListStyleSpecial {
   /* display:block; */
   list-style-position: inside;
@@ -6389,11 +6299,6 @@ table.LC_tableOfContent a {
   text-decoration: none;
 }
 
-table.LC_tableBrowseRes tr.LC_trOdd,
-table.LC_tableOfContent tr.LC_trOdd {
-  background-color: #EEEEEE;
-}
-
 table.LC_tableOfContent img {
   border: none;
   height: 1.3em;
@@ -6472,6 +6377,11 @@ ul.LC_funclist {
     padding: 0.5em 1em 0.5em 0;
 }
 
+ul.LC_funclist > li:first-child {
+    font-weight:bold; 
+    margin-left:0.8em;
+}
+
 ul.LC_funclist + ul.LC_funclist {
     /* 
        left border as a seperator if we have more than
@@ -6492,6 +6402,11 @@ ul.LC_funclist li {
   line-height: 150%;
 }
 
+.ui-accordion .LC_advanced_toggle {
+  float: right;
+  font-size: 90%;
+  padding: 0px 4px
+}
 
 END
 }
@@ -6768,6 +6683,11 @@ sub start_page {
     # Don't add anything more if only_body wanted
     return $result if $args->{'only_body'};
 
+    #Breadcrumbs for Construction Space provided by &bodytag. 
+    if (($env{'environment.remote'} eq 'off') && ($env{'request.state'} eq 'construct')) {
+        return $result;
+    }
+ 
     #Breadcrumbs
     if (exists($args->{'bread_crumbs'}) or exists($args->{'bread_crumbs_component'})) {
 		&Apache::lonhtmlcommon::clear_breadcrumbs();
@@ -9646,6 +9566,8 @@ sub extract_categories {
                 my $trailstr;
                 if ($name eq 'instcode') {
                     $trailstr = &mt('Official courses (with institutional codes)');
+                } elsif ($name eq 'communities') {
+                    $trailstr = &mt('Communities');
                 } else {
                     $trailstr = $name;
                 }
@@ -9758,12 +9680,14 @@ cathash - reference to hash of categorie
 
 currcat - scalar with an & separated list of categories assigned to a course. 
 
+type    - scalar contains course type (Course or Community).
+
 Returns: $output (markup to be displayed) 
 
 =cut
 
 sub assign_categories_table {
-    my ($cathash,$currcat) = @_;
+    my ($cathash,$currcat,$type) = @_;
     my $output;
     if (ref($cathash) eq 'HASH') {
         my (@cats,@trails,%allitems,%idx,@jsarray,@path,$maxdepth);
@@ -9772,15 +9696,20 @@ sub assign_categories_table {
         if (@cats > 0) {
             my $itemcount = 0;
             if (ref($cats[0]) eq 'ARRAY') {
-                $output = &Apache::loncommon::start_data_table();
                 my @currcategories;
                 if ($currcat ne '') {
                     @currcategories = split('&',$currcat);
                 }
+                my $table;
                 for (my $i=0; $i<@{$cats[0]}; $i++) {
                     my $parent = $cats[0][$i];
-                    my $css_class = $itemcount%2?' class="LC_odd_row"':'';
                     next if ($parent eq 'instcode');
+                    if ($type eq 'Community') {
+                        next unless ($parent eq 'communities');
+                    } else {
+                        next if ($parent eq 'communities');
+                    }
+                    my $css_class = $itemcount%2?' class="LC_odd_row"':'';
                     my $item = &escape($parent).'::0';
                     my $checked = '';
                     if (@currcategories > 0) {
@@ -9788,18 +9717,26 @@ sub assign_categories_table {
                             $checked = ' checked="checked"';
                         }
                     }
-                    $output .= '<tr '.$css_class.'><td><span class="LC_nobreak">'.
-                               '<input type="checkbox" name="usecategory" value="'.
-                               $item.'"'.$checked.' />'.$parent.'</span>'.
-                               '<input type="hidden" name="catname" value="'.$parent.'" /></td>';
+                    my $parent_title = $parent;
+                    if ($parent eq 'communities') {
+                        $parent_title = &mt('Communities');
+                    }
+                    $table .= '<tr '.$css_class.'><td><span class="LC_nobreak">'.
+                              '<input type="checkbox" name="usecategory" value="'.
+                              $item.'"'.$checked.' />'.$parent_title.'</span>'.
+                              '<input type="hidden" name="catname" value="'.$parent.'" /></td>';
                     my $depth = 1;
                     push(@path,$parent);
-                    $output .= &assign_category_rows($itemcount,\@cats,$depth,$parent,\@path,\@currcategories);
+                    $table .= &assign_category_rows($itemcount,\@cats,$depth,$parent,\@path,\@currcategories);
                     pop(@path);
-                    $output .= '</tr><tr><td colspan="'.$maxdepth.'" class="LC_row_separator"></td></tr>';
+                    $table .= '</tr><tr><td colspan="'.$maxdepth.'" class="LC_row_separator"></td></tr>';
                     $itemcount ++;
                 }
-                $output .= &Apache::loncommon::end_data_table();
+                if ($itemcount) {
+                    $output = &Apache::loncommon::start_data_table().
+                              $table.
+                              &Apache::loncommon::end_data_table();
+                }
             }
         }
     }