--- loncom/interface/loncommon.pm 2008/12/14 00:33:35 1.715 +++ loncom/interface/loncommon.pm 2009/04/25 20:22:07 1.796 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.715 2008/12/14 00:33:35 raeburn Exp $ +# $Id: loncommon.pm,v 1.796 2009/04/25 20:22:07 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -406,9 +406,9 @@ sub studentbrowser_javascript { || ($env{'request.role'}=~/^(au|dc|su)/) ) { return ''; } return (<<'ENDSTDBRW'); -<script type="text/javascript" language="Javascript" > +<script type="text/javascript" language="Javascript"> var stdeditbrowser; - function openstdbrowser(formname,uname,udom,roleflag,ignorefilter) { + function openstdbrowser(formname,uname,udom,roleflag,ignorefilter,courseadvonly) { var url = '/adm/pickstudent?'; var filter; if (!ignorefilter) { @@ -422,6 +422,7 @@ sub studentbrowser_javascript { url += 'form=' + formname + '&unameelement='+uname+ '&udomelement='+udom; if (roleflag) { url+="&roles=1"; } + if (courseadvonly) { url+="&courseadvonly=1"; } var title = 'Student_Browser'; var options = 'scrollbars=1,resizable=1,menubar=0'; options += ',width=700,height=600'; @@ -433,26 +434,33 @@ ENDSTDBRW } sub selectstudent_link { - my ($form,$unameele,$udomele)=@_; + my ($form,$unameele,$udomele,$courseadvonly)=@_; + my $callargs = "'".$form."','".$unameele."','".$udomele."'"; if ($env{'request.course.id'}) { if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'}) && !&Apache::lonnet::allowed('srm',$env{'request.course.id'}. '/'.$env{'request.course.sec'})) { return ''; } - return "<a href='".'javascript:openstdbrowser("'.$form.'","'.$unameele. - '","'.$udomele.'");'."'>".&mt('Select User')."</a>"; + if ($courseadvonly) { + $callargs .= ",'',1,1"; + } + return '<span class="LC_nobreak">'. + '<a href="javascript:openstdbrowser('.$callargs.');">'. + &mt('Select User').'</a></span>'; } if ($env{'request.role'}=~/^(au|dc|su)/) { - return "<a href='".'javascript:openstdbrowser("'.$form.'","'.$unameele. - '","'.$udomele.'",1);'."'>".&mt('Select User')."</a>"; + $callargs .= ",1"; + return '<span class="LC_nobreak">'. + '<a href="javascript:openstdbrowser('.$callargs.');">'. + &mt('Select User').'</a></span>'; } return ''; } sub authorbrowser_javascript { return <<"ENDAUTHORBRW"; -<script type="text/javascript"> +<script type="text/javascript" language="JavaScript"> var stdeditbrowser; function openauthorbrowser(formname,udom) { @@ -473,7 +481,7 @@ sub coursebrowser_javascript { my ($domainfilter,$sec_element,$formname)=@_; my $crs_or_grp_alert = &mt('Please select the type of LON-CAPA entity - Course or Group - for which you wish to add/modify a user role'); my $output = ' -<script type="text/javascript"> +<script type="text/javascript" language="JavaScript"> var stdeditbrowser;'."\n"; $output .= <<"ENDSTDBRW"; function opencrsbrowser(formname,uname,udom,desc,extra_element,multflag,crstype) { @@ -602,8 +610,13 @@ function setSect(sectionlist) { sub selectcourse_link { my ($form,$unameele,$udomele,$desc,$extra_element,$multflag,$selecttype)=@_; - return "<a href='".'javascript:opencrsbrowser("'.$form.'","'.$unameele. - '","'.$udomele.'","'.$desc.'","'.$extra_element.'","'.$multflag.'","'.$selecttype.'");'."'>".&mt('Select Course')."</a>"; + return '<span class="LC_nobreak">' + ."<a href='" + .'javascript:opencrsbrowser("'.$form.'","'.$unameele + .'","'.$udomele.'","'.$desc.'","'.$extra_element + .'","'.$multflag.'","'.$selecttype.'");' + ."'>".&mt('Select Course').'</a>' + .'</span>'; } sub selectauthor_link { @@ -710,6 +723,21 @@ sub select_datelocale { return $output; } +sub select_language { + my ($name,$selected,$includeempty) = @_; + my %langchoices; + if ($includeempty) { + %langchoices = ('' => 'No language preference'); + } + foreach my $id (&languageids()) { + my $code = &supportedlanguagecode($id); + if ($code) { + $langchoices{$code} = &plainlanguagedescription($id); + } + } + return &select_form($selected,$name,%langchoices); +} + =pod =item * &linked_select_forms(...) @@ -796,7 +824,7 @@ sub linked_select_forms { my $first = "document.$formname.$firstselectname"; # output the javascript to do the changing my $result = ''; - $result.="<script type=\"text/javascript\">\n"; + $result.='<script type="text/javascript" language="JavaScript">'."\n"; $result.="var select2data = new Object();\n"; $" = '","'; my $debug = ''; @@ -923,19 +951,23 @@ sub help_open_topic { } # Add the text - if ($text ne "") { - $template .= - "<table bgcolor='#3333AA' cellspacing='1' cellpadding='1' border='0'><tr>". - "<td bgcolor='#5555FF'><a target=\"_top\" href=\"$link\"><span style=\"color:#FFFFFF;font-size:10pt;\">$text</span></a>"; + if ($text ne "") { + $template.='<span class="LC_help_open_topic">' + .'<a target="_top" href="'.$link.'">' + .$text.'</a>'; } - # Add the graphic + # (Always) Add the graphic my $title = &mt('Online Help'); my $helpicon=&lonhttpdurl("/adm/help/help.png"); - $template .= <<"ENDTEMPLATE"; - <a target="_top" href="$link" title="$title"><img src="$helpicon" border="0" alt="(Help: $topic)" /></a> -ENDTEMPLATE - if ($text ne '') { $template.='</td></tr></table>' }; + $template.=' <a target="_top" href="'.$link.'" title="'.$title.'">' + .'<img src="'.$helpicon.'" border="0"' + .' alt="'.&mt('Help: [_1]',$topic).'"' + .' title="'.$title.'"' + .' /></a>'; + if ($text ne "") { + $template.='</span>'; + } return $template; } @@ -943,24 +975,31 @@ 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) . - '</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>'; + if ($topic) { + $addOther = '<span>'.&Apache::loncommon::help_open_topic($topic,&mt($text), + undef, undef, 600). + '</span> '; + } + $out = '<span>' # Start cheatsheet + .$addOther + .'<span>' + .&Apache::loncommon::help_open_topic('Greek_Symbols',&mt('Greek Symbols'), + undef,undef,600) + .'</span> <span>' + .&Apache::loncommon::help_open_topic('Other_Symbols',&mt('Other Symbols'), + undef,undef,600) + .'</span>'; + unless ($not_author) { + $out .= ' <span>' + .&Apache::loncommon::help_open_topic('Authoring_Output_Tags',&mt('Output Tags'), + undef,undef,600) + .'</span>'; + } + $out .= '</span>'; # End cheatsheet + return $out; } sub general_help { @@ -1629,7 +1668,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}; @@ -1740,7 +1779,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 +1788,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; @@ -2109,14 +2154,14 @@ sub authform_kerberos { $autharg,$jscall); my ($authnum,%can_assign) = &get_assignable_auth($in{'domain'}); if ($in{'kerb_def_auth'} eq 'krb5') { - $check5 = ' checked="on"'; + $check5 = ' checked="checked"'; } else { - $check4 = ' checked="on"'; + $check4 = ' checked="checked"'; } $krbarg = $in{'kerb_def_dom'}; if (defined($in{'curr_authtype'})) { if ($in{'curr_authtype'} eq 'krb') { - $krbcheck = ' checked="on"'; + $krbcheck = ' checked="checked"'; if (defined($in{'mode'})) { if ($in{'mode'} eq 'modifyuser') { $krbcheck = ''; @@ -2124,10 +2169,10 @@ sub authform_kerberos { } if (defined($in{'curr_kerb_ver'})) { if ($in{'curr_krb_ver'} eq '5') { - $check5 = ' checked="on"'; + $check5 = ' checked="checked"'; $check4 = ''; } else { - $check4 = ' checked="on"'; + $check4 = ' checked="checked"'; $check5 = ''; } } @@ -2148,7 +2193,7 @@ sub authform_kerberos { } } else { if ($authnum == 1) { - $authtype = '<input type="hidden" name="login" value="krb">'; + $authtype = '<input type="hidden" name="login" value="krb" />'; } } if (!$can_assign{'krb4'} && !$can_assign{'krb5'}) { @@ -2157,7 +2202,7 @@ sub authform_kerberos { if (defined($in{'mode'})) { if ($in{'mode'} eq 'modifycourse') { if ($authnum == 1) { - $authtype = '<input type="hidden" name="login" value="krb">'; + $authtype = '<input type="hidden" name="login" value="krb" />'; } } } @@ -2218,7 +2263,7 @@ sub authform_internal{ if (defined($in{'curr_authtype'})) { if ($in{'curr_authtype'} eq 'int') { if ($can_assign{'int'}) { - $intcheck = 'checked="on" '; + $intcheck = 'checked="checked" '; if (defined($in{'mode'})) { if ($in{'mode'} eq 'modifyuser') { $intcheck = ''; @@ -2234,7 +2279,7 @@ sub authform_internal{ } } else { if ($authnum == 1) { - $authtype = '<input type="hidden" name="login" value="int">'; + $authtype = '<input type="hidden" name="login" value="int" />'; } } if (!$can_assign{'int'}) { @@ -2243,7 +2288,7 @@ sub authform_internal{ if (defined($in{'mode'})) { if ($in{'mode'} eq 'modifycourse') { if ($authnum == 1) { - $authtype = '<input type="hidden" name="login" value="int">'; + $authtype = '<input type="hidden" name="login" value="int" />'; } } } @@ -2273,7 +2318,7 @@ sub authform_local{ if (defined($in{'curr_authtype'})) { if ($in{'curr_authtype'} eq 'loc') { if ($can_assign{'loc'}) { - $loccheck = 'checked="on" '; + $loccheck = 'checked="checked" '; if (defined($in{'mode'})) { if ($in{'mode'} eq 'modifyuser') { $loccheck = ''; @@ -2289,7 +2334,7 @@ sub authform_local{ } } else { if ($authnum == 1) { - $authtype = '<input type="hidden" name="login" value="loc">'; + $authtype = '<input type="hidden" name="login" value="loc" />'; } } if (!$can_assign{'loc'}) { @@ -2298,7 +2343,7 @@ sub authform_local{ if (defined($in{'mode'})) { if ($in{'mode'} eq 'modifycourse') { if ($authnum == 1) { - $authtype = '<input type="hidden" name="login" value="loc">'; + $authtype = '<input type="hidden" name="login" value="loc" />'; } } } @@ -2327,7 +2372,7 @@ sub authform_filesystem{ if (defined($in{'curr_authtype'})) { if ($in{'curr_authtype'} eq 'fsys') { if ($can_assign{'fsys'}) { - $fsyscheck = 'checked="on" '; + $fsyscheck = 'checked="checked" '; if (defined($in{'mode'})) { if ($in{'mode'} eq 'modifyuser') { $fsyscheck = ''; @@ -2340,7 +2385,7 @@ sub authform_filesystem{ } } else { if ($authnum == 1) { - $authtype = '<input type="hidden" name="login" value="fsys">'; + $authtype = '<input type="hidden" name="login" value="fsys" />'; } } if (!$can_assign{'fsys'}) { @@ -2349,7 +2394,7 @@ sub authform_filesystem{ if (defined($in{'mode'})) { if ($in{'mode'} eq 'modifycourse') { if ($authnum == 1) { - $authtype = '<input type="hidden" name="login" value="fsys">'; + $authtype = '<input type="hidden" name="login" value="fsys" />'; } } } @@ -2717,6 +2762,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 @@ -2761,7 +2843,7 @@ sub aboutmewrapper { return; } return '<a href="/adm/'.$domain.'/'.$username.'/aboutme"'. - ($target?' target="$target"':'').' title="'.&mt("View this user's personal page").'">'.$link.'</a>'; + ($target?' target="$target"':'').' title="'.&mt("View this user's personal information page").'">'.$link.'</a>'; } # ------------------------------------------------------------ Syllabus Wrapper @@ -2793,6 +2875,27 @@ sub track_student_link { &help_open_topic('View_recent_activity'); } +sub slot_reservations_link { + my ($linktext,$sname,$sdom,$target) = @_; + my $link ="/adm/slotrequest?command=showresv&origin=aboutme"; + my $title = 'View slot reservation history'; + if (defined($sname) && $sname !~ /^\s*$/ && + defined($sdom) && $sdom !~ /^\s*$/) { + $link .= "&uname=$sname&udom=$sdom"; + $title .= ' of this student'; + } + if (defined($target) && $target !~ /^\s*$/) { + $target = qq{target="$target"}; + } else { + $target = ''; + } + $title = &mt($title); + $linktext = &mt($linktext); + return qq{<a href="$link" title="$title" $target>$linktext</a>}; +# FIXME uncomment when help item created: &help_open_topic('Slot_Reservation_History'); + +} + # ===================================================== Display a student photo @@ -3030,6 +3133,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 ## ############################################################### @@ -3168,7 +3294,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) || @@ -3745,7 +3871,7 @@ sub blocking_status { &Apache::lonnet::coursedescription($course); $coursedesc = $courseinfo{'description'}; } - $category = "Group files in the course '$coursedesc'"; + $category = "Group portfolio in the course '$coursedesc'"; } else { $category = 'Portfolio files belonging to '; if ($env{'user.name'} eq 'public' && @@ -4174,7 +4300,7 @@ $realm </td> ENDROLE - my $titleinfo = '<span class="LC_title_bar_title">'.$title.'</span>'; + my $titleinfo = '<h1>'.$title.'</h1>'; if ($customtitle) { $titleinfo = $customtitle; } @@ -4264,8 +4390,8 @@ ENDROLE return(<<ENDBODY); $bodytag <table id="LC_title_bar" class="LC_with_remote"> -<tr><td class="LC_title_bar_role_logo">$upperleft</td> - <td class="LC_title_bar_domain_logo">$messages </td> +<tr><td>$upperleft</td> + <td>$messages </td> </tr> <tr><td>$titleinfo $dc_info $menu</td> $roleinfo @@ -4382,6 +4508,7 @@ sub standard_css { my $img = &designparm($function.'.img', $domain); my $tabbg = &designparm($function.'.tabbg', $domain); my $font = &designparm($function.'.font', $domain); +#second colour for later usage my $sidebg = &designparm($function.'.sidebg',$domain); my $pgbg_or_bgcolor = $bgcolor || @@ -4420,15 +4547,22 @@ sub standard_css { return <<END; -body{ - font-family: $sans; - line-height:130%; - font-size:0.83em; - color:$font; - } -a:link, a:visited { font-size:100%; } +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 +} -a:focus { color: red; background: yellow } table.thinborder, table.thinborder tr th { border-style: solid; @@ -4436,24 +4570,47 @@ table.thinborder tr th { border-color: $lg_border_color; background: $tabbg; } + table.thinborder tr td { border-style: solid; border-width: 1px; border-color: $lg_border_color; } -form, .inline { display: inline; } -.center { text-align: center; } -.left { text-align:left; } -.right {text-align:right;} -.middle {vertical-align:middle;} -.top {vertical-align:top;} -.bottom {vertical-align:bottom;} -.LC_filename {font-family: $mono; white-space:pre;} +form, .inline { + display: inline; +} + +.LC_right { + text-align:right; +} + +.LC_middle { + vertical-align:middle; +} + +/* just for tests */ +.LC_400Box {width:400px; } +/* end */ + +.LC_filename { + font-family: $mono; + white-space:pre; +} + +.LC_fileicon { + border: none; + height: 1.3em; + vertical-align: text-bottom; + margin-right: 0.3em; + text-decoration:none; +} + .LC_error { color: red; font-size: larger; } + .LC_warning, .LC_diff_removed { color: red; @@ -4464,25 +4621,62 @@ form, .inline { display: inline; } .LC_diff_added { color: green; } + .LC_unknown { color: yellow; } .LC_icon { - border: 0px; + border: none; + vertical-align: middle; } + .LC_indexer_icon { border: 0px; height: 22px; } + .LC_docs_spacer { width: 25px; height: 1px; - border: 0px; + border: none; } .LC_internal_info { - color: #999; + color: #999999; +} + +.LC_discussion { + background: $tabbg; + border: 1px solid black; + margin: 2px; +} + +.LC_disc_action_links_bar { + background: $tabbg; + font-family: $sans; + border: 0px; + margin: 4px; +} + +.LC_disc_action_left { + text-align: left; +} + +.LC_disc_action_right { + text-align: right; +} + +.LC_disc_new_item { + background: white; + border: 2px solid red; + margin: 2px; +} + +.LC_disc_old_item { + background: white; + border: 1px solid black; + margin: 2px; } table.LC_pastsubmission { @@ -4490,7 +4684,9 @@ table.LC_pastsubmission { margin: 2px; } -table#LC_top_nav, table#LC_menubuttons,table#LC_nav_location { +table#LC_top_nav, +table#LC_menubuttons, +table#LC_nav_location { width: 100%; background: $pgbg; border: 2px; @@ -4498,18 +4694,19 @@ table#LC_top_nav, table#LC_menubuttons,t padding: 0px; } -table#LC_title_bar, table.LC_breadcrumbs, +table#LC_title_bar, +table.LC_breadcrumbs, table#LC_title_bar.LC_with_remote { width: 100%; border-color: $pgbg; border-style: solid; border-width: $border; - background: $pgbg; font-family: $sans; border-collapse: collapse; padding: 0px; } + table.LC_docs_path { width: 100%; border: 0; @@ -4522,31 +4719,35 @@ table.LC_docs_path { table#LC_title_bar td { background: $tabbg; } -table#LC_title_bar td.LC_title_bar_who { + +table#LC_title_bar .LC_title_bar_who { background: $tabbg; color: $font; font: small $sans; text-align: right; + margin: 0px; } -span.LC_metadata { - font-family: $sans; + +table#LC_title_bar .LC_title_bar_name { + margin: 0px; } -span.LC_title_bar_title { - font: bold x-large $sans; + +table#LC_title_bar .LC_title_bar_role { + margin: 0px; } -table#LC_title_bar td.LC_title_bar_domain_logo { - background: $sidebg; - text-align: right; - padding: 0px; + +table#LC_title_bar .LC_title_bar_realm { + margin: 0px; } -table#LC_title_bar td.LC_title_bar_role_logo { - background: $sidebg; - padding: 0px; + +span.LC_metadata { + font-family: $sans; } table#LC_menubuttons img{ border: 0px; } + table#LC_top_nav td { background: $tabbg; border: 0px; @@ -4554,34 +4755,43 @@ table#LC_top_nav td { vertical-align:top; padding:2px 5px 2px 5px; } -table#LC_top_nav td a, div#LC_top_nav a { + +table#LC_top_nav td a, +div#LC_top_nav a { color: $font; font-family: $sans; } + 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: 0px; 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; } -table.LC_breadcrumbs td, table.LC_docs_path td { + +table.LC_breadcrumbs td, +table.LC_docs_path td { background: $tabbg; color: $font; font-family: $sans; font-size: smaller; } + table.LC_breadcrumbs td.LC_breadcrumbs_component, table.LC_docs_path td.LC_docs_path_component { background: $tabbg; @@ -4590,33 +4800,27 @@ table.LC_docs_path td.LC_docs_path_compo font-size: larger; text-align: right; } + td.LC_table_cell_checkbox { text-align: center; } + table#LC_mainmenu td.LC_mainmenu_column { vertical-align: top; } -.LC_fontsize_small -{ +.LC_fontsize_small { font-size: 70%; } -.LC_fontsize_medium -{ +.LC_fontsize_medium { font-size: 85%; } -.LC_fontsize_large -{ +.LC_fontsize_large { font-size: 120%; } -.LC_fontcolor_red -{ - color: #FF0000; -} - .LC_menubuttons_inline_text { color: $font; font-family: $sans; @@ -4627,7 +4831,7 @@ table#LC_mainmenu td.LC_mainmenu_column .LC_menubuttons_link { text-decoration: none; } -/*2008--9-5: new menu style sheet.Changed category*/ + .LC_menubuttons_category { color: $font; background: $pgbg; @@ -4637,22 +4841,20 @@ table#LC_mainmenu td.LC_mainmenu_column } td.LC_menubuttons_text { - color: $font; + color: $font; } - - .LC_current_location { font-family: $sans; background: $tabbg; } + .LC_new_mail { font-family: $sans; background: $tabbg; font-weight: bold; } - .LC_dropadd_labeltext { font-family: $sans; text-align: right; @@ -4676,57 +4878,71 @@ table.LC_aboutme_port { border-collapse: collapse; border-spacing: 0px; } -table.LC_data_table, table.LC_mail_list { + +table.LC_data_table, +table.LC_mail_list { border: 1px solid #000000; border-collapse: separate; border-spacing: 1px; background: $pgbg; } + .LC_data_table_dense { font-size: small; } + table.LC_nested_outer { border: 1px solid #000000; border-collapse: collapse; border-spacing: 0px; width: 100%; } + table.LC_nested { border: 0px; border-collapse: collapse; border-spacing: 0px; width: 100%; } -table.LC_data_table tr th, table.LC_calendar tr th, table.LC_mail_list tr th, + +table.LC_data_table tr th, +table.LC_calendar tr th, +table.LC_mail_list tr th, table.LC_prior_tries tr th { font-weight: bold; background-color: $data_table_head; font-size:90%; } + table.LC_data_table tr.LC_info_row > td { - background-color: #CCC; + background-color: #CCCCCC; font-weight: bold; text-align: left; } -table.LC_data_table tr.LC_odd_row > td, + +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; } + table.LC_data_table tr td.LC_leftcol_header { background-color: $data_table_head; font-weight: bold; } + table.LC_data_table tr.LC_empty_row td, table.LC_nested tr.LC_empty_row td { background-color: #FFFFFF; @@ -4735,15 +4951,18 @@ table.LC_nested tr.LC_empty_row td { text-align: center; padding: 8px; } + table.LC_nested tr.LC_empty_row td { padding: 4ex } + table.LC_nested_outer tr th { font-weight: bold; background-color: $data_table_head; font-size: small; border-bottom: 1px solid #000000; } + table.LC_nested_outer tr td.LC_subheader { background-color: $data_table_head; font-weight: bold; @@ -4751,20 +4970,24 @@ table.LC_nested_outer tr td.LC_subheader border-bottom: 1px solid #000000; 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; } + table.LC_nested tr.LC_info_row td.LC_left_item, 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, table.LC_nested tr.LC_info_row td.LC_right_item, table.LC_nested tr.LC_odd_row td.LC_right_item, @@ -4773,7 +4996,7 @@ 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 { @@ -4784,7 +5007,7 @@ table.LC_createuser tr.LC_section_row td } table.LC_createuser tr.LC_info_row td { - background-color: #CCC; + background-color: #CCCCCC; font-weight: bold; text-align: center; } @@ -4793,16 +5016,20 @@ table.LC_calendar { border: 1px solid #000000; border-collapse: collapse; } + table.LC_calendar_pickdate { font-size: xx-small; } + table.LC_calendar tr td { border: 1px solid #000000; vertical-align: top; } + table.LC_calendar tr td.LC_calendar_day_empty { background-color: $data_table_dark; } + table.LC_calendar tr td.LC_calendar_day_current { background-color: $data_table_highlight; } @@ -4810,47 +5037,60 @@ table.LC_calendar tr td.LC_calendar_day_ table.LC_mail_list tr.LC_mail_new { background-color: $mail_new; } + 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; } + table.LC_mail_list tr.LC_mail_read:hover { background-color: $mail_read_hover; } + table.LC_mail_list tr.LC_mail_replied { background-color: $mail_replied; } + table.LC_mail_list tr.LC_mail_replied:hover { background-color: $mail_replied_hover; } + table.LC_mail_list tr.LC_mail_other { background-color: $mail_other; } + table.LC_mail_list tr.LC_mail_other:hover { background-color: $mail_other_hover; } -table.LC_mail_list tr.LC_mail_even { -} -table.LC_mail_list tr.LC_mail_odd { -} table.LC_data_table tr > td.LC_browser_file, table.LC_data_table tr > td.LC_browser_file_published { background: #CCFF88; } + table.LC_data_table tr > td.LC_browser_file_locked, table.LC_data_table tr > td.LC_browser_file_unpublished { background: #FFAA99; } + table.LC_data_table tr > td.LC_browser_file_obsolete { background: #AAAAAA; } + table.LC_data_table tr > td.LC_browser_file_modified, table.LC_data_table tr > td.LC_browser_file_metamodified { background: #FFFF77; } + table.LC_data_table tr.LC_browser_folder > td { background: #CCCCFF; } @@ -4858,18 +5098,23 @@ table.LC_data_table tr.LC_browser_folder table.LC_data_table tr > td.LC_roles_is { /* background: #77FF77; */ } + table.LC_data_table tr > td.LC_roles_future { background: #FFFF77; } + table.LC_data_table tr > td.LC_roles_will { background: #FFAA77; } + table.LC_data_table tr > td.LC_roles_expired { background: #FF7777; } + table.LC_data_table tr > td.LC_roles_will_not { background: #AAFF77; } + table.LC_data_table tr > td.LC_roles_selected { background: #11CC55; } @@ -4883,41 +5128,51 @@ span.LC_parm_menu_item { font-size: larger; font-family: $sans; } + span.LC_parm_scope_all { color: red; } + span.LC_parm_scope_folder { color: green; } + span.LC_parm_scope_resource { color: orange; } + span.LC_parm_part { color: blue; } + span.LC_parm_folder, span.LC_parm_symb { font-size: x-small; font-family: $mono; color: #AAAAAA; } -td.LC_parm_overview_level_menu, td.LC_parm_overview_map_menu, -td.LC_parm_overview_parm_selectors, td.LC_parm_overview_parm_restrictions { +td.LC_parm_overview_level_menu, +td.LC_parm_overview_map_menu, +td.LC_parm_overview_parm_selectors, +td.LC_parm_overview_restrictions { border: 1px solid black; border-collapse: collapse; } + table.LC_parm_overview_restrictions td { border-width: 1px 4px 1px 4px; border-style: solid; border-color: $pgbg; text-align: center; } + table.LC_parm_overview_restrictions th { background: $tabbg; border-width: 1px 4px 1px 4px; border-style: solid; border-color: $pgbg; } + table#LC_helpmenu { border: 0px; height: 55px; @@ -4928,6 +5183,7 @@ table#LC_helpmenu fieldset legend { font-size: larger; font-weight: bold; } + table#LC_helpmenu_links { width: 100%; border: 1px solid black; @@ -4935,6 +5191,7 @@ table#LC_helpmenu_links { padding: 0px; border-spacing: 1px; } + table#LC_helpmenu_links tr td { padding: 1px; background: $tabbg; @@ -4942,11 +5199,13 @@ table#LC_helpmenu_links tr td { font-weight: bold; } -table#LC_helpmenu_links a:link, table#LC_helpmenu_links a:visited, +table#LC_helpmenu_links a:link, +table#LC_helpmenu_links a:visited, table#LC_helpmenu_links a:active { text-decoration: none; color: $font; } + table#LC_helpmenu_links a:hover { text-decoration: underline; color: $vlink; @@ -4956,27 +5215,33 @@ table#LC_helpmenu_links a:hover { border: 1px solid #339933; margin: -1px; } + .LC_chrt_popup_up { border: 1px solid yellow; margin: -1px; } + .LC_chrt_popup { border: 1px solid #8888FF; background: #CCCCFF; } + table.LC_pick_box { border-collapse: separate; background: white; border: 1px solid black; border-spacing: 1px; } + table.LC_pick_box td.LC_pick_box_title { background: $tabbg; font-weight: bold; text-align: right; + vertical-align: top; width: 184px; padding: 8px; } + table.LC_pick_box td.LC_selfenroll_pick_box_title { background: $tabbg; font-weight: bold; @@ -4989,28 +5254,34 @@ table.LC_pick_box td.LC_pick_box_value { text-align: left; padding: 8px; } + table.LC_pick_box td.LC_pick_box_select { text-align: left; padding: 8px; } + table.LC_pick_box td.LC_pick_box_separator { padding: 0px; height: 1px; background: black; } + table.LC_pick_box td.LC_pick_box_submit { text-align: right; } + table.LC_pick_box td.LC_evenrow_value { text-align: left; padding: 8px; background-color: $data_table_light; } + table.LC_pick_box td.LC_oddrow_value { text-align: left; padding: 8px; background-color: $data_table_light; } + table.LC_helpform_receipt { width: 620px; border-collapse: separate; @@ -5018,6 +5289,7 @@ table.LC_helpform_receipt { border: 1px solid black; border-spacing: 1px; } + table.LC_helpform_receipt td.LC_pick_box_title { background: $tabbg; font-weight: bold; @@ -5025,48 +5297,58 @@ table.LC_helpform_receipt td.LC_pick_box width: 184px; padding: 8px; } + table.LC_helpform_receipt td.LC_evenrow_value { text-align: left; padding: 8px; background-color: $data_table_light; } + table.LC_helpform_receipt td.LC_oddrow_value { text-align: left; padding: 8px; background-color: $data_table_light; } + table.LC_helpform_receipt td.LC_pick_box_separator { padding: 0px; height: 1px; background: black; } + span.LC_helpform_receipt_cat { font-weight: bold; } + table.LC_group_priv_box { background: white; border: 1px solid black; border-spacing: 1px; } + table.LC_group_priv_box td.LC_pick_box_title { background: $tabbg; font-weight: bold; text-align: right; width: 184px; } + table.LC_group_priv_box td.LC_groups_fixed { background: $data_table_light; text-align: center; } + table.LC_group_priv_box td.LC_groups_optional { background: $data_table_dark; text-align: center; } + table.LC_group_priv_box td.LC_groups_functionality { background: $data_table_darker; text-align: center; font-weight: bold; } + table.LC_group_priv td { text-align: left; padding: 0px; @@ -5077,12 +5359,15 @@ table.LC_notify_front_page { border: 1px solid black; padding: 8px; } + table.LC_notify_front_page td { padding: 8px; } + .LC_navbuttons { margin: 2ex 0ex 2ex 0ex; } + .LC_topic_bar { font-family: $sans; font-weight: bold; @@ -5091,34 +5376,42 @@ table.LC_notify_front_page td { vertical-align: middle; margin: 2ex 0ex 2ex 0ex; } + .LC_topic_bar span { vertical-align: middle; } + .LC_topic_bar img { vertical-align: bottom; } + table.LC_course_group_status { margin: 20px; } + table.LC_status_selector td { vertical-align: top; text-align: center; padding: 4px; } + table.LC_descriptive_input td.LC_description { vertical-align: top; text-align: right; font-weight: bold; } + div.LC_feedback_link { clear: both; background: white; - width: 100%; + width: 100%; } + span.LC_feedback_link { background: $feedback_link_bg; font-size: larger; } + span.LC_message_link { background: $feedback_link_bg; font-size: larger; @@ -5137,33 +5430,49 @@ table.LC_prior_tries td { } .LC_answer_correct { - background: #AAFFAA; - color: black; + background: lightgreen; + font-family: $sans; + color: darkgreen; + padding: 6px; } + .LC_answer_charged_try { - background: #FFAAAA ! important; - color: black; + background: lightred; + font-family: $sans; + color: darkred; + padding: 6px; } -.LC_answer_not_charged_try, + +.LC_answer_not_charged_try, .LC_answer_no_grade, .LC_answer_late { - background: #FFFFAA; + background: lightyellow; + font-family: $sans; color: black; + padding: 6px; } + .LC_answer_previous { - background: #AAAAFF; - color: black; + background: lightblue; + font-family: $sans; + color: darkblue; + padding: 6px; } + .LC_answer_no_message { background: #FFFFFF; + font-family: $sans; color: black; + padding: 6px; } + .LC_answer_unknown { background: orange; + font-family: $sans; color: black; + padding: 6px; } - span.LC_prior_numerical, span.LC_prior_string, span.LC_prior_custom, @@ -5182,15 +5491,19 @@ table.LC_prior_option { width: 100%; border-collapse: collapse; } -table.LC_prior_rank, table.LC_prior_match { + +table.LC_prior_rank, +table.LC_prior_match { border-collapse: collapse; } + table.LC_prior_option tr td, table.LC_prior_rank tr td, table.LC_prior_match tr td { border: 1px solid #000000; } +td.LC_nobreak, span.LC_nobreak { white-space: nowrap; } @@ -5215,13 +5528,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; @@ -5236,15 +5542,19 @@ table.LC_docs_documents td.LC_docs_docum background: #DDDDDD; font-size: x-small; } + .LC_docs_copy { color: #000099; } + .LC_docs_cut { color: #550044; } + .LC_docs_rename { color: #009900; } + .LC_docs_remove { color: #990000; } @@ -5258,6 +5568,7 @@ table.LC_docs_documents td.LC_docs_docum .LC_docs_editor td.LC_docs_entry_icon { background: #FFFFBB; } + .LC_docs_editor td.LC_docs_entry_parameter { background: #BBBBFF; font-size: x-small; @@ -5274,6 +5585,7 @@ table.LC_docs_adddocs th { table.LC_sty_begin { background: #BBFFBB; } + table.LC_sty_end { background: #FFBBBB; } @@ -5294,7 +5606,7 @@ table.LC_double_column tr td.LC_left_col table.LC_double_column tr td.LC_right_col { top: 2px; - right: 2px; + right: 2px; width: 47%; vertical-align: top; } @@ -5318,17 +5630,18 @@ div.LC_clear_float_footer { clear: both; } - 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; } + div.LC_grade_show_user_odd_row div.LC_grade_user_name { background: #DDEEDD; } @@ -5342,6 +5655,7 @@ div.LC_grade_assign { width: 99%; background: #FFFFFF; } + div.LC_grade_show_problem_header, div.LC_grade_submissions_header, div.LC_grade_message_center_header, @@ -5349,6 +5663,7 @@ div.LC_grade_assign_header { font-weight: bold; font-size: large; } + div.LC_grade_show_problem_problem, div.LC_grade_submissions_body, div.LC_grade_message_center_body, @@ -5357,6 +5672,7 @@ div.LC_grade_assign_body { width: 99%; background: #FFFFFF; } + span.LC_grade_check_note { font-weight: normal; font-size: medium; @@ -5368,16 +5684,19 @@ span.LC_grade_check_note { table.LC_scantron_action { width: 100%; } + table.LC_scantron_action tr th { font-weight:bold; font-style:normal; } -.LC_edit_problem_header, + +.LC_edit_problem_header, div.LC_edit_problem_footer { font-weight: normal; font-size: medium; margin: 2px; } + div.LC_edit_problem_header, div.LC_edit_problem_header div, div.LC_edit_problem_footer, @@ -5386,17 +5705,20 @@ div.LC_edit_problem_editxml_header, div.LC_edit_problem_editxml_header div { margin-top: 5px; } + div.LC_edit_problem_header_edit_row { background: $tabbg; padding: 3px; margin-bottom: 5px; } + div.LC_edit_problem_header_title { font-weight: bold; font-size: larger; background: $tabbg; padding: 3px; } + table.LC_edit_problem_header_title { font-size: larger; font-weight: bold; @@ -5404,7 +5726,6 @@ table.LC_edit_problem_header_title { border-color: $pgbg; border-style: solid; border-width: $border; - background: $tabbg; border-collapse: collapse; padding: 0px @@ -5414,10 +5735,12 @@ div.LC_edit_problem_discards { float: left; padding-bottom: 5px; } + div.LC_edit_problem_saves { float: right; padding-bottom: 5px; } + hr.LC_edit_problem_divide { clear: both; color: $tabbg; @@ -5425,6 +5748,7 @@ hr.LC_edit_problem_divide { height: 3px; border: 0px; } + img.stift{ border-width:0; vertical-align:middle; @@ -5433,13 +5757,13 @@ img.stift{ table#LC_mainmenu{ margin-top:10px; width:80%; - } table#LC_mainmenu td.LC_mainmenu_col_fieldset{ vertical-align: top; width: 45%; } + .LC_mainmenu_fieldset_category { color: $font; background: $pgbg; @@ -5448,6 +5772,10 @@ table#LC_mainmenu td.LC_mainmenu_col_fie font-weight: bold; } +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. @@ -5456,115 +5784,171 @@ table#LC_mainmenu td.LC_mainmenu_col_fie # --------------------------*/ a:hover, -ol.smallMenu a:hover, -ol#MenuBreadcrumbs a:hover, -ul#TabMainMenuContent a:hover, -.FormSectionClearButton input: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; } -h1 { - padding:5px 10px 5px 0px; +h1 { + padding:5px 10px 5px 20px; line-height:130%; } -h2,h3,h4,h5,h6 -{ -margin:5px 0px 5px 0px; -line-height:130%; +h2,h3,h4,h5,h6 { + margin:5px 0px 5px 0px; + padding:0px; + line-height:130%; } -.hcell{ + +.LC_hcell { padding:3px 15px 3px 15px; margin:0px; background-color:$tabbg; - border-bottom:solid 1px $lg_border_color; + border-bottom:solid 1px $lg_border_color; } -.noBorder { + +.LC_noBorder { border:0px; } -/* -.bgLightGrey { background:URL(images/TabMenuBG.png) repeat-x left top; } -.bgLightGreyYellow {background-color:#EFECE0;} -*/ /* Main Header with discription of Person, Course, etc. */ -.HeadRight { - text-align: right; - float: right; - margin: 0px; - padding: 0px; - right:0; - position:absolute; - overflow:hidden; -} - -p { - padding: 10px; +.LC_Right { + float: right; + margin: 0px; + padding: 0px; } -.FormSectionClearButton input { + +.LC_FormSectionClearButton input { background-color:transparent; border:0px; cursor:pointer; text-decoration:underline; } +.LC_help_open_topic { + color: #FFFFFF; + background-color: #EEEEFF; + margin: 1px; + padding: 4px; + border: 1px solid #000033; + white-space: nowrap; +/* vertical-align: middle; */ +} dl,ul,div,fieldset { margin: 10px 10px 10px 0px; overflow:hidden; } -ol.smallMenu { + +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_TabMainMenuContent, +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; } -ol#TabMainMenuContent div.columnSection { - margin-bottom: 0px; +ul.LC_TabContent { + min-height:1.6em; } -ol#MenuBreadcrumbs, ol#PathBreadcrumbs { +ul.LC_TabContent li { + vertical-align:middle; + padding:0px 10px 0px 10px; + background-color:$tabbg; + border-bottom:solid 1px $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; + padding-right: 16px; +} + +ul.LC_TabContent li:hover, ul.LC_TabContent li.active { + background:#FFFFFF url(/adm/lonIcons/open.gif) no-repeat scroll right center; + border-bottom:solid 1px #FFFFFF; + padding-right: 16px; +} + +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; +} + +ol#LC_MenuBreadcrumbs, +ol#LC_PathBreadcrumbs, +ul.LC_CourseBreadcrumbs { border-top: solid 1px RGB(255, 255, 255); height: 20px; line-height: 20px; @@ -5572,64 +5956,69 @@ ol#MenuBreadcrumbs, ol#PathBreadcrumbs { 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, ol#PathBreadcrumbs li { -/* background: url(images/pfeil_white.png) no-repeat left center;*/ +ol#LC_MenuBreadcrumbs li, +ol#LC_PathBreadcrumbs li, +ul.LC_CourseBreadcrumbs li { +/* + background: url(/adm/lonIcons/arrow_white.png) no-repeat left center; +*/ display: inline; padding: 0px 0px 0px 10px; - vertical-align: bottom; +/* vertical-align: bottom; */ overflow:hidden; } -ol#MenuBreadcrumbs li a { +ol#LC_MenuBreadcrumbs li a, ul.LC_CourseBreadcrumbs li a { text-decoration: none; font-size:90%; } -ol#PathBreadcrumbs li a{ + +ol#LC_PathBreadcrumbs li a { text-decoration:none; font-size:100%; font-weight:bold; } -.ContentBoxSpecial -{ +.LC_BoxPadding { + padding: 10px; +} + +.LC_ContentBoxSpecial { border: solid 1px $lg_border_color; } -.ContentBox { - padding:10px; + +.LC_ContentBoxSpecialContactInfo { + border: solid 1px $lg_border_color; + max-width:25%; + min-width:25%; } -.PopUp -{ - padding:10px; - border-left:solid 1px $lg_border_color; - border-top:solid 1px $lg_border_color; - border-bottom:outset 1px $lg_border_color; - border-right:outset 1px $lg_border_color; - display:none; - position:absolute; - right:0; - background-color:white; - z-index:5; + +.LC_AboutMe_Image { + float:left; + margin-right:10px; +} + +.LC_Clear_AboutMe_Image { + clear:left; } -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_ListStyle_Border, +.LC_ListStyleSpecial { /*display:block; */ list-style-position: inside; list-style-type: none; @@ -5637,72 +6026,86 @@ dl.ListStyleClean dd { padding: 0px; } -.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; } -.ListStyleClean li, -.ListStyleClean dd { +.LC_ListStyleClean li, +.LC_ListStyleClean dd { padding-top: 0px; padding-bottom: 0px; } -.ListStyleSimple dd, -.ListStyleSimple li{ +.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 { +table.LC_SimpleTable { margin:5px; border:solid 1px $lg_border_color; - } +} -table.SimpleTable tr { +table.LC_SimpleTable tr { padding:0px; border:solid 1px $lg_border_color; } -table.SimpleTable thead{ + +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; + overflow:hidden; } -div.columnSection > .ContentBox, -div.columnSection > .ContentBoxSpecial - { - 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 { text-align:left; margin : 0 auto; - width:65%; + width:90%; padding: 10px; height: auto; background-color:#FFFFFF; @@ -5713,48 +6116,145 @@ div.columnSection > .ContentBoxSpecial .LC_loginpage_loginContainer { float:left; width: 182px; + padding: 2px; border:1px solid #CCCCCC; background-color:$loginbg; } -.LC_loginpage_loginContainer h1{ +.LC_loginpage_loginContainer h2 { margin-top:0; display:block; background:$bgcol; color:$textcol; padding-left:5px; } + .LC_loginpage_loginInfo { - margin-left:20px; float:left; - width:30%; + width:182px; border:1px solid #CCCCCC; - padding:10px; -} - -.LC_loginpage_loginDomain { - margin-right:20px; - width:20%; - float:left; - padding:10px; + padding:2px; } .LC_loginpage_space { - clear:both; - margin-bottom:20px; + clear: both; + margin-bottom: 20px; border-bottom: 1px solid #CCCCCC; } -.LC_loginpage_fieldset{ - border: 1px solid #CCCCCC; - margin: 0 auto; +.LC_loginpage_floatLeft { + float: left; + width: 200px; + margin: 0; } -.LC_loginpage_legend{ - padding: 2px; - margin: 0px; - font-size:14px; - font-weight:bold; +table em { + font-weight: bold; + font-style: normal; +} + +table.LC_tableBrowseRes, +table.LC_tableOfContent { + border:none; + border-spacing: 1; + padding: 3px; + background-color: #FFFFFF; + font-size: 90%; +} + +table.LC_tableOfContent{ + border-collapse: collapse; +} + +table.LC_tableBrowseRes a, +table.LC_tableOfContent a { + background-color: transparent; + 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; + vertical-align: text-bottom; + margin-right: 0.3em; +} + +a#LC_content_toolbar_firsthomework { + background-image:url(/res/adm/pages/open-first-problem.gif); +} + +a#LC_content_toolbar_launchnav { + background-image:url(/res/adm/pages/start-navigation.gif); +} + +a#LC_content_toolbar_closenav { + background-image:url(/res/adm/pages/close-navigation.gif); +} + +a#LC_content_toolbar_everything { + background-image:url(/res/adm/pages/show-all.gif); +} + +a#LC_content_toolbar_uncompleted { + background-image:url(/res/adm/pages/show-incomplete-problems.gif); +} + +#LC_content_toolbar_clearbubbles { + background-image:url(/res/adm/pages/mark-discussionentries-read.gif); +} + +a#LC_content_toolbar_changefolder { + background : url(/res/adm/pages/close-all-folders.gif) top center ; +} + +a#LC_content_toolbar_changefolder_toggled { + background-image:url(/res/adm/pages/open-all-folders.gif); +} + +ul#LC_toolbar li a:hover { + background-position: bottom center; +} + +ul#LC_toolbar { + padding:0; + margin: 2px; + list-style:none; + position:relative; + background-color:white; +} + +ul#LC_toolbar li { + border:1px solid white; + padding:0; + margin: 0; + float: left; + display:inline; + vertical-align:middle; +} + + +a.LC_toolbarItem { + display:block; + padding:0; + margin:0; + height: 32px; + width: 32px; + color:white; + border:0 none; + background-repeat:no-repeat; + background-color:transparent; +} + +ul.LC_functionslist li { + float: left; + white-space: nowrap; + height: 35px; /* at least as high as heighest list item */ + margin: 0px 15px 15px 10px; } @@ -6027,15 +6527,23 @@ sub start_page { $result = &html_encode($result); } - if (exists $args->{'bread_crumbs'}) { + #Breadcrumbs + if (exists($args->{'bread_crumbs'}) or exists($args->{'bread_crumbs_component'})) { &Apache::lonhtmlcommon::clear_breadcrumbs(); - my $temp = $args->{'bread_crumbs'}; - foreach my $crumb (@$temp){ - &Apache::lonhtmlcommon::add_breadcrumb($crumb); + #if any br links exists, add them to the breadcrumbs + if (exists($args->{'bread_crumbs'}) and ref($args->{'bread_crumbs'}) eq 'ARRAY') { + foreach my $crumb (@{$args->{'bread_crumbs'}}){ + &Apache::lonhtmlcommon::add_breadcrumb($crumb); + } } - $result .= &Apache::lonhtmlcommon::breadcrumbs(); - } + #if bread_crumbs_component exists show it as headline else show only the breadcrumbs + if(exists($args->{'bread_crumbs_component'})){ + $result .= &Apache::lonhtmlcommon::breadcrumbs($args->{'bread_crumbs_component'}); + }else{ + $result .= &Apache::lonhtmlcommon::breadcrumbs(); + } + } return $result; } @@ -6784,6 +7292,8 @@ If the user's status includes multiple t the largest default quota which applies to the user determines the default quota returned. +=back + =cut ############################################### @@ -6796,7 +7306,7 @@ sub default_quota { ['quotas'],$udom); if (ref($quotahash{'quotas'}) eq 'HASH') { if ($inststatus ne '') { - my @statuses = split(/:/,$inststatus); + my @statuses = map { &unescape($_); } split(/:/,$inststatus); foreach my $item (@statuses) { if (ref($quotahash{'quotas'}{'defaultquota'}) eq 'HASH') { if ($quotahash{'quotas'}{'defaultquota'}{$item} ne '') { @@ -7262,6 +7772,7 @@ sub personal_data_fieldtitles { middlename => 'Middle Name', generation => 'Generation', gen => 'Generation', + inststatus => 'Affiliation', ); return %fieldtitles; } @@ -7331,8 +7842,57 @@ sub get_institutional_codes { =pod +=head1 Slot Helpers + +=over 4 + +=item * sorted_slots() + +Sorts an array of slot names in order of slot start time (earliest first). + +Inputs: + +=over 4 + +slotsarr - Reference to array of unsorted slot names. + +slots - Reference to hash of hash, where outer hash keys are slot names. + +=back + +Returns: + +=over 4 + +sorted - An array of slot names sorted by the start time of the slot. + =back +=back + +=cut + + +sub sorted_slots { + my ($slotsarr,$slots) = @_; + my @sorted; + if ((ref($slotsarr) eq 'ARRAY') && (ref($slots) eq 'HASH')) { + @sorted = + sort { + if (ref($slots->{$a}) && ref($slots->{$b})) { + return $slots->{$a}{'starttime'} <=> $slots->{$b}{'starttime'} + } + if (ref($slots->{$a})) { return -1;} + if (ref($slots->{$b})) { return 1;} + return 0; + } @{$slotsarr}; + } + return @sorted; +} + + +=pod + =head1 HTTP Helpers =over 4 @@ -7883,7 +8443,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"; } @@ -7971,7 +8531,7 @@ sub csv_print_select_table { &end_data_table_header_row()."\n"); foreach my $array_ref (@$d) { my ($value,$display,$defaultcol)=@{ $array_ref }; - $r->print(&start_data_table_row().'<tr><td>'.$display.'</td>'); + $r->print(&start_data_table_row().'<td>'.$display.'</td>'); $r->print('<td><select name=f'.$i. ' onchange="javascript:flip(this.form,'.$i.');">'); @@ -8627,9 +9187,10 @@ sub restore_settings { =item * &build_recipient_list() -Build recipient lists for three types of e-mail: -(a) Error Reports, (b) Package Updates, (c) Help requests, generated by -lonerrorhandler.pm, CHECKRPMS and lonsupportreq.pm respectively. +Build recipient lists for four types of e-mail: +(a) Error Reports, (b) Package Updates, (c) lonstatus warnings/errors +(d) Help requests, generated by +lonerrorhandler.pm, CHECKRPMS, loncron, and lonsupportreq.pm respectively. Inputs: defmail (scalar - email address of default recipient), @@ -8653,17 +9214,21 @@ sub build_recipient_list { my %domconfig = &Apache::lonnet::get_dom('configuration',['contacts'],$defdom); if (ref($domconfig{'contacts'}) eq 'HASH') { - if (ref($domconfig{'contacts'}{$mailing}) eq 'HASH') { - my @contacts = ('adminemail','supportemail'); - foreach my $item (@contacts) { - if ($domconfig{'contacts'}{$mailing}{$item}) { - my $addr = $domconfig{'contacts'}{$item}; - if (!grep(/^\Q$addr\E$/,@recipients)) { - push(@recipients,$addr); + if (exists($domconfig{'contacts'}{$mailing})) { + if (ref($domconfig{'contacts'}{$mailing}) eq 'HASH') { + my @contacts = ('adminemail','supportemail'); + foreach my $item (@contacts) { + if ($domconfig{'contacts'}{$mailing}{$item}) { + my $addr = $domconfig{'contacts'}{$item}; + if (!grep(/^\Q$addr\E$/,@recipients)) { + push(@recipients,$addr); + } } + $otheremails = $domconfig{'contacts'}{$mailing}{'others'}; } - $otheremails = $domconfig{'contacts'}{$mailing}{'others'}; } + } elsif ($origmail ne '') { + push(@recipients,$origmail); } } elsif ($origmail ne '') { push(@recipients,$origmail); @@ -8934,7 +9499,7 @@ sub assign_categories_table { my $checked = ''; if (@currcategories > 0) { if (grep(/^\Q$item\E$/,@currcategories)) { - $checked = ' checked="checked" '; + $checked = ' checked="checked"'; } } $output .= '<tr '.$css_class.'><td><span class="LC_nobreak">'. @@ -9000,7 +9565,7 @@ sub assign_category_rows { if (ref($currcategories) eq 'ARRAY') { if (@{$currcategories} > 0) { if (grep(/^\Q$item\E$/,@{$currcategories})) { - $checked = ' checked="checked" '; + $checked = ' checked="checked"'; } } } @@ -9307,7 +9872,9 @@ sub construct_course { 'policy.email', 'comment.email', 'pch.users.denied', - 'plc.users.denied'], + 'plc.users.denied', + 'hidefromcat', + 'categories'], $$crsudom,$$crsunum); } @@ -9765,6 +10332,17 @@ sub init_user_environment { } } + foreach my $tool ('aboutme','blog','portfolio') { + $userenv{'availabletools.'.$tool} = + &Apache::lonnet::usertools_access($username,$domain,$tool,'reload'); + } + + foreach my $crstype ('official','unofficial') { + $userenv{'canrequest.'.$crstype} = + &Apache::lonnet::usertools_access($username,$domain,$crstype, + 'reload','requestcourses'); + } + $env{'user.environment'} = "$lonids/$cookie.id"; if (tie(my %disk_env,'GDBM_File',"$lonids/$cookie.id", @@ -9803,7 +10381,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) { @@ -9830,11 +10408,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); }