[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