--- loncom/interface/lonhelper.pm 2006/04/06 22:30:52 1.136 +++ loncom/interface/lonhelper.pm 2006/04/24 23:20:37 1.138 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # .helper XML handler to implement the LON-CAPA helper # -# $Id: lonhelper.pm,v 1.136 2006/04/06 22:30:52 foxr Exp $ +# $Id: lonhelper.pm,v 1.138 2006/04/24 23:20:37 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1576,23 +1576,39 @@ sub render { my $date; my $time=time; - $date = localtime($time); - $date->min(0); my ($anytime,$onclick); - if (defined($self->{DEFAULT_VALUE})) { + + # first check VARS for a valid new value from the user + # then check DEFAULT_VALUE for a valid default time value + # otherwise pick now as reasonably good time + + if (defined($helper->{VARS}{$var}) + && $helper->{VARS}{$var} > 0) { + $date = localtime($helper->{VARS}{$var}); + } elsif (defined($self->{DEFAULT_VALUE})) { my $valueFunc = eval($self->{DEFAULT_VALUE}); die('Error in default value code for variable ' . $self->{'variable'} . ', Perl said: ' . $@) if $@; $time = &$valueFunc($helper, $self); if (lc($time) eq 'anytime') { $anytime=1; - } else { + $date = localtime(time); + $date->min(0); + } elsif (defined($time) && $time ne 0) { $date = localtime($time); + } else { + # leave date undefined so it'll default to now } - } else { + } + if (!defined($date)) { + $date = localtime(time); + $date->min(0); } + + &Apache::lonnet::logthis("date mode "); + if ($anytime) { $onclick = "onclick=\"javascript:updateCheck(this.form,'${var}anytime',false)\""; } @@ -1700,7 +1716,7 @@ CHECK if ($anytime) { $result.=' checked="checked" ' } - $result.="name='${var}anytime'/>".&mt('Anytime').'' + $result.="name='${var}anytime'/>".&mt('Any time').'' } return $result; @@ -1747,6 +1763,16 @@ sub postprocess { $helper->{VARS}->{$var} = $chosenDate; } + if (defined($self->{VALIDATOR})) { + my $validator = eval($self->{VALIDATOR}); + die 'Died during evaluation of validator code; Perl said: ' . $@ if $@; + my $invalid = &$validator($helper, $state, $self, $self->getValue()); + if ($invalid) { + $self->{ERROR_MSG} = $invalid; + return 0; + } + } + if (defined($self->{NEXTSTATE})) { $helper->changeState($self->{NEXTSTATE}); } @@ -3248,7 +3274,7 @@ sub postprocess { if (defined($self->{VALIDATOR})) { my $validator = eval($self->{VALIDATOR}); - die 'Died during evaluation of evaulation code; Perl said: ' . $@ if $@; + die 'Died during evaluation of validator code; Perl said: ' . $@ if $@; my $invalid = &$validator($helper, $state, $self, $self->getValue()); if ($invalid) { $self->{ERROR_MSG} = $invalid;