Diff for /loncom/interface/lonhelper.pm between versions 1.117 and 1.118

version 1.117, 2005/10/11 15:44:30 version 1.118, 2005/10/11 20:57:54
Line 1536  sub start_date { Line 1536  sub start_date {
     $paramHash->{'variable'} = $token->[2]{'variable'};      $paramHash->{'variable'} = $token->[2]{'variable'};
     $helper->declareVar($paramHash->{'variable'});      $helper->declareVar($paramHash->{'variable'});
     $paramHash->{'hoursminutes'} = $token->[2]{'hoursminutes'};      $paramHash->{'hoursminutes'} = $token->[2]{'hoursminutes'};
       $paramHash->{'anytime'} = $token->[2]{'anytime'};
 }  }
   
 sub end_date {  sub end_date {
Line 1554  sub render { Line 1555  sub render {
     my $var = $self->{'variable'};      my $var = $self->{'variable'};
   
     my $date;      my $date;
       
       my $time=time;
       my $anytime;
   
       if (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') { $time=time; $anytime=1; }
       }
     # Default date: The current hour.      # Default date: The current hour.
     $date = localtime();      $date = localtime($time);
     $date->min(0);      $date->min(0);
   
     if (defined $self->{ERROR_MSG}) {      if (defined $self->{ERROR_MSG}) {
Line 1644  sub render { Line 1655  sub render {
         }          }
         $result .= "</select>\n";          $result .= "</select>\n";
     }      }
       if ($self->{'anytime'}) {
    $result.="&nbsp;or&nbsp;<label><input type='checkbox' ";
    if ($anytime) {
       $result.=' checked="checked" '
    }
    $result.="name='${var}anytime'/>".&mt('Anytime').'</label>'
       }
     return $result;      return $result;
   
 }  }
Line 1652  sub render { Line 1669  sub render {
 sub postprocess {  sub postprocess {
     my $self = shift;      my $self = shift;
     my $var = $self->{'variable'};      my $var = $self->{'variable'};
     my $month = $env{'form.' . $var . 'month'};       if ($env{'form.' . $var . 'anytime'}) {
     my $day = $env{'form.' . $var . 'day'};    $helper->{VARS}->{$var} = undef;
     my $year = $env{'form.' . $var . 'year'};       } else {
     my $min = 0;    my $month = $env{'form.' . $var . 'month'}; 
     my $hour = 0;   my $day = $env{'form.' . $var . 'day'}; 
     if ($self->{'hoursminutes'}) {   my $year = $env{'form.' . $var . 'year'}; 
         $min = $env{'form.' . $var . 'minute'};   my $min = 0; 
         $hour = $env{'form.' . $var . 'hour'};   my $hour = 0;
     }   if ($self->{'hoursminutes'}) {
       $min = $env{'form.' . $var . 'minute'};
       $hour = $env{'form.' . $var . 'hour'};
    }
   
    my $chosenDate;
    eval {$chosenDate = Time::Local::timelocal(0, $min, $hour, $day, $month, $year);};
    my $error = $@;
   
    # Check to make sure that the date was not automatically co-erced into a 
    # valid date, as we want to flag that as an error
    # This happens for "Feb. 31", for instance, which is coerced to March 2 or
    # 3, depending on if it's a leap year
    my $checkDate = localtime($chosenDate);
   
    if ($error || $checkDate->mon != $month || $checkDate->mday != $day ||
       $checkDate->year + 1900 != $year) {
       unless (Apache::lonlocal::current_language()== ~/^en/) {
    $self->{ERROR_MSG} = &mt("Invalid date entry");
    return 0;
       }
       # LOCALIZATION FIXME: Needs to be parameterized
       $self->{ERROR_MSG} = "Can't use " . $months[$month] . " $day, $year as a "
    . "date because it doesn't exist. Please enter a valid date.";
   
     my $chosenDate;  
     eval {$chosenDate = Time::Local::timelocal(0, $min, $hour, $day, $month, $year);};  
     my $error = $@;  
   
     # Check to make sure that the date was not automatically co-erced into a   
     # valid date, as we want to flag that as an error  
     # This happens for "Feb. 31", for instance, which is coerced to March 2 or  
     # 3, depending on if it's a leap year  
     my $checkDate = localtime($chosenDate);  
   
     if ($error || $checkDate->mon != $month || $checkDate->mday != $day ||  
         $checkDate->year + 1900 != $year) {  
  unless (Apache::lonlocal::current_language()== ~/^en/) {  
     $self->{ERROR_MSG} = &mt("Invalid date entry");  
     return 0;      return 0;
  }   }
  # LOCALIZATION FIXME: Needs to be parameterized   $helper->{VARS}->{$var} = $chosenDate;
         $self->{ERROR_MSG} = "Can't use " . $months[$month] . " $day, $year as a "  
             . "date because it doesn't exist. Please enter a valid date.";  
   
         return 0;  
     }      }
   
     $helper->{VARS}->{$var} = $chosenDate;  
   
     if (defined($self->{NEXTSTATE})) {      if (defined($self->{NEXTSTATE})) {
         $helper->changeState($self->{NEXTSTATE});          $helper->changeState($self->{NEXTSTATE});
     }      }

Removed from v.1.117  
changed lines
  Added in v.1.118


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>