--- loncom/interface/loncommon.pm 2006/03/21 18:32:19 1.316
+++ loncom/interface/loncommon.pm 2006/03/29 19:39:55 1.324
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.316 2006/03/21 18:32:19 albertel Exp $
+# $Id: loncommon.pm,v 1.324 2006/03/29 19:39:55 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2741,6 +2741,9 @@ Inputs:
=item * $notopbar, if true, keep the 'what is this' info but remove the
navigational links
+
+=item * $bgcolor, used to override the bg coor on a webpage to a specific value
+
=back
Returns: A uniform header for LON-CAPA web pages.
@@ -2798,7 +2801,8 @@ form, .inline { display: inline; }
style="margin-top: 0px;$addstyle" $addentries>
END
&Apache::lontexconvert::jsMath_reset();
- if ($env{'environment.texengine'} eq 'jsMath') {
+ if ($env{'environment.texengine'} eq 'jsMath' ||
+ $env{'form.texengine'} eq 'jsMath' ) {
$bodytag.=&Apache::lontexconvert::jsMath_header();
}
@@ -2973,6 +2977,9 @@ Returns a uniform footer for LON-CAPA we
Inputs: $title - optional title for the head
$head_extra - optional extra HTML to put inside the
$args - optional arguments
+ force_register - if is true call registerurl so the remote is
+ informed
+
redirect - array ref of seconds before redirect occurs
url to redirect to
(side effect of setting
@@ -2989,14 +2996,18 @@ sub headtag {
''.
&Apache::lonxml::fontsettings().
&Apache::lonhtmlcommon::htmlareaheaders();
-
+
+ if ($args->{'force_register'}) {
+ $result .= &Apache::lonmenu::registerurl(1);
+ }
+
if (ref($args->{'redirect'})) {
my ($time,$url) = @{$args->{'redirect'}};
$url = &Apache::lonenc::check_encrypt($url);
$env{'internal.head.redirect'} = $url;
$result.=<
-
+
ADDMETA
}
if (!defined($title)) {
@@ -3004,7 +3015,6 @@ ADDMETA
}
$result .= ' LON-CAPA '.&mt($title).''.$head_extra;
-
return $result;
}
@@ -3056,16 +3066,22 @@ Returns a complete .. sect
Inputs: $title - optional title for the page
$head_extra - optional extra HTML to incude inside the
$args - additional optional args supported are:
- only_body -> is true will set &bodytag() onlybodytag arg on
- no_nav_bar -> is true will set &bodytag() notopbar arg on
- add_entries -> additional attributes to add to the
- domain -> force to color decorate a page for a
- specific domain
- function -> force usage of a specific rolish color scheme
- redirect -> see &headtag()
- bgcolor -> override the default page bg color
- js_ready -> return a string ready for being used in
- a javascript writeln
+ only_body -> is true will set &bodytag() onlybodytag
+ arg on
+ no_nav_bar -> is true will set &bodytag() notopbar arg on
+ add_entries -> additional attributes to add to the
+ domain -> force to color decorate a page for a
+ specific domain
+ function -> force usage of a specific rolish color
+ scheme
+ redirect -> see &headtag()
+ bgcolor -> override the default page bg color
+ js_ready -> return a string ready for being used in
+ a javascript writeln
+ html_encode -> return a string ready for being used in
+ a html attribute
+ force_register -> if is true will turn on the &bodytag()
+ $forcereg arg
=back
@@ -3073,20 +3089,28 @@ Inputs: $title - optional title for the
sub start_page {
my ($title,$head_extra,$args) = @_;
+ #&Apache::lonnet::logthis("start_page ".join(':',caller(0)));
my %head_args;
- if (defined($args->{'redirect'})) {
- $head_args{'redirect'} = $args->{'redirect'};
+ foreach my $arg ('redirect','force_register') {
+ if (defined($args->{$arg})) {
+ $head_args{$arg} = $args->{$arg};
+ }
}
+
$env{'internal.start_page'}++;
my $result =
&Apache::lonxml::xmlbegin().
&headtag($title,$head_extra,\%head_args).&endheadtag().
- &bodytag($title, $args->{'function'}, $args->{'add_entries'},
- $args->{'only_body'},
- undef,undef,undef,$args->{'no_nav_bar'},$args->{'bgcolor'});
+ &bodytag($title,
+ $args->{'function'}, $args->{'add_entries'},
+ $args->{'only_body'}, $args->{'domain'},
+ $args->{'force_register'}, undef,
+ $args->{'no_nav_bar'}, $args->{'bgcolor'});
if ($args->{'js_ready'}) {
- $result =~ s/[\n\r]/ /g;
- $result =~ s/'/\\'/g;
+ $result = &js_ready($result);
+ }
+ if ($args->{'html_encode'}) {
+ $result = &html_encode($result);
}
return $result;
}
@@ -3102,18 +3126,41 @@ Returns a complete sectio
Inputs: $args - additional optional args supported are:
js_ready -> return a string ready for being used in
a javascript writeln
+ html_encode -> return a string ready for being used in
+ a html attribute
=back
=cut
sub end_page {
my ($args) = @_;
+ #&Apache::lonnet::logthis("end_page ".join(':',caller(0)));
$env{'internal.end_page'}++;
my $result = &endbodytag()."\n";
if ($args->{'js_ready'}) {
- $result =~ s/[\n\r]/ /g;
- $result =~ s/'/\\'/g;
+ $result = &js_ready($result);
}
+ if ($args->{'html_encode'}) {
+ $result = &html_encode($result);
+ }
+ return $result;
+}
+
+sub html_encode {
+ my ($result) = @_;
+
+ $result = &HTML::Entities::encode($result,'<>&"');
+
+ return $result;
+}
+sub js_ready {
+ my ($result) = @_;
+
+ $result =~ s/[\n\r]/ /xmsg;
+ $result =~ s/\\/\\\\/xmsg;
+ $result =~ s/'/\\'/xmsg;
+ $result =~ s{}{}xmsg;
+
return $result;
}
@@ -3121,11 +3168,13 @@ sub validate_page {
if ( exists($env{'internal.start_page'})
&& $env{'internal.start_page'} > 1) {
&Apache::lonnet::logthis('start_page called multiple times '.
+ $env{'internal.start_page'}.' '.
$ENV{'request.filename'});
}
if ( exists($env{'internal.end_page'})
&& $env{'internal.end_page'} > 1) {
&Apache::lonnet::logthis('end_page called multiple times '.
+ $env{'internal.end_page'}.' '.
$env{'request.filename'});
}
if ( exists($env{'internal.start_page'})
@@ -3140,6 +3189,18 @@ sub validate_page {
}
}
+sub simple_error_page {
+ my ($r,$title,$msg) = @_;
+ my $page =
+ &Apache::loncommon::start_page($title).
+ &mt($msg).
+ &Apache::loncommon::end_page();
+ if (ref($r)) {
+ $r->print($page);
+ return OK;
+ }
+ return $page;
+}
###############################################
=pod