--- loncom/interface/lonhtmlcommon.pm 2012/03/26 10:24:08 1.306
+++ loncom/interface/lonhtmlcommon.pm 2012/04/05 15:56:13 1.308
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common html routines
#
-# $Id: lonhtmlcommon.pm,v 1.306 2012/03/26 10:24:08 foxr Exp $
+# $Id: lonhtmlcommon.pm,v 1.308 2012/04/05 15:56:13 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1316,16 +1316,41 @@ sub htmlareaselectactive {
# This is currently located in the breadcrumb headers.
# note that the dueDateLayout is internatinoalized below.
# Here document is used to support the substitution into the javascript below.
- # ..which unfortunately necessitates escaping the $'s in the javascript.
+ # ..which unforunately necessitates escaping the $'s in the javascript.
+ # There are several times of importance
+ #
+ # serverDueDate - The absolute time at which the problem expires.
+ # serverTime - The server's time when the problem finished computing.
+ # clientTime - The client's time...as close to serverTime as possible.
+ # The clientTime will be slightly later due to
+ # 1. The latency between problem computation and
+ # the first network action.
+ # 2. The time required between the page load-start and the actual
+ # initial javascript execution that got clientTime.
+ # These are used as follows:
+ # The difference between clientTime and serverTime are used to
+ # correct for differences in clock settings between the browser's system and the
+ # server's.
+ #
+ # The difference between clientTime and the time at which the ready() method
+ # starts executing is used to estimate latencies for page load and submission.
+ # Since this is an estimate, it is doubled. The latency estimate + one minute
+ # is used to determine when the countdown timer turns red to warn the user
+ # to think about submitting.
- my $dueDateLayout = '' . &mt('Due in: {dn} {dl} {hnn}{sep}{mnn}{sep}{snn}') . '';
+ my $dueDateLayout = '' . &mt('Due in: {dn} {dl} {hnn}{sep}{mnn}{sep}{snn} - Submit early!') . '';
$output .= <
";
+ return $js;
+}
+##
+# Sets the time at which the problem finished computing.
+# This just updates the serverTime and clientTime variables above.
+# Calling this in e.g. end_problem provides a better estimate of the
+# difference beetween the server and client time setting as
+# the difference contains less of the latency/problem compute time.
+#
+sub set_compute_end_time {
+
+ my $now = time()*1000; # Javascript times are in ms.
+ my $js = "
+
+
+";
+ return $js;
+
}
############################################################
@@ -2807,7 +2855,8 @@ sub generate_menu {
$$link{alttext} : $$link{linktext})
}), {
href => $$link{url},
- title => mt($$link{linktitle})
+ title => mt($$link{linktitle}),
+ class => 'LC_menubuttons_link'
}).
$a->(mt($$link{linktext}), {
href => $$link{url},