version 1.340, 2006/04/18 20:50:30
|
version 1.352, 2006/04/23 18:31:44
|
Line 63 use Apache::lonlocal;
|
Line 63 use Apache::lonlocal;
|
use HTML::Entities; |
use HTML::Entities; |
use Apache::lonhtmlcommon(); |
use Apache::lonhtmlcommon(); |
use Apache::loncoursedata(); |
use Apache::loncoursedata(); |
|
use Apache::lontexconvert(); |
|
|
my $readit; |
my $readit; |
|
|
Line 75 my %language;
|
Line 76 my %language;
|
my %supported_language; |
my %supported_language; |
my %cprtag; |
my %cprtag; |
my %scprtag; |
my %scprtag; |
my %fe; my %fd; |
my %fe; my %fd; my %fm; |
my %category_extensions; |
my %category_extensions; |
|
|
# ---------------------------------------------- Designs |
# ---------------------------------------------- Designs |
Line 132 BEGIN {
|
Line 133 BEGIN {
|
close($fh); |
close($fh); |
} |
} |
} |
} |
# ------------------------------------------------------------------ source copyrights |
# ----------------------------------------------------------- source copyrights |
{ |
{ |
my $sourcecopyrightfile = $Apache::lonnet::perlvar{'lonIncludes'}. |
my $sourcecopyrightfile = $Apache::lonnet::perlvar{'lonIncludes'}. |
'/source_copyright.tab'; |
'/source_copyright.tab'; |
Line 195 BEGIN {
|
Line 196 BEGIN {
|
while (<$fh>) { |
while (<$fh>) { |
next if (/^\#/); |
next if (/^\#/); |
chomp; |
chomp; |
my ($ending,$emb,$descr)=split(/\s+/,$_,3); |
my ($ending,$emb,$mime,$descr)=split(/\s+/,$_,4); |
if ($descr ne '') { |
if ($descr ne '') { |
$fe{$ending}=lc($emb); |
$fe{$ending}=lc($emb); |
$fd{$ending}=$descr; |
$fd{$ending}=$descr; |
|
if ($mime ne 'unk') { $fm{$ending}=$mime; } |
} |
} |
} |
} |
close($fh); |
close($fh); |
Line 2197 sub fileembstyle {
|
Line 2199 sub fileembstyle {
|
return $fe{lc(shift(@_))}; |
return $fe{lc(shift(@_))}; |
} |
} |
|
|
|
sub filemimetype { |
|
return $fm{lc(shift(@_))}; |
|
} |
|
|
|
|
sub filecategoryselect { |
sub filecategoryselect { |
my ($name,$value)=@_; |
my ($name,$value)=@_; |
Line 2604 sub maketime {
|
Line 2610 sub maketime {
|
######################################### |
######################################### |
|
|
sub findallcourses { |
sub findallcourses { |
my %courses=(); |
my %courses; |
my $now=time; |
my $now=time; |
foreach (keys %env) { |
foreach my $key (keys(%env)) { |
if ($_=~/^user\.role\.\w+\.\/(\w+)\/(\w+)/) { |
if ( $key=~m{^user\.role\.(\w+)\./(\w+)/(\w+)} ) { |
my ($starttime,$endtime)=$env{$_}; |
my ($role,$domain,$id) = ($1,$2,$3); |
|
next if ($role eq 'ca' || $role eq 'aa'); |
|
my ($starttime,$endtime)=$env{$key}; |
my $active=1; |
my $active=1; |
if ($starttime) { |
if ($starttime) { |
if ($now<$starttime) { $active=0; } |
if ($now<$starttime) { $active=0; } |
Line 2616 sub findallcourses {
|
Line 2624 sub findallcourses {
|
if ($endtime) { |
if ($endtime) { |
if ($now>$endtime) { $active=0; } |
if ($now>$endtime) { $active=0; } |
} |
} |
if ($active) { $courses{$1.'_'.$2}=1; } |
if ($active) { $courses{$domain.'_'.$id}=1; } |
} |
} |
} |
} |
return keys %courses; |
return keys(%courses); |
} |
} |
|
|
############################################### |
############################################### |
Line 2807 sub bodytag {
|
Line 2815 sub bodytag {
|
|
|
# construct main body tag |
# construct main body tag |
my $bodytag = <<END; |
my $bodytag = <<END; |
<style type="text/css"> |
|
h1, h2, h3, th { font-family: Arial, Helvetica, sans-serif } |
|
a:focus { color: red; background: yellow } |
|
table.thinborder { border-collapse: collapse; } |
|
table.thinborder tr th, table.thinborder tr td { border-style: solid; border-width: 1px} |
|
form, .inline { display: inline; } |
|
.center { text-align: center; } |
|
.filename {font-family: monospace;} |
|
</style> |
|
<body $extra_body_attr> |
<body $extra_body_attr> |
END |
END |
|
|
Line 3053 sub endbodytag {
|
Line 3052 sub endbodytag {
|
|
|
=over 4 |
=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) = @_; |
|
$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 $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'; |
|
|
|
return <<END; |
|
<style type="text/css"> |
|
h1, h2, h3, th { font-family: $sans } |
|
a:focus { color: red; background: yellow } |
|
table.thinborder { border-collapse: collapse; } |
|
table.thinborder tr th, table.thinborder tr td { border-style: solid; border-width: 1px} |
|
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%; |
|
background: $pgbg; |
|
border: 0px; |
|
border-spacing: 1px; |
|
padding: 0px; |
|
margin: 0px; |
|
border-collapse: separate; |
|
} |
|
table#LC_menubuttons_mainmenu { |
|
background: $pgbg; |
|
border: 0px; |
|
border-spacing: 1px; |
|
padding: 0px; |
|
margin: 0px; |
|
border-collapse: separate; |
|
} |
|
table#LC_menubuttons img, table#LC_menubuttons_mainmenu img { |
|
border: 0px; |
|
} |
|
table#LC_top_nav td { |
|
background: $tabbg; |
|
} |
|
table#LC_top_nav td a, div#LC_top_nav a { |
|
color: $font; |
|
font-family: $sans; |
|
} |
|
.LC_menubuttons_inline_text { |
|
color: $font; |
|
font-family: $sans; |
|
font-size: smaller; |
|
} |
|
|
|
td.LC_menubuttons_text { |
|
color: $font; |
|
font-family: $sans; |
|
} |
|
td.LC_menubuttons_img { |
|
background: $tabbg; |
|
} |
|
.LC_current_location { |
|
font-family: $sans; |
|
background: $tabbg; |
|
} |
|
.LC_new_mail { |
|
font-family: $sans; |
|
font-weight: bold; |
|
} |
|
|
|
table.LC_data_table, table.LC_mail_list { |
|
border: 1px solid #000000; |
|
border-collapse: seperate; |
|
} |
|
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; |
|
} |
|
table.LC_data_table tr.LC_even_row td { |
|
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; |
|
} |
|
</style> |
|
END |
|
} |
|
|
|
=pod |
|
|
|
=over 4 |
|
|
=item * &headtag() |
=item * &headtag() |
|
|
Returns a uniform footer for LON-CAPA web pages. |
Returns a uniform footer for LON-CAPA web pages. |
Line 3062 Inputs: $title - optional title for the
|
Line 3236 Inputs: $title - optional title for the
|
$args - optional arguments |
$args - optional arguments |
force_register - if is true call registerurl so the remote is |
force_register - if is true call registerurl so the remote is |
informed |
informed |
redirect - array ref of seconds before redirect occurs |
redirect -> array ref of seconds before redirect occurs |
url to redirect to |
url to redirect to |
(side effect of setting |
(side effect of setting |
$env{'internal.head.redirect'} to the url |
$env{'internal.head.redirect'} to the url |
redirected too) |
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 |
=back |
|
|
=cut |
=cut |
Line 3076 sub headtag {
|
Line 3255 sub headtag {
|
|
|
my $result = |
my $result = |
'<head>'. |
'<head>'. |
|
&standard_css($args->{'function'},$args->{'domain'}, |
|
$args->{'bgcolor'}). |
&font_settings(). |
&font_settings(). |
&Apache::lonhtmlcommon::htmlareaheaders(); |
&Apache::lonhtmlcommon::htmlareaheaders(); |
|
|
Line 3089 sub headtag {
|
Line 3270 sub headtag {
|
$env{'internal.head.redirect'} = $url; |
$env{'internal.head.redirect'} = $url; |
$result.=<<ADDMETA |
$result.=<<ADDMETA |
<meta http-equiv="pragma" content="no-cache" /> |
<meta http-equiv="pragma" content="no-cache" /> |
<meta HTTP-EQUIV="Refresh" CONTENT="$time; url=$url" /> |
<meta http-equiv="Refresh" content="$time; url=$url" /> |
ADDMETA |
ADDMETA |
} |
} |
if (!defined($title)) { |
if (!defined($title)) { |
Line 3126 sub font_settings {
|
Line 3307 sub font_settings {
|
return $headerstring; |
return $headerstring; |
} |
} |
|
|
|
=pod |
|
|
|
=over 4 |
|
|
|
=item * &xml_begin() |
|
|
|
Returns the needed doctype and <html> |
|
|
|
Inputs: none |
|
|
|
=back |
|
|
|
=cut |
|
|
|
sub xml_begin { |
|
my $output=''; |
|
|
|
&Apache::lonhtmlcommon::init_htmlareafields(); |
|
|
|
if ($env{'browser.mathml'}) { |
|
$output='<?xml version="1.0"?>' |
|
#.'<?xml-stylesheet type="text/css" href="/adm/MathML/mathml.css"?>'."\n" |
|
# .'<!DOCTYPE html SYSTEM "/adm/MathML/mathml.dtd" ' |
|
|
|
# .'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [<!ENTITY mathns "http://www.w3.org/1998/Math/MathML">] >' |
|
.'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">' |
|
.'<html xmlns:math="http://www.w3.org/1998/Math/MathML" ' |
|
.'xmlns="http://www.w3.org/1999/xhtml">'; |
|
} else { |
|
$output='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>'; |
|
} |
|
return $output; |
|
} |
|
|
=pod |
=pod |
|
|
Line 3209 sub start_page {
|
Line 3423 sub start_page {
|
my ($title,$head_extra,$args) = @_; |
my ($title,$head_extra,$args) = @_; |
#&Apache::lonnet::logthis("start_page ".join(':',caller(0))); |
#&Apache::lonnet::logthis("start_page ".join(':',caller(0))); |
my %head_args; |
my %head_args; |
foreach my $arg ('redirect','force_register') { |
foreach my $arg ('redirect','force_register','domain','function', |
|
'bgcolor') { |
if (defined($args->{$arg})) { |
if (defined($args->{$arg})) { |
$head_args{$arg} = $args->{$arg}; |
$head_args{$arg} = $args->{$arg}; |
} |
} |
Line 3219 sub start_page {
|
Line 3434 sub start_page {
|
my $result; |
my $result; |
if (! exists($args->{'skip_phases'}{'head'}) ) { |
if (! exists($args->{'skip_phases'}{'head'}) ) { |
$result.= |
$result.= |
&Apache::lonxml::xmlbegin(). |
&xml_begin(). |
&headtag($title,$head_extra,\%head_args).&endheadtag(); |
&headtag($title,$head_extra,\%head_args).&endheadtag(); |
} |
} |
|
|
Line 3355 sub simple_error_page {
|
Line 3570 sub simple_error_page {
|
} |
} |
return $page; |
return $page; |
} |
} |
|
|
|
{ |
|
my $row_count; |
|
sub start_data_table { |
|
undef($row_count); |
|
return '<table class="LC_data_table">'; |
|
} |
|
|
|
sub end_data_table { |
|
undef($row_count); |
|
return '</table>'; |
|
} |
|
|
|
sub start_data_table_row { |
|
$row_count++; |
|
return '<tr '.(($row_count % 2)?'':'class="LC_even_row"').'>'; |
|
} |
|
|
|
sub end_data_table_row { |
|
return '</tr>'; |
|
} |
|
} |
|
|
############################################### |
############################################### |
|
|
=pod |
=pod |