[LON-CAPA-cvs] cvs: loncom /interface loncommon.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Tue, 21 Mar 2006 16:32:51 -0000
albertel Tue Mar 21 11:32:51 2006 EDT
Modified files:
/loncom/interface loncommon.pm
Log:
- adding new args to start_page
- js_ready -> make a page start that can be js writeln('')
- add ability to override the default page bg color
- end_page now can also generate a js_ready version
- Continue link is auto geerated at the bottom of a page that emitted a 'redirect' header
- pages that use start_page and end_page emit warnigns if the tags are misused
Index: loncom/interface/loncommon.pm
diff -u loncom/interface/loncommon.pm:1.314 loncom/interface/loncommon.pm:1.315
--- loncom/interface/loncommon.pm:1.314 Sun Mar 19 17:48:53 2006
+++ loncom/interface/loncommon.pm Tue Mar 21 11:32:50 2006
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.314 2006/03/19 22:48:53 albertel Exp $
+# $Id: loncommon.pm,v 1.315 2006/03/21 16:32:50 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2752,11 +2752,11 @@
sub bodytag {
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg,$customtitle,
- $notopbar)=@_;
+ $notopbar,$bgcolor)=@_;
$title=&mt($title);
$function = &get_users_function() if (!$function);
my $img=&designparm($function.'.img',$domain);
- my $pgbg=&designparm($function.'.pgbg',$domain);
+ my $pgbg= $bgcolor || &designparm($function.'.pgbg',$domain);
my $tabbg=&designparm($function.'.tabbg',$domain);
my $font=&designparm($function.'.font',$domain);
my $link=&designparm($function.'.link',$domain);
@@ -2953,6 +2953,12 @@
sub endbodytag {
my $endbodytag='</body>';
$endbodytag=&Apache::lontexconvert::jsMath_process()."\n".$endbodytag;
+ if ( exists( $env{'internal.head.redirect'} ) ) {
+ $endbodytag=
+ "<br /><a href=\"$env{'internal.head.redirect'}\">".
+ &mt('Continue').'</a>'.
+ $endbodytag;
+ }
return $endbodytag;
}
@@ -2966,7 +2972,12 @@
Inputs: $title - optional title for the head
$head_extra - optional extra HTML to put inside the <head>
-
+ $args - optional arguments
+ 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)
=back
=cut
@@ -2981,6 +2992,8 @@
if (ref($args->{'redirect'})) {
my ($time,$url) = @{$args->{'redirect'}};
+ $url = &Apache::lonenc::check_encrypt($url);
+ $env{'internal.head.redirect'} = $url;
$result.=<<ADDMETA
<meta http-equiv="pragma" content="no-cache" />
<meta HTTP-EQUIV="Refresh" CONTENT="2; url=$url" />
@@ -2990,7 +3003,7 @@
$title = 'The LearningOnline Network with CAPA';
}
- $result .= '<title>'.&mt($title).'</title>'.$head_extra;
+ $result .= '<title> LON-CAPA '.&mt($title).'</title>'.$head_extra;
return $result;
}
@@ -3042,14 +3055,17 @@
Inputs: $title - optional title for the page
$head_extra - optional extra HTML to incude inside the <head>
- %args - additional optional args supported are:
+ $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 <body>
domain -> force to color decorate a page for a
specific domain
function -> force usage of a specific rolish color scheme
- redirect -> ...
+ redirect -> see &headtag()
+ bgcolor -> override the default page bg color
+ js_ready -> return a string ready for being used in
+ a javascript writeln
=back
@@ -3061,13 +3077,18 @@
if (defined($args->{'redirect'})) {
$head_args{'redirect'} = $args->{'redirect'};
}
-
- return
+ $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'});
+ undef,undef,undef,$args->{'no_nav_bar'},$args->{'bgcolor'});
+ if ($args->{'js_ready'}) {
+ $result =~ s/[\n\r]/ /g;
+ $result =~ s/'/\\'/g;
+ }
+ return $result;
}
=pod
@@ -3078,15 +3099,43 @@
Returns a complete </body></html> section for LON-CAPA web pages.
-Inputs: None
-
+Inputs: $args - additional optional args supported are:
+ js_ready -> return a string ready for being used in
+ a javascript writeln
=back
=cut
sub end_page {
- return &endbodytag."\n</html>";
+ my ($args) = @_;
+ $env{'internal.end_page'}++;
+ my $result = &endbodytag()."\n</html>";
+ if ($args->{'js_ready'}) {
+ $result =~ s/[\n\r]/ /g;
+ $result =~ s/'/\\'/g;
+ }
+ return $result;
+}
+
+sub validate_page {
+ if ( exists($env{'internal.start_page'})
+ && $env{'internal.start_page'} > 1) {
+ &Apache::lonnet::logthis('start_page called multiple times');
+ }
+ if ( exists($env{'internal.end_page'})
+ && $env{'internal.end_page'} > 1) {
+ &Apache::lonnet::logthis('end_page called multiple times');
+ }
+ if ( exists($env{'internal.start_page'})
+ && ! exists($env{'internal.end_page'})) {
+ &Apache::lonnet::logthis('start_page called without end_page');
+ }
+ if ( ! exists($env{'internal.start_page'})
+ && exists($env{'internal.end_page'})) {
+ &Apache::lonnet::logthis('end_page called without start_page');
+ }
}
+
###############################################
=pod