--- loncom/interface/loncommon.pm 2008/11/28 14:36:50 1.695 +++ loncom/interface/loncommon.pm 2009/02/10 12:20:17 1.744 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.695 2008/11/28 14:36:50 raeburn Exp $ +# $Id: loncommon.pm,v 1.744 2009/02/10 12:20:17 ehlerst Exp $ # # Copyright Michigan State University Board of Trustees # @@ -271,7 +271,7 @@ BEGIN { } } &Apache::lonnet::logthis( - "<font color=yellow>INFO: Read file types</font>"); + "<span style='color:yellow;'>INFO: Read file types</span>"); $readit=1; } # end of unless($readit) @@ -926,7 +926,7 @@ sub help_open_topic { if ($text ne "") { $template .= "<table bgcolor='#3333AA' cellspacing='1' cellpadding='1' border='0'><tr>". - "<td bgcolor='#5555FF'><span class=\"LC_nobreak\"><a target=\"_top\" href=\"$link\"><font color='#FFFFFF' size='2'>$text</font></a>"; + "<td bgcolor='#5555FF'><a target=\"_top\" href=\"$link\"><span style=\"color:#FFFFFF;font-size:10pt;\">$text</span></a>"; } # Add the graphic @@ -935,7 +935,7 @@ sub help_open_topic { $template .= <<"ENDTEMPLATE"; <a target="_top" href="$link" title="$title"><img src="$helpicon" border="0" alt="(Help: $topic)" /></a> ENDTEMPLATE - if ($text ne '') { $template.='</span></td></tr></table>' }; + if ($text ne '') { $template.='</td></tr></table>' }; return $template; } @@ -943,24 +943,30 @@ ENDTEMPLATE # This is a quicky function for Latex cheatsheet editing, since it # appears in at least four places sub helpLatexCheatsheet { - my $other = shift; + my ($topic,$text,$not_author) = @_; + my $out; my $addOther = ''; - if ($other) { - $addOther = Apache::loncommon::help_open_topic($other, shift, - undef, undef, 600) . + if ($topic) { + $addOther = &Apache::loncommon::help_open_topic($topic,$text, + undef, undef, 600). '</td><td>'; } - return '<table><tr><td>'. - $addOther . - &Apache::loncommon::help_open_topic("Greek_Symbols",&mt('Greek Symbols'), - undef,undef,600) - .'</td><td>'. - &Apache::loncommon::help_open_topic("Other_Symbols",&mt('Other Symbols'), - undef,undef,600) - .'</td><td>'. - &Apache::loncommon::help_open_topic("Authoring_Output_Tags",&mt('Output Tags'), - undef,undef,600) - .'</td></tr></table>'; + $out = '<table><tr><td>'. + $addOther . + &Apache::loncommon::help_open_topic("Greek_Symbols",&mt('Greek Symbols'), + undef,undef,600). + '</td><td>'. + &Apache::loncommon::help_open_topic("Other_Symbols",&mt('Other Symbols'), + undef,undef,600). + '</td>'; + unless ($not_author) { + $out .= '<td>'. + &Apache::loncommon::help_open_topic("Authoring_Output_Tags",&mt('Output Tags'), + undef,undef,600). + '</td>'; + } + $out .= '</tr></table>'; + return $out; } sub general_help { @@ -1128,7 +1134,7 @@ sub help_open_bug { { $template .= "<table bgcolor='#AA3333' cellspacing='1' cellpadding='1' border='0'><tr>". - "<td bgcolor='#FF5555'><a target=\"_top\" href=\"$link\"><font color='#FFFFFF' size='2'>$text</font></a>"; + "<td bgcolor='#FF5555'><a target=\"_top\" href=\"$link\"><span style=\"color:#FFFFFF;font-size:10pt;\">$text</span></a>"; } # Add the graphic @@ -1173,7 +1179,7 @@ sub help_open_faq { { $template .= "<table bgcolor='#337733' cellspacing='1' cellpadding='1' border='0'><tr>". - "<td bgcolor='#448844'><a target=\"_top\" href=\"$link\"><font color='#FFFFFF' size='2'>$text</font></a>"; + "<td bgcolor='#448844'><a target=\"_top\" href=\"$link\"><span style=\"color:#FFFFFF; font-size:10pt;\">$text</span></a>"; } # Add the graphic @@ -1629,7 +1635,7 @@ sub multiple_select_form { $size = scalar(keys(%$hash)); } } - $output.="\n<select name='$name' size='$size' multiple='1'>"; + $output.="\n".'<select name="'.$name.'" size="'.$size.'" multiple="multiple">'; my @order; if (ref($order) eq 'ARRAY') { @order = @{$order}; @@ -1686,17 +1692,17 @@ sub select_form { sub display_filter { if (!$env{'form.show'}) { $env{'form.show'}=10; } if (!$env{'form.displayfilter'}) { $env{'form.displayfilter'}='currentfolder'; } - return '<nobr><label>'.&mt('Records [_1]', + return '<span class="LC_nobreak"><label>'.&mt('Records [_1]', &Apache::lonmeta::selectbox('show',$env{'form.show'},undef, (&mt('all'),10,20,50,100,1000,10000))). - '</label></nobr> <nobr>'. + '</label></span> <span class="LC_nobreak">'. &mt('Filter [_1]', &select_form($env{'form.displayfilter'}, 'displayfilter', ('currentfolder' => 'Current folder/page', 'containing' => 'Containing phrase', 'none' => 'None'))). - '<input type="text" name="containingphrase" size="30" value="'.&HTML::Entities::encode($env{'form.containingphrase'}).'" /></nobr>'; + '<input type="text" name="containingphrase" size="30" value="'.&HTML::Entities::encode($env{'form.containingphrase'}).'" /></span>'; } sub gradeleveldescription { @@ -1740,7 +1746,7 @@ sub select_level_form { =pod -=item * &select_dom_form($defdom,$name,$includeempty,$showdomdesc) +=item * &select_dom_form($defdom,$name,$includeempty,$showdomdesc,$autosubmit) Returns a string containing a <select name='$name' size='1'> form to allow a user to select the domain to preform an operation in. @@ -1749,16 +1755,22 @@ See loncreateuser.pm for an example invo If the $includeempty flag is set, it also includes an empty choice ("no domain selected"); -If the $showdomdesc flag is set, the domain name is followed by the domain description. +If the $showdomdesc flag is set, the domain name is followed by the domain description. + +If the $autosubmit flag is set, the form containing the domain selector will be auto-submitted by an onchange action. =cut #------------------------------------------- sub select_dom_form { - my ($defdom,$name,$includeempty,$showdomdesc) = @_; + my ($defdom,$name,$includeempty,$showdomdesc,$autosubmit) = @_; + my $onchange; + if ($autosubmit) { + $onchange = ' onchange="this.form.submit()"'; + } my @domains = sort {lc($a) cmp lc($b)} (&Apache::lonnet::all_domains()); if ($includeempty) { @domains=('',@domains); } - my $selectdomain = "<select name=\"$name\" size=\"1\">\n"; + my $selectdomain = "<select name=\"$name\" size=\"1\"$onchange>\n"; foreach my $dom (@domains) { $selectdomain.="<option value=\"$dom\" ". ($dom eq $defdom ? 'selected="selected" ' : '').'>'.$dom; @@ -2717,6 +2729,43 @@ sub flush_email_cache { &Apache::lonnet::devalidate_cache_new('emailscache',$id); } +# -------------------------------------------------------------------- getlangs + +=pod + +=item * &getlangs($uname,$udom) + +Gets a user's language preference and returns it as a hash with key: +language. + +=cut + + +sub getlangs { + my ($uname,$udom) = @_; + if (!$udom) { $udom =$env{'user.domain'}; } + if (!$uname) { $uname=$env{'user.name'}; } + my $id=$uname.':'.$udom; + my ($langs,$cached)=&Apache::lonnet::is_cached_new('userlangs',$id); + if ($cached) { + return %{$langs}; + } else { + my %loadlangs=&Apache::lonnet::get('environment',['languages'], + $udom,$uname); + &Apache::lonnet::do_cache_new('userlangs',$id,\%loadlangs); + return %loadlangs; + } +} + +sub flush_langs_cache { + my ($uname,$udom)=@_; + if (!$udom) { $udom =$env{'user.domain'}; } + if (!$uname) { $uname=$env{'user.name'}; } + return if ($udom eq 'public' && $uname eq 'public'); + my $id=$uname.':'.$udom; + &Apache::lonnet::devalidate_cache_new('userlangs',$id); +} + # ------------------------------------------------------------------ Screenname =pod @@ -2768,10 +2817,7 @@ sub aboutmewrapper { sub syllabuswrapper { - my ($linktext,$coursedir,$domain,$fontcolor)=@_; - if ($fontcolor) { - $linktext='<font color="'.$fontcolor.'">'.$linktext.'</font>'; - } + my ($linktext,$coursedir,$domain)=@_; return qq{<a href="/public/$domain/$coursedir/syllabus">$linktext</a>}; } @@ -3033,6 +3079,29 @@ sub languages { return $preferred_possibilities[0]; } +sub user_lang { + my ($touname,$toudom,$fromcid) = @_; + my @userlangs; + if (($fromcid ne '') && ($env{'course.'.$fromcid.'.languages'} ne '')) { + @userlangs=(@userlangs,split(/\s*(\,|\;|\:)\s*/, + $env{'course.'.$fromcid.'.languages'})); + } else { + my %langhash = &getlangs($touname,$toudom); + if ($langhash{'languages'} ne '') { + @userlangs = split(/\s*(\,|\;|\:)\s*/,$langhash{'languages'}); + } else { + my %domdefs = &Apache::lonnet::get_domain_defaults($toudom); + if ($domdefs{'lang_def'} ne '') { + @userlangs = ($domdefs{'lang_def'}); + } + } + } + my @languages=&Apache::lonlocal::get_genlanguages(@userlangs); + my $user_lh = Apache::localize->get_handle(@languages); + return $user_lh; +} + + ############################################################### ## Student Answer Attempts ## ############################################################### @@ -3171,7 +3240,7 @@ sub relative_to_absolute { } $thisdir=~s-/[^/]*$--; foreach my $link (@rlinks) { - unless (($link=~/^http:\/\//i) || + unless (($link=~/^https?\:\/\//i) || ($link=~/^\//) || ($link=~/^javascript:/i) || ($link=~/^mailto:/i) || @@ -3880,7 +3949,14 @@ sub get_domainconf { if (ref($domconfig{'login'}) eq 'HASH') { if (keys(%{$domconfig{'login'}})) { foreach my $key (keys(%{$domconfig{'login'}})) { - $designhash{$udom.'.login.'.$key}=$domconfig{'login'}{$key}; + if (ref($domconfig{'login'}{$key}) eq 'HASH') { + foreach my $img (keys(%{$domconfig{'login'}{$key}})) { + $designhash{$udom.'.login.'.$key.'_'.$img} = + $domconfig{'login'}{$key}{$img}; + } + } else { + $designhash{$udom.'.login.'.$key}=$domconfig{'login'}{$key}; + } } } else { $legacy{'login'} = 1; @@ -4213,7 +4289,7 @@ ENDROLE .'<b>'.&mt('Construction Space').'</b>: ' .'<form name="dirs" method="post" action="'.$formaction .'" target="_top"><tt><b>' - .&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv','','+1',1)."<font size=\"+1\">$lastitem</font></b></tt><br />" + .&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv','','+1',1)."<span class=\"LC_fontsize_big\">$lastitem</span></b></tt><br />" .&Apache::lonhtmlcommon::select_recent('construct','recent','this.form.action=this.form.recent.value;this.form.submit()') .'</form>' .&Apache::lonmenu::constspaceform(); @@ -4387,6 +4463,10 @@ sub standard_css { my $vlink = &designparm($function.'.vlink', $domain); my $link = &designparm($function.'.link', $domain); + my $loginbg = &designparm('login.sidebg',$domain); + my $bgcol = &designparm('login.bgcol',$domain); + my $textcol = &designparm('login.textcol',$domain); + my $sans = 'Verdana,Arial,Helvetica,sans-serif'; my $mono = 'monospace'; my $data_table_head = $tabbg; @@ -4404,6 +4484,7 @@ sub standard_css { my $mail_other_hover = '#669999'; my $table_header = '#DDDDDD'; my $feedback_link_bg = '#BBBBBB'; + my $lg_border_color = '#C8C8C8'; my $border = ($env{'browser.type'} eq 'explorer' || $env{'browser.type'} eq 'safari' ) ? '0px 2px 0px 2px' @@ -4411,22 +4492,45 @@ sub standard_css { return <<END; -h1, h2, h3, th { font-family: $sans } +body{ + font-family: $sans; + line-height:130%; + font-size:0.83em; + color:$font; + } +a:link, a:visited { font-size:100%; } + a:focus { color: red; background: yellow } table.thinborder, - table.thinborder tr th { border-style: solid; border-width: 1px; + border-color: $lg_border_color; background: $tabbg; } table.thinborder tr td { border-style: solid; - border-width: 1px + border-width: 1px; + border-color: $lg_border_color; } form, .inline { display: inline; } -.center { text-align: center; } + +.LC_center { text-align: center; } +.LC_left { text-align:left; } +.LC_right {text-align:right;} +.LC_middle {vertical-align:middle;} +.LC_top {vertical-align:top;} +.LC_bottom {vertical-align:bottom;} + +/* just for tests */ +.LC_300Box { width:300px; } +.LC_200Box {width:200px; } +.LC_500Box {width:500px; } +.LC_600Box {width:600px; } +.LC_800Box {width:800px;} +/* end */ + .LC_filename {font-family: $mono; white-space:pre;} .LC_error { color: red; @@ -4460,7 +4564,7 @@ form, .inline { display: inline; } } .LC_internal_info { - color: #999; + color: #999999; } table.LC_pastsubmission { @@ -4488,7 +4592,6 @@ table#LC_title_bar.LC_with_remote { border-collapse: collapse; padding: 0px; } - table.LC_docs_path { width: 100%; border: 0; @@ -4523,21 +4626,15 @@ table#LC_title_bar td.LC_title_bar_role_ padding: 0px; } -table#LC_menubuttons_mainmenu { - width: 100%; - border: 0px; - border-spacing: 1px; - padding: 0px 1px; - margin: 0px; - border-collapse: separate; -} -table#LC_menubuttons img, table#LC_menubuttons_mainmenu img { +table#LC_menubuttons img{ border: 0px; } table#LC_top_nav td { background: $tabbg; border: 0px; font-size: small; + vertical-align:top; + padding:2px 5px 2px 5px; } table#LC_top_nav td a, div#LC_top_nav a { color: $font; @@ -4582,16 +4679,37 @@ table#LC_mainmenu td.LC_mainmenu_column vertical-align: top; } +.LC_fontsize_small +{ + font-size: 70%; +} + +.LC_fontsize_medium +{ + font-size: 85%; +} + +.LC_fontsize_large +{ + font-size: 120%; +} + +.LC_fontcolor_red +{ + color: #FF0000; +} + .LC_menubuttons_inline_text { color: $font; font-family: $sans; - font-size: smaller; + font-size: 90%; + padding-left:3px; } .LC_menubuttons_link { text-decoration: none; } -#2008--9-5: new menu style sheet.Changed category +/*2008--9-5: new menu style sheet.Changed category*/ .LC_menubuttons_category { color: $font; background: $pgbg; @@ -4601,13 +4719,10 @@ table#LC_mainmenu td.LC_mainmenu_column } td.LC_menubuttons_text { - width: 90%; - color: $font; - font-family: $sans; + color: $font; } -td.LC_menubuttons_img { -} + .LC_current_location { font-family: $sans; @@ -4619,34 +4734,6 @@ td.LC_menubuttons_img { font-weight: bold; } -.LC_rolesmenu_is { - font-family: $sans; -} - -.LC_rolesmenu_selected { - font-family: $sans; -} - -.LC_rolesmenu_future { - font-family: $sans; -} - - -.LC_rolesmenu_will { - font-family: $sans; -} - -.LC_rolesmenu_will_not { - font-family: $sans; -} - -.LC_rolesmenu_expired { - font-family: $sans; -} - -.LC_rolesinfo { - font-family: $sans; -} .LC_dropadd_labeltext { font-family: $sans; @@ -4659,7 +4746,11 @@ td.LC_menubuttons_img { } .LC_roleslog_note { - font-size: smaller; + font-size: small; +} + +.LC_mail_functions { + font-weight: bold; } table.LC_aboutme_port { @@ -4692,16 +4783,24 @@ table.LC_data_table tr th, table.LC_cale table.LC_prior_tries tr th { font-weight: bold; background-color: $data_table_head; - font-size: smaller; + font-size:90%; +} +table.LC_data_table tr.LC_info_row > td { + background-color: #CCCCCC; + font-weight: bold; + text-align: left; } table.LC_data_table tr.LC_odd_row > td, +table.LC_pick_box tr > td.LC_odd_row, table.LC_aboutme_port tr td { background-color: $data_table_light; padding: 2px; } table.LC_data_table tr.LC_even_row > td, +table.LC_pick_box tr > td.LC_even_row, table.LC_aboutme_port tr.LC_even_row td { background-color: $data_table_dark; + padding: 2px; } table.LC_data_table tr.LC_data_table_highlight td { background-color: $data_table_darker; @@ -4724,7 +4823,7 @@ table.LC_nested tr.LC_empty_row td { table.LC_nested_outer tr th { font-weight: bold; background-color: $data_table_head; - font-size: smaller; + font-size: small; border-bottom: 1px solid #000000; } table.LC_nested_outer tr td.LC_subheader { @@ -4735,7 +4834,7 @@ table.LC_nested_outer tr td.LC_subheader text-align: right; } table.LC_nested tr.LC_info_row td { - background-color: #CCC; + background-color: #CCCCCC; font-weight: bold; font-size: small; text-align: center; @@ -4745,7 +4844,7 @@ table.LC_nested_outer tr th.LC_left_item text-align: left; } table.LC_nested td { - background-color: #FFF; + background-color: #FFFFFF; font-size: small; } table.LC_nested_outer tr th.LC_right_item, @@ -4756,18 +4855,18 @@ table.LC_nested tr td.LC_right_item { } table.LC_nested tr.LC_odd_row td { - background-color: #EEE; + background-color: #EEEEEE; } table.LC_createuser { } table.LC_createuser tr.LC_section_row td { - font-size: smaller; + font-size: small; } table.LC_createuser tr.LC_info_row td { - background-color: #CCC; + background-color: #CCCCCC; font-weight: bold; text-align: center; } @@ -4819,71 +4918,46 @@ table.LC_mail_list tr.LC_mail_even { table.LC_mail_list tr.LC_mail_odd { } - -table#LC_portfolio_actions { - width: auto; - background: $pgbg; - border: 0px; - border-spacing: 2px 2px; - padding: 0px; - margin: 0px; - border-collapse: separate; -} -table#LC_portfolio_actions td.LC_label { - background: $tabbg; - text-align: right; +table.LC_data_table tr > td.LC_browser_file, +table.LC_data_table tr > td.LC_browser_file_published { + background: #CCFF88; } -table#LC_portfolio_actions td.LC_value { - background: $tabbg; +table.LC_data_table tr > td.LC_browser_file_locked, +table.LC_data_table tr > td.LC_browser_file_unpublished { + background: #FFAA99; } - -table#LC_cstr_controls { - width: 100%; - border-collapse: collapse; +table.LC_data_table tr > td.LC_browser_file_obsolete { + background: #AAAAAA; } -table#LC_cstr_controls tr td { - border: 4px solid $pgbg; - padding: 4px; - text-align: center; - background: $tabbg; +table.LC_data_table tr > td.LC_browser_file_modified, +table.LC_data_table tr > td.LC_browser_file_metamodified { + background: #FFFF77; } -table#LC_cstr_controls tr th { - border: 4px solid $pgbg; - background: $table_header; - text-align: center; - font-family: $sans; - font-size: smaller; +table.LC_data_table tr.LC_browser_folder > td { + background: #CCCCFF; } -table#LC_browser { - -} -table#LC_browser tr th { - background: $table_header; -} -table#LC_browser tr td { - padding: 2px; +table.LC_data_table tr > td.LC_roles_is { +/* background: #77FF77; */ } -table#LC_browser tr.LC_browser_file, -table#LC_browser tr.LC_browser_file_published { - background: #CCFF88; +table.LC_data_table tr > td.LC_roles_future { + background: #FFFF77; } -table#LC_browser tr.LC_browser_file_locked, -table#LC_browser tr.LC_browser_file_unpublished { - background: #FFAA99; +table.LC_data_table tr > td.LC_roles_will { + background: #FFAA77; } -table#LC_browser tr.LC_browser_file_obsolete { - background: #AAAAAA; +table.LC_data_table tr > td.LC_roles_expired { + background: #FF7777; } -table#LC_browser tr.LC_browser_file_modified, -table#LC_browser tr.LC_browser_file_metamodified { - background: #FFFF77; +table.LC_data_table tr > td.LC_roles_will_not { + background: #AAFF77; } -table#LC_browser tr.LC_browser_folder { - background: #CCCCFF; +table.LC_data_table tr > td.LC_roles_selected { + background: #11CC55; } + span.LC_current_location { - font-size: x-large; + font-size:larger; background: $pgbg; } @@ -4982,6 +5056,7 @@ table.LC_pick_box td.LC_pick_box_title { background: $tabbg; font-weight: bold; text-align: right; + vertical-align: top; width: 184px; padding: 8px; } @@ -5223,13 +5298,6 @@ table.LC_docs_documents td.LC_docs_docum padding: 4px; } -.LC_docs_course_commands div { - float: left; - border: 4px solid #AAAAAA; - padding: 4px; - background: #DDDDCC; -} - .LC_docs_entry_move { border: 0px; border-collapse: collapse; @@ -5327,23 +5395,6 @@ div.LC_clear_float_footer { } -div.LC_grade_select_mode { - font-family: $sans; -} -div.LC_grade_select_mode div div { - margin: 5px; -} -div.LC_grade_select_mode_selector { - margin: 5px; - float: left; -} -div.LC_grade_select_mode_selector_header { - font: bold medium $sans; -} -div.LC_grade_select_mode_type { - clear: left; -} - div.LC_grade_show_user { margin-top: 20px; border: 1px solid black; @@ -5351,7 +5402,8 @@ div.LC_grade_show_user { div.LC_grade_user_name { background: #DDDDEE; border-bottom: 1px solid black; - font: bold large $sans; + font-weight: bold; + font-size: large; } div.LC_grade_show_user_odd_row div.LC_grade_user_name { background: #DDEEDD; @@ -5370,7 +5422,8 @@ div.LC_grade_show_problem_header, div.LC_grade_submissions_header, div.LC_grade_message_center_header, div.LC_grade_assign_header { - font: bold large $sans; + font-weight: bold; + font-size: large; } div.LC_grade_show_problem_problem, div.LC_grade_submissions_body, @@ -5381,7 +5434,8 @@ div.LC_grade_assign_body { background: #FFFFFF; } span.LC_grade_check_note { - font: normal medium $sans; + font-weight: normal; + font-size: medium; display: inline; position: absolute; right: 1em; @@ -5391,12 +5445,13 @@ table.LC_scantron_action { width: 100%; } table.LC_scantron_action tr th { - font: normal bold $sans; + font-weight:bold; + font-style:normal; } - -div.LC_edit_problem_header, +.LC_edit_problem_header, div.LC_edit_problem_footer { - font: normal medium $sans; + font-weight: normal; + font-size: medium; margin: 2px; } div.LC_edit_problem_header, @@ -5413,12 +5468,14 @@ div.LC_edit_problem_header_edit_row { margin-bottom: 5px; } div.LC_edit_problem_header_title { - font: larger bold $sans; + font-weight: bold; + font-size: larger; background: $tabbg; padding: 3px; } table.LC_edit_problem_header_title { - font: larger bold $sans; + font-size: larger; + font-weight: bold; width: 100%; border-color: $pgbg; border-style: solid; @@ -5466,10 +5523,11 @@ table#LC_mainmenu td.LC_mainmenu_col_fie font-size: small; font-weight: bold; } -fieldset#LC_mainmenu_fieldset { - margin:0px 10px 10px 0px; +div.LC_createcourse { + margin: 10px 10px 10px 10px; } + /* ---- Remove when done ---- # The following styles is part of the redesign of LON-CAPA and are # subject to change during this project. @@ -5477,128 +5535,164 @@ fieldset#LC_mainmenu_fieldset { # changed or removed. # --------------------------*/ - -body { - font-family: Tahoma, Arial,Helvetica,sans-serif; - font-size: 0.85em; - line-height: 130%; - color: RGB(45, 45, 45); +a:hover, +ol.LC_smallMenu a:hover, +ol#LC_MenuBreadcrumbs a:hover, +ol#LC_PathBreadcrumbs a:hover, +ul#LC_TabMainMenuContent a:hover, +.LC_FormSectionClearButton input:hover +ul.LC_TabContent li:hover a{ + color:#BF2317; + text-decoration:none; } -a:link,a:visited { - /*color: RGB(0, 118, 127);*/ - /*text-decoration: underline;*/ -} - -a:hover{ - text-decoration:none; -} -/*a:hover, -UL.smallMenu A:hover, -UL.MenuBreadcrumbs A:hover, -UL#TabMainMenuContent A:hover{ - color: rgb(200, 10, 50); -}*/ - h1 { padding:5px 10px 5px 20px; line-height:130%; } -h2,h4,h6 { - /*color: RGB(0, 118, 127);*/ -} + h2,h3,h4,h5,h6 { -margin:5px 0px 5px 0px; -line-height:130%; + margin:5px 0px 5px 0px; + padding:0px; + line-height:130%; } - -.right { - text-align: right; +.LC_hcell{ + padding:3px 15px 3px 15px; + margin:0px; + background-color:$tabbg; + border-bottom:solid 1px $lg_border_color; } - -.center { - text-align: center; +.LC_noBorder { + border:0px; } -.left { - text-align: left; +.LC_bgLightGrey{ + background:URL(/adm/lonIcons/lightGreyBG.png) repeat-x left bottom; } -.HeadRight { +/* Main Header with discription of Person, Course, etc. */ +.LC_HeadRight { text-align: right; float: right; margin: 0px; padding: 0px; - right:0; + right:0; position:absolute; + overflow:hidden; } -img { -/* border: 0px; */ -} +p, .LC_ContentBox { + padding: 10px; -.personalBgColor { - background: RGB(237, 239, 0) url(images/headHighlight.png) repeat-y left top; } - -p { - padding: 10px; +.LC_FormSectionClearButton input { + background-color:transparent; + border:0px; + cursor:pointer; + text-decoration:underline; } -DL,UL,Div,Fieldset { - /*margin: 10px;*/ + + +dl,ul,div,fieldset { + margin: 10px 10px 10px 0px; overflow:hidden; } -OL.smallMenu { - margin: 0px 0px 0px 0px; +ol.LC_smallMenu, ol#LC_PathBreadcrumbs { + margin: 0px; } -OL.smallMenu li { +ol.LC_smallMenu li { display: inline; padding: 5px 5px 0px 10px; vertical-align: top; } -OL.smallMenu li img { +ol.LC_smallMenu li img { vertical-align: bottom; } -OL.smallMenu A { +ol.LC_smallMenu a { font-size: 90%; color: RGB(80, 80, 80); text-decoration: none; } - -OL#TabMainMenuContent { - - margin: 0px 0px 10px 0px; +ol#LC_TabMainMenueContent, ul.LC_TabContent , +ul.LC_TabContentBigger { + display:block; + list-style:none; + margin: 0px; padding: 0px; } -OL#TabMainMenuContent LI { +ol#LC_TabMainMenuContent li, ul.LC_TabContent li, +ul.LC_TabContentBigger li{ display: inline; + border-right: solid 1px $lg_border_color; + float:left; + line-height:140%; + white-space:nowrap; +} +ol#LC_TabMainMenuContent li{ vertical-align: bottom; border-bottom: solid 1px RGB(175, 175, 175); - border-right: solid 1px RGB(175, 175, 175); - padding: 5px 15px 5px 15px; - margin-right:4px; - line-height: 140%; + padding: 5px 10px 5px 10px; + margin-right:5px; + margin-bottom:3px; font-weight: bold; - overflow:hidden; - background: RGB(211, 206, 205) URL(images/TabMenuBG.png) repeat-x left top; + background: url(/adm/lonIcons/lightGreyBG.png) repeat-x left top; } -OL#TabMainMenuContent LI A { +ol#LC_TabMainMenuContent li a{ color: RGB(47, 47, 47); text-decoration: none; } +ul.LC_TabContent { + min-height:1.6em; + border-bottom:solid 1px $lg_border_color; +} +ul.LC_TabContent li{ + vertical-align:middle; + padding:0px 10px 0px 10px; + background-color:$lg_border_color; +} +ul.LC_TabContent li a, ul.LC_TabContent li{ + color:rgb(47,47,47); + text-decoration:none; + font-size:95%; + font-weight:bold; +} +ul.LC_TabContent li:hover, ul.LC_TabContent li.active{ + background-color:#FFFFFF; +} +ul.LC_TabContentBigger li{ + vertical-align:bottom; + border-top:solid 1px $lg_border_color; + border-left:solid 1px $lg_border_color; + padding:5px 10px 5px 10px; + margin-left:2px; + background:url(/adm/lonIcons/lightGreyBG.png) repeat-x left top; +} +ul.LC_TabContentBigger li:hover, ul.LC_TabContentBigger li.active{ + background:url(/adm/lonIcons/lightGreyBG.png) repeat-x right bottom; +} +ul.LC_TabContentBigger li, ul.LC_TabContentBigger li a{ + font-size:110%; + font-weight:bold; +} +#LC_CourseDocuments, #LC_SupplementalCourseDocuments +{ + margin:0px; +} -OL#TabMainMenuContent DIV.columnSection { - margin-bottom: 0px; +.LC_hideThis +{ + display:none; + visibility:hidden; } -OL#MenuBreadcrumbs { +ol#LC_MenuBreadcrumbs, ol#LC_PathBreadcrumbs { border-top: solid 1px RGB(255, 255, 255); height: 20px; line-height: 20px; @@ -5606,148 +5700,136 @@ OL#MenuBreadcrumbs { margin: 0px 0px 30px 0px; padding-left: 10px; list-style-position: inside; - background: RGB(211, 206, 205) URL(images/TabMenuBG.png) repeat-x left - top; + background: url(/adm/lonIcons/lightGreyBG.png) repeat-x left top; } -OL#MenuBreadcrumbs li { - background: url(images/pfeil_white.png) no-repeat left center; +ol#LC_MenuBreadcrumbs li, ol#LC_PathBreadcrumbs li { +/* + background: url(/adm/lonIcons/arrow_white.png) no-repeat left center; +*/ display: inline; padding: 0px 0px 0px 10px; vertical-align: bottom; overflow:hidden; } -OL#MenuBreadcrumbs LI A { +ol#LC_MenuBreadcrumbs li a { text-decoration: none; font-size:90%; } - -h4.hcell { - padding: 3px 10px 3px 10px; - margin: 0px; - background: RGB(0, 118, 127); - color: white; - border: outset 1px; -} - -DIV.DivContentBoxSpecial -{ - border: solid 1px RGB(100, 100, 100); +ol#LC_PathBreadcrumbs li a{ + text-decoration:none; + font-size:100%; + font-weight:bold; } - -FIELDSET +.LC_ContentBoxSpecial { - /*width:78%;*/ -} -DIV.DivContentBox, -DIV.DivContentBoxSpecial { - width: 80%; - margin:10px; -} - -FIELDSET legend,DL DT { - font-weight: bold; - font-size: 110%; - /*padding-left: 0px;*/ -/* margin-left: 0px;*/ + border: solid 1px $lg_border_color; } -DIV.DivImportant { - background: url(images/important.png) no-repeat center top; - padding: 100px 10px 10px 10px; - width: 200px; - border: double 4px RGB(200, 200, 200); -} - - - -DL.ListStyleClean DT { +dl.LC_ListStyleClean dt { padding-right: 5px; display: table-header-group; } -DL.ListStyleClean DD { +dl.LC_ListStyleClean dd { display: table-row; } -.ListStyleClean, -.ListStyleSimple, -.ListStyleNormal, -.ListStyleNormal_Border, -.ListStyleSpecial +.LC_ListStyleClean, +.LC_ListStyleSimple, +.LC_ListStyleNormal, +.LC_ListStyleNormal_Border, +.LC_ListStyleSpecial { /*display:block; */ - width: 400px; list-style-position: inside; list-style-type: none; overflow: hidden; padding: 0px; } -.ListStyleClean li, -.ListStyleSimple li, -.ListStyleSimple DD, -.ListStyleNormal li, -.ListStyleNormal DD, -.ListStyleSpecial li, -.ListStyleSpecial DD +.LC_ListStyleSimple li, +.LC_ListStyleSimple dd, +.LC_ListStyleNormal li, +.LC_ListStyleNormal dd, +.LC_ListStyleSpecial li, +.LC_ListStyleSpecial dd { margin: 0px; padding: 5px 5px 5px 10px; clear: both; - /*display:block;*/ } -.ListStyleClean LI, -.ListStyleClean DD { +.LC_ListStyleClean li, +.LC_ListStyleClean dd { padding-top: 0px; padding-bottom: 0px; } -.ListStyleSimple DD, -.ListStyleSimple LI{ - border-bottom: solid 1px RGB(150, 150, 150); +.LC_ListStyleSimple dd, +.LC_ListStyleSimple li{ + border-bottom: solid 1px $lg_border_color; } -.ListStyleSpecial LI, -.ListStyleSpecial DD { +.LC_ListStyleSpecial li, +.LC_ListStyleSpecial dd { list-style-type: none; background-color: RGB(220, 220, 220); margin-bottom: 4px; } -table.SimpleTable *{ - padding:10px; +table.LC_SimpleTable { + margin:5px; + border:solid 1px $lg_border_color; } -table.SimpleTable td { - vertical-align:top; - border:solid 1px RGB(210,210,210); +table.LC_SimpleTable tr { + padding:0px; + border:solid 1px $lg_border_color; } -table.SimpleTable thead{ - background:rgb(210,210,210); +table.LC_SimpleTable thead{ + background:rgb(220,220,220); } -DIV.columnSection { +div.LC_columnSection { display: block; clear: both; overflow: hidden; margin:0px; } -DIV.columnSection>* { +div.LC_columnSection>* { float: left; margin: 10px 20px 10px 0px; overflow:hidden; } - -DIV.columnSection>FIELDSET, -DIV.columnSection>DIV.DivContentBox, -DIV.columnSection>DIV.DivContentBoxSpecial +div.LC_columnSection > .LC_ContentBox, +div.LC_columnSection > .LC_ContentBoxSpecial { - width: 480px; - + width: 400px; +} + +.ContentBoxSpecialTemplate +{ + border: solid 1px $lg_border_color; +} +.ContentBoxTemplate { + padding:10px; +} + +div.LC_columnSection > .ContentBoxTemplate, +div.LC_columnSection > .ContentBoxSpecialTemplate + { + width: 600px; + +} + +.clear{ + clear: both; + line-height: 0px; + font-size: 0px; + height: 0px; } .LC_loginpage_container { @@ -5763,11 +5845,19 @@ DIV.columnSection>DIV.DivContentBoxSpeci .LC_loginpage_loginContainer { float:left; - width:60%; + width: 182px; + border:1px solid #CCCCCC; + background-color:$loginbg; } +.LC_loginpage_loginContainer h2{ + margin-top:0; + display:block; + background:$bgcol; + color:$textcol; + padding-left:5px; +} .LC_loginpage_loginInfo { - margin-top:20px; margin-left:20px; float:left; width:30%; @@ -5775,26 +5865,19 @@ DIV.columnSection>DIV.DivContentBoxSpeci padding:10px; } +.LC_loginpage_loginDomain { + margin-right:20px; + width:20%; + float:left; + padding:10px; +} + .LC_loginpage_space { clear:both; margin-bottom:20px; border-bottom: 1px solid #CCCCCC; } -.LC_loginpage_fieldset{ - border: 1px solid #CCCCCC; - margin: 0 auto; -} - -.LC_loginpage_legend{ - padding: 2px; - margin: 0px; - font-size:14px; - font-weight:bold; -} - - - END } @@ -6058,11 +6141,22 @@ sub start_page { } if ($args->{'js_ready'}) { - $result = &js_ready($result); + $result = &js_ready($result); } if ($args->{'html_encode'}) { - $result = &html_encode($result); + $result = &html_encode($result); + } + + if (exists($args->{'bread_crumbs'})) { + &Apache::lonhtmlcommon::clear_breadcrumbs(); + if (ref($args->{'bread_crumbs'}) eq 'ARRAY') { + foreach my $crumb (@{$args->{'bread_crumbs'}}){ + &Apache::lonhtmlcommon::add_breadcrumb($crumb); + } + } + $result .= &Apache::lonhtmlcommon::breadcrumbs(); } + return $result; } @@ -6209,7 +6303,7 @@ sub simple_error_page { } sub start_data_table_empty_row { - $row_count[0]++; +# $row_count[0]++; return '<tr class="LC_empty_row" >'."\n";; } @@ -6825,19 +6919,35 @@ sub default_quota { if ($inststatus ne '') { my @statuses = split(/:/,$inststatus); foreach my $item (@statuses) { - if ($quotahash{'quotas'}{$item} ne '') { - if ($defquota eq '') { - $defquota = $quotahash{'quotas'}{$item}; - $settingstatus = $item; - } elsif ($quotahash{'quotas'}{$item} > $defquota) { - $defquota = $quotahash{'quotas'}{$item}; - $settingstatus = $item; + if (ref($quotahash{'quotas'}{'defaultquota'}) eq 'HASH') { + if ($quotahash{'quotas'}{'defaultquota'}{$item} ne '') { + if ($defquota eq '') { + $defquota = $quotahash{'quotas'}{'defaultquota'}{$item}; + $settingstatus = $item; + } elsif ($quotahash{'quotas'}{'defaultquota'}{$item} > $defquota) { + $defquota = $quotahash{'quotas'}{'defaultquota'}{$item}; + $settingstatus = $item; + } + } + } else { + if ($quotahash{'quotas'}{$item} ne '') { + if ($defquota eq '') { + $defquota = $quotahash{'quotas'}{$item}; + $settingstatus = $item; + } elsif ($quotahash{'quotas'}{$item} > $defquota) { + $defquota = $quotahash{'quotas'}{$item}; + $settingstatus = $item; + } } } } } if ($defquota eq '') { - $defquota = $quotahash{'quotas'}{'default'}; + if (ref($quotahash{'quotas'}{'defaultquota'}) eq 'HASH') { + $defquota = $quotahash{'quotas'}{'defaultquota'}{'default'}; + } else { + $defquota = $quotahash{'quotas'}{'default'}; + } $settingstatus = 'default'; } } else { @@ -7633,9 +7743,9 @@ sub upload_embedded { ' <a href="'.$url.'">'. $orig_uploaded_filename.'</a><br />'; } else { - $output .= '<font size="+2">'. + $output .= '<span class=\"LC_fontsize_large\">'. &mt('View embedded file: [_1]','<a href="'.$url.'">'. - $orig_uploaded_filename.'</a>').'</font><br />'; + $orig_uploaded_filename.'</a>').'</span><br />'; } } close($fh); @@ -7894,7 +8004,7 @@ sub upfile_select_html { # xml => &mt('HTML/XML'), ); my $Str = '<input type="file" name="upfile" size="50" />'. - '<br />Type: <select name="upfiletype">'; + '<br />'.&mt('Type').': <select name="upfiletype">'; foreach my $type (sort(keys(%Types))) { $Str .= '<option value="'.$type.'" >'.$Types{$type}."</option>\n"; } @@ -9318,7 +9428,9 @@ sub construct_course { 'policy.email', 'comment.email', 'pch.users.denied', - 'plc.users.denied'], + 'plc.users.denied', + 'hidefromcat', + 'categories'], $$crsudom,$$crsunum); } @@ -9776,6 +9888,11 @@ sub init_user_environment { } } + foreach my $tool ('aboutme','blog','portfolio') { + $userenv{'availabletools.'.$tool} = + &Apache::lonnet::usertools_access($username,$domain,$tool,'reload'); + } + $env{'user.environment'} = "$lonids/$cookie.id"; if (tie(my %disk_env,'GDBM_File',"$lonids/$cookie.id", @@ -9788,8 +9905,8 @@ sub init_user_environment { } untie(%disk_env); } else { - &Apache::lonnet::logthis("<font color=\"blue\">WARNING: ". - 'Could not create environment storage in lonauth: '.$!.'</font>'); + &Apache::lonnet::logthis("<span style=\"color:blue;\">WARNING: ". + 'Could not create environment storage in lonauth: '.$!.'</span>'); return 'error: '.$!; } } @@ -9814,7 +9931,7 @@ sub _add_to_env { # --- Get the symbolic name of a problem and the url sub get_symb { my ($request,$silent) = @_; - (my $url=$env{'form.url'}) =~ s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--; + (my $url=$env{'form.url'}) =~ s-^https?\://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--; my $symb=($env{'form.symb'} ne '' ? $env{'form.symb'} : (&Apache::lonnet::symbread($url))); if ($symb eq '') { if (!$silent) { @@ -9841,11 +9958,13 @@ sub get_annotation { } sub clean_symb { - my ($symb) = @_; + my ($symb,$delete_enc) = @_; &Apache::lonenc::check_decrypt(\$symb); my $enc = $env{'request.enc'}; - delete($env{'request.enc'}); + if ($delete_enc) { + delete($env{'request.enc'}); + } return ($symb,$enc); }