--- loncom/interface/loncommon.pm	2009/11/23 14:04:36	1.918
+++ loncom/interface/loncommon.pm	2010/01/19 16:06:49	1.932
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # a pile of common routines
 #
-# $Id: loncommon.pm,v 1.918 2009/11/23 14:04:36 wenzelju Exp $
+# $Id: loncommon.pm,v 1.932 2010/01/19 16:06:49 raeburn 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 = '
@@ -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.
@@ -4751,11 +4777,6 @@ body {
   color:$font;
 }
 
-a:link,
-a:visited {
-  font-size:100%;
-}
-
 a:focus {
   color: red;
   background: yellow;
@@ -4782,6 +4803,7 @@ form, .inline {
 .LC_filename {
   font-family: $mono;
   white-space:pre;
+  font-size: 120%;
 }
 
 .LC_fileicon {
@@ -4872,9 +4894,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;
@@ -4954,41 +4974,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 +4986,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%;
 }
@@ -5066,11 +5047,6 @@ td.LC_menubuttons_text {
   background: $tabbg;
 }
 
-.LC_new_mail {
-  background: $tabbg;
-  font-weight: bold;
-}
-
 table.LC_data_table,
 table.LC_mail_list {
   border: 1px solid #000000;
@@ -5098,6 +5074,14 @@ 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,
@@ -5207,6 +5191,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;
 }
@@ -5256,12 +5256,6 @@ table.LC_mail_list 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 {
   background-color: $mail_read;
 }
@@ -5554,10 +5548,6 @@ table.LC_notify_front_page td {
   font-size: 1.2em;
 }
 
-.LC_topic_bar img {
-  vertical-align: bottom;
-}
-
 table.LC_course_group_status {
   margin: 20px;
 }
@@ -5667,12 +5657,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;
 }
 
@@ -5705,17 +5695,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;
@@ -5916,21 +5895,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 {
@@ -5993,12 +5959,6 @@ h6 {
   border: 0;
 }
 
-.LC_Right {
-  float: right;
-  margin: 0;
-  padding: 0;
-}
-
 .LC_FormSectionClearButton input {
   background-color:transparent;
   border: none;
@@ -6051,6 +6011,11 @@ ol.LC_primary_menu {
   margin: 0.2em 0 0 0;
 }
 
+span.LC_new_message{
+  font-weight:bold;
+  color: darkred;
+}
+
 ol#LC_PathBreadcrumbs {
   margin: 0;
 }
@@ -6256,7 +6221,6 @@ dl.LC_ListStyleClean dd {
 .LC_ListStyleClean,
 .LC_ListStyleSimple,
 .LC_ListStyleNormal,
-.LC_ListStyle_Border,
 .LC_ListStyleSpecial {
   /* display:block; */
   list-style-position: inside;
@@ -6391,11 +6355,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;
@@ -6494,6 +6453,11 @@ ul.LC_funclist li {
   line-height: 150%;
 }
 
+.ui-accordion .LC_advanced_toggle {
+  float: right;
+  font-size: 90%;
+  padding: 0px 4px
+}
 
 END
 }
@@ -6770,6 +6734,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();
@@ -9648,6 +9617,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;
                 }
@@ -9760,12 +9731,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);
@@ -9774,15 +9747,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) {
@@ -9790,18 +9768,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();
+                }
             }
         }
     }