--- loncom/interface/loncommon.pm 2009/11/06 16:53:17 1.912 +++ loncom/interface/loncommon.pm 2009/12/08 14:44:17 1.926 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.912 2009/11/06 16:53:17 bisitz Exp $ +# $Id: loncommon.pm,v 1.926 2009/12/08 14:44:17 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1877,7 +1877,7 @@ sub select_form { $selectform.= '\n"; + ">".$hash{$key}."\n"; } $selectform.=""; return $selectform; @@ -4367,18 +4367,30 @@ sub CSTR_pageheader { } else { $lastitem = $thisdisfn; } - return + + my $output = '
' .&Apache::loncommon::help_open_menu('','',3,'Authoring') #FIXME: Broken? Where is it? .''.&mt('Construction Space:').' ' .'
' #FIXME lonpubdir: target="_parent" - .&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv','','+1',1)."$lastitem
" + .'" target="_top">' #FIXME lonpubdir: target="_parent" + .&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv',undef,undef); + + if ($lastitem) { + $output .= + '' + .$lastitem + .''; + } + $output .= + '
' #FIXME lonpubdir: &Apache::lonhtmlcommon::crumbs($uname.$thisdisfn.'/','_top','/priv','','+1',1)."
" .&Apache::lonhtmlcommon::select_recent('construct','recent','this.form.action=this.form.recent.value;this.form.submit()') .'
' .&Apache::lonmenu::constspaceform() .'
'; + + return $output; } ############################################### @@ -4503,9 +4515,8 @@ sub bodytag { $env{'course.'.$env{'request.course.id'}. '.domain'}.'/'})) { my $cid = $env{'request.course.id'}; - $dc_info.= $cid.' '.$env{'course.'.$cid.'.internal.coursecode'}; + $dc_info = $cid.' '.$env{'course.'.$cid.'.internal.coursecode'}; $dc_info =~ s/\s+$//; - $dc_info = '('.$dc_info.')'; } $role = '('.$role.')' if $role; @@ -4513,7 +4524,9 @@ sub bodytag { if ($env{'environment.remote'} eq 'off') { # No Remote - if ($no_nav_bar) { return $bodytag; } + if ($no_nav_bar || $env{'form.inhibitmenu'} eq 'yes') { + return $bodytag; + } if ($env{'request.state'} eq 'construct') { $forcereg=1; } @@ -4521,27 +4534,40 @@ sub bodytag { # $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls # } - $bodytag .= qq|
$name $role
- $realm $dc_info
| unless $env{'form.inhibitmenu'}; - if ( $env{'form.inhibitmenu'} eq 'yes' - || $ENV{'REQUEST_URI'} eq '/adm/logout' - || $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { + if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { + if ($dc_info) { + $dc_info = qq|$dc_info|; + } + $bodytag .= qq|
$name $role
+ $realm $dc_info
|; return $bodytag; } + $bodytag .= qq|
$name $role
|; + $bodytag .= Apache::lonhtmlcommon::scripttag( Apache::lonmenu::utilityfunctions(), 'start'); $bodytag .= Apache::lonmenu::primary_menu(); + if ($dc_info) { + $dc_info = &dc_courseid_toggle($dc_info); + } + $bodytag .= qq|
$realm $dc_info
|; + #don't show menus for public users 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. @@ -4567,12 +4593,15 @@ sub bodytag { # Explicit link to get inline menu my $menu= ($no_inline_link?'' :''.&mt('Switch to Inline Menu Mode').''); - $bodytag .= qq|
$name $role - $realm $dc_info
+ + if ($dc_info) { + $dc_info = qq|($dc_info)|; + } + + $bodytag .= qq|
$name $role
  1. $menu
  2. -
| unless $env{'form.inhibitmenu'}; - # +
$realm $dc_info
| unless $env{'form.inhibitmenu'}; return(< @@ -4585,6 +4614,14 @@ $bodytag ENDBODY } +sub dc_courseid_toggle { + my ($dc_info) = @_; + return ' '. + ''. + &mt('(More ...)').''. + '
'.$dc_info.'
'; +} + sub make_attr_string { my ($register,$attr_ref) = @_; @@ -4731,11 +4768,6 @@ body { color:$font; } -a:link, -a:visited { - font-size:100%; -} - a:focus { color: red; background: yellow; @@ -4762,6 +4794,7 @@ form, .inline { .LC_filename { font-family: $mono; white-space:pre; + font-size: 120%; } .LC_fileicon { @@ -4852,9 +4885,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; @@ -4885,47 +4916,53 @@ table#LC_title_bar.LC_with_remote { margin: 0; } -table#LC_title_bar td { - background: $tabbg; -} +/* #SD START (work in progress)*/ -table#LC_menubuttons img { - border: none; +ul.LC_bct { + margin: 0; + padding: 0; } - -table#LC_top_nav td { - background: $tabbg; - border: none; - font-size: small; - vertical-align:top; - padding:2px 5px 2px 5px; +ul.LC_bct ol { + display: inline; +} +ul.LC_bct ul { + display: inline; + padding: 0; +} +ul.LC_bct li { + list-style-type: none; + display: inline; } -table#LC_top_nav td a, -div#LC_top_nav a { - color: $font; + +ul.LC_breadcrumb_tools { } -table#LC_top_nav td.LC_top_nav_logo { - background: $tabbg; - text-align: left; - white-space: nowrap; - width: 31px; +li.LC_breadcrumb_tools { +} +li.LC_breadcrumb_tools img{ + vertical-align: middle; } -table#LC_top_nav td.LC_top_nav_logo img { - border: none; - vertical-align: bottom; +.LC_breadcrumb_tools_A { + margin: 0 0 0 1em; +} +.LC_breadcrumb_tools_B { + float: right; + margin-top: 0.4em; } +.LC_breadcrumb_tools_C { + margin: 0 1em 0 0; + float: right; +} +/* #SD END */ -table#LC_top_nav td.LC_top_nav_exit, -table#LC_top_nav td.LC_top_nav_help { - width: 2.0em; +table#LC_title_bar td { + background: $tabbg; } -table#LC_top_nav td.LC_top_nav_login { - width: 4.0em; - text-align: center; +table#LC_menubuttons img { + border: none; } .LC_breadcrumbs_component { @@ -4940,10 +4977,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%; } @@ -4953,9 +4986,9 @@ 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; */ + /* SD working here + height: 2.5em; + overflow: hidden; */ margin: 0; padding: 0; } @@ -4968,9 +5001,8 @@ table#LC_mainmenu td.LC_mainmenu_column #LC_head_subbox { clear:both; background: #F8F8F8; /* $sidebg; */ - border-bottom: 1px solid $lg_border_color; - margin: 0 0 10px 0; - padding: 5px; + border: 1px solid $sidebg; + margin: 0 0 10px 0; } .LC_fontsize_medium { @@ -5006,11 +5038,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; @@ -5167,6 +5194,7 @@ table.LC_createuser tr.LC_info_row td { table.LC_calendar { border: 1px solid #000000; border-collapse: collapse; + width: 98%; } table.LC_calendar_pickdate { @@ -5176,6 +5204,7 @@ table.LC_calendar_pickdate { table.LC_calendar tr td { border: 1px solid #000000; vertical-align: top; + width: 14%; } table.LC_calendar tr td.LC_calendar_day_empty { @@ -5194,12 +5223,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; } @@ -5479,19 +5502,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 { @@ -5603,12 +5624,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; } @@ -5641,17 +5662,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; @@ -5852,27 +5862,21 @@ 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 { margin: 10px 10px 10px 10px; } +.LC_dccid { + margin: 0.2em 0 0 0; + padding: 0; + font-size: 90%; + display:none; +} + /* ---- Remove when done ---- # The following styles is part of the redesign of LON-CAPA and are # subject to change during this project. @@ -5922,12 +5926,6 @@ h6 { border: 0; } -.LC_Right { - float: right; - margin: 0; - padding: 0; -} - .LC_FormSectionClearButton input { background-color:transparent; border: none; @@ -5963,6 +5961,13 @@ fieldset > legend { margin: 0.2em 0 0 0; } +#LC_realm { + margin: 0.2em 0 0 0; + padding: 0; + font-weight: bold; + text-align: center; +} + #LC_nav_bar em { font-weight: bold; font-style: normal; @@ -6127,7 +6132,7 @@ ol#LC_PathBreadcrumbs { padding-left: 10px; margin: 0; list-style-position: inside; - /* SD working here + /* SD working here white-space: nowrap; */ } @@ -6136,8 +6141,8 @@ ol#LC_PathBreadcrumbs li, ul.LC_CourseBreadcrumbs li { display: inline; white-space: nowrap; - /* SD working here - white-space: normal; */ + /* SD working here + white-space: normal; */ } ol#LC_MenuBreadcrumbs li a, @@ -6178,7 +6183,6 @@ dl.LC_ListStyleClean dd { .LC_ListStyleClean, .LC_ListStyleSimple, .LC_ListStyleNormal, -.LC_ListStyle_Border, .LC_ListStyleSpecial { /* display:block; */ list-style-position: inside; @@ -6313,11 +6317,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; @@ -6391,11 +6390,29 @@ a.LC_toolbarItem { background-color:transparent; } +ul.LC_funclist { + margin: 0; + padding: 0.5em 1em 0.5em 0; +} + +ul.LC_funclist + ul.LC_funclist { + /* + left border as a seperator if we have more than + one list + */ + border-left: 1px solid $sidebg; + /* + this hides the left border behind the border of the + outer box if element is wrapped to the next 'line' + */ + margin-left: -1px; +} + ul.LC_funclist li { - float: left; + display: inline; white-space: nowrap; - height: 35px; /* at least as high as heighest list item */ - margin: 0 15px 15px 10px; + margin: 0 0 0 25px; + line-height: 150%; } @@ -6674,6 +6691,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(); @@ -9552,6 +9574,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; } @@ -9664,12 +9688,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); @@ -9678,15 +9704,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) { @@ -9694,18 +9725,26 @@ sub assign_categories_table { $checked = ' checked="checked"'; } } - $output .= ''. - ''.$parent.''. - ''; + my $parent_title = $parent; + if ($parent eq 'communities') { + $parent_title = &mt('Communities'); + } + $table .= ''. + ''.$parent_title.''. + ''; 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 .= ''; + $table .= ''; $itemcount ++; } - $output .= &Apache::loncommon::end_data_table(); + if ($itemcount) { + $output = &Apache::loncommon::start_data_table(). + $table. + &Apache::loncommon::end_data_table(); + } } } }