--- loncom/interface/lonhelper.pm 2006/04/06 22:30:52 1.136 +++ loncom/interface/lonhelper.pm 2006/04/24 23:05:35 1.137 @@ -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.137 2006/04/24 23:05:35 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) && !$anytime) { + $date = localtime(time); + $date->min(0); } + + &Apache::lonnet::logthis("date mode "); + if ($anytime) { $onclick = "onclick=\"javascript:updateCheck(this.form,'${var}anytime',false)\""; } @@ -1747,6 +1763,16 @@ sub postprocess { $helper->{VARS}->{$var} = $chosenDate; } + if (defined($self->{VALIDATOR})) { + my $validator = eval($self->{VALIDATOR}); + die 'Died during evaluation of evaulation 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}); }