--- loncom/interface/loncommon.pm 2006/04/22 16:26:31 1.348 +++ loncom/interface/loncommon.pm 2006/04/25 21:24:06 1.355 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.348 2006/04/22 16:26:31 albertel Exp $ +# $Id: loncommon.pm,v 1.355 2006/04/25 21:24:06 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -76,7 +76,7 @@ my %language; my %supported_language; my %cprtag; my %scprtag; -my %fe; my %fd; +my %fe; my %fd; my %fm; my %category_extensions; # ---------------------------------------------- Designs @@ -133,7 +133,7 @@ BEGIN { close($fh); } } -# ------------------------------------------------------------------ source copyrights +# ----------------------------------------------------------- source copyrights { my $sourcecopyrightfile = $Apache::lonnet::perlvar{'lonIncludes'}. '/source_copyright.tab'; @@ -196,10 +196,11 @@ BEGIN { while (<$fh>) { next if (/^\#/); chomp; - my ($ending,$emb,$descr)=split(/\s+/,$_,3); + my ($ending,$emb,$mime,$descr)=split(/\s+/,$_,4); if ($descr ne '') { $fe{$ending}=lc($emb); $fd{$ending}=$descr; + if ($mime ne 'unk') { $fm{$ending}=$mime; } } } close($fh); @@ -1947,7 +1948,7 @@ sub plainname { $name=~s/^\s+//; $name=~s/\s+$//; $name=~s/\s+/ /g; - if ($name !~ /\S/) { $name=$uname.'@'.$udom; } + if ($name !~ /\S/) { $name=$uname.':'.$udom; } return $name; } @@ -2198,6 +2199,10 @@ sub fileembstyle { return $fe{lc(shift(@_))}; } +sub filemimetype { + return $fm{lc(shift(@_))}; +} + sub filecategoryselect { my ($name,$value)=@_; @@ -2605,13 +2610,17 @@ sub maketime { ######################################### sub findallcourses { + my ($roles) = @_; + my %roles; + if (ref($roles)) { %roles = map { $_ => 1 } @{$roles}; } my %courses; my $now=time; foreach my $key (keys(%env)) { if ( $key=~m{^user\.role\.(\w+)\./(\w+)/(\w+)} ) { my ($role,$domain,$id) = ($1,$2,$3); next if ($role eq 'ca' || $role eq 'aa'); - my ($starttime,$endtime)=$env{$key}; + next if (%roles && !exists($roles{$role})); + my ($starttime,$endtime)=split(/\./,$env{$key}); my $active=1; if ($starttime) { if ($now<$starttime) { $active=0; } @@ -3043,22 +3052,51 @@ sub endbodytag { return $endbodytag; } +=pod + +=over 4 + +=item * &standard_css() + +Returns a style sheet + +Inputs: (all optional) + domain -> force to color decorate a page for a specific + domain + function -> force usage of a specific rolish color scheme + bgcolor -> override the default page bgcolor + +=back + +=cut + sub standard_css { my ($function,$domain,$bgcolor) = @_; - my $function = &get_users_function() if (!$function); - my $img = &designparm($function.'.img',$domain); - my $tabbg = &designparm($function.'.tabbg',$domain); - my $font = &designparm($function.'.font',$domain); + $function = &get_users_function() if (!$function); + my $img = &designparm($function.'.img', $domain); + my $tabbg = &designparm($function.'.tabbg', $domain); + my $font = &designparm($function.'.font', $domain); my $sidebg = &designparm($function.'.sidebg',$domain); - my $pgbg = $bgcolor || &designparm($function.'.pgbg',$domain); + my $pgbg = $bgcolor || + &designparm($function.'.pgbg', $domain); + my $alink = &designparm($function.'.alink', $domain); + my $vlink = &designparm($function.'.vlink', $domain); + my $link = &designparm($function.'.link', $domain); + + my $sans = 'Arial,Helvetica,sans-serif'; + my $data_table_head = $tabbg; + my $data_table_light = '#EEEEEE'; + my $data_table_dark = '#DDD'; + my $data_table_highlight = '#FFFF00'; + my $mail_new = '#FFBB77'; + my $mail_new_hover = '#DD9955'; + my $mail_read = '#BBBB77'; + my $mail_read_hover = '#999944'; + my $mail_replied = '#AAAA88'; + my $mail_replied_hover = '#888855'; + my $mail_other = '#99BBBB'; + my $mail_other_hover = '#669999'; - my $alink = &designparm($function.'.alink',$domain); - my $vlink = &designparm($function.'.vlink',$domain); - my $link = &designparm($function.'.link',$domain); - my $sans = 'Arial,Helvetica,sans-serif'; - my $data_table_head = '#CCCCFF'; - my $data_table_light = '#EEEEEE'; - my $data_table_dark = '#DDD'; return < h1, h2, h3, th { font-family: $sans } @@ -3068,6 +3106,13 @@ table.thinborder tr th, table.thinborder form, .inline { display: inline; } .center { text-align: center; } .filename {font-family: monospace;} +.LC_error { + color: red; + font-size: larger; +} +.LC_success { + color: green; +} table#LC_top_nav, table#LC_menubuttons, table#LC_nav_location { width: 100%; @@ -3118,23 +3163,66 @@ td.LC_menubuttons_img { font-weight: bold; } -table.LC_data_table { +table.LC_data_table, table.LC_mail_list { border: 1px solid #000000; border-collapse: seperate; } -table.LC_data_table tr th { - background-color: $data_table_head; +table.LC_data_table tr th, table.LC_calendar tr th, table.LC_mail_list tr th { + font-weight: bold; + background-color: $data_table_head; } table.LC_data_table tr td { - background-color: $data_table_light; + background-color: $data_table_light; } table.LC_data_table tr.LC_even_row td { - background-color: $data_table_dark; + background-color: $data_table_dark; } table.LC_data_table tr.LC_empty td { background-color: #FFFFFF; } +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; +} + +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_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; +} END } @@ -3152,11 +3240,16 @@ Inputs: $title - optional title for the $args - optional arguments force_register - if is true call registerurl so the remote is informed - redirect - array ref of seconds before redirect occurs + redirect -> array ref of seconds before redirect occurs url to redirect to (side effect of setting $env{'internal.head.redirect'} to the url redirected too) + domain -> force to color decorate a page for a specific + domain + function -> force usage of a specific rolish color scheme + bgcolor -> override the default page bgcolor + =back =cut @@ -3166,7 +3259,8 @@ sub headtag { my $result = ''. - &standard_css(). + &standard_css($args->{'function'},$args->{'domain'}, + $args->{'bgcolor'}). &font_settings(). &Apache::lonhtmlcommon::htmlareaheaders(); @@ -3333,7 +3427,8 @@ sub start_page { my ($title,$head_extra,$args) = @_; #&Apache::lonnet::logthis("start_page ".join(':',caller(0))); my %head_args; - foreach my $arg ('redirect','force_register') { + foreach my $arg ('redirect','force_register','domain','function', + 'bgcolor') { if (defined($args->{$arg})) { $head_args{$arg} = $args->{$arg}; }