[LON-CAPA-cvs] cvs: loncom /interface lonhtmlcommon.pm
bisitz
bisitz@source.lon-capa.org
Fri, 11 Dec 2009 17:25:01 -0000
bisitz Fri Dec 11 17:25:01 2009 EDT
Modified files:
/loncom/interface lonhtmlcommon.pm
Log:
- Corrected date setting logic:
Empty date/time fields are not initialized anymore with current time, if empty fields are explicitly requested.
This fixes bug 5795.
- Overhauled code: simplified code structure
- Added comments to code
Index: loncom/interface/lonhtmlcommon.pm
diff -u loncom/interface/lonhtmlcommon.pm:1.253 loncom/interface/lonhtmlcommon.pm:1.254
--- loncom/interface/lonhtmlcommon.pm:1.253 Thu Dec 3 02:13:28 2009
+++ loncom/interface/lonhtmlcommon.pm Fri Dec 11 17:25:01 2009
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common html routines
#
-# $Id: lonhtmlcommon.pm,v 1.253 2009/12/03 02:13:28 www Exp $
+# $Id: lonhtmlcommon.pm,v 1.254 2009/12/11 17:25:01 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -383,7 +383,8 @@
The current setting for this time parameter. A unix format time
(time in seconds since the beginning of Jan 1st, 1970, GMT.
-An undefined value is taken to indicate the value is the current time.
+An undefined value is taken to indicate the value is the current time
+unless it is requested to leave it empty. See $includeempty.
Also, to be explicit, a value of 'now' also indicates the current time.
=item $special
@@ -393,6 +394,9 @@
=item $includeempty
+If it is set (true) and no date/time value is provided,
+the date/time fields are left empty.
+
=item $state
Specifies the initial state of the form elements. Either 'disabled' or empty.
@@ -412,42 +416,40 @@
my ($formname,$dname,$currentvalue,$special,$includeempty,$state,
$no_hh_mm_ss,$defhour,$defmin,$defsec,$nolink) = @_;
my $now = time;
- my $wasdefined=1;
+
+ my $tzname;
+ my ($sec,$min,$hour,$mday,$month,$year) = ('','',undef,'','','');
+ # other potentially useful values: wkday,yrday,is_daylight_savings
+
if (! defined($state) || $state ne 'disabled') {
$state = '';
}
if (! defined($no_hh_mm_ss)) {
$no_hh_mm_ss = 0;
}
+
if ($currentvalue eq 'now') {
- $currentvalue = $now;
+ $currentvalue = $now;
}
- if ((!defined($currentvalue)) || ($currentvalue eq '')) {
- $wasdefined=0;
- if ($includeempty) {
- $currentvalue = 0;
- } else {
- $currentvalue = $now;
- }
+
+ # Default value: Set empty date field to current time
+ # unless empty inclusion is requested
+ if ((!$includeempty) && (!$currentvalue)) {
+ $currentvalue = $now;
}
- # other potentially useful values: wkday,yrday,is_daylight_savings
- my $tzname;
- my ($sec,$min,$hour,$mday,$month,$year)=('','',undef,'','','');
+ # Do we have a date? Split it!
if ($currentvalue) {
- ($tzname,$sec,$min,$hour,$mday,$month,$year) = &get_timedates($currentvalue);
- }
- unless ($wasdefined) {
- ($tzname,$sec,$min,$hour,$mday,$month,$year) = &get_timedates($now);
- if (($defhour) || ($defmin) || ($defsec)) {
- $sec=($defsec?$defsec:0);
- $min=($defmin?$defmin:0);
- $hour=($defhour?$defhour:0);
- } elsif (!$includeempty) {
- $sec=0;
- $min=0;
- $hour=0;
- }
+ ($tzname,$sec,$min,$hour,$mday,$month,$year) = &get_timedates($currentvalue);
+
+ # No values provided for hour, min, sec? Use default 0
+ if (($defhour) || ($defmin) || ($defsec)) {
+ $sec = ($defsec ? $defsec : 0);
+ $min = ($defmin ? $defmin : 0);
+ $hour = ($defhour ? $defhour : 0);
+ }
}
+
+ # Create Output
my $result = "\n<!-- $dname date setting form -->\n";
$result .= <<ENDJS;
<script type="text/javascript">