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

version 1.115, 2005/09/28 19:03:42 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 1630  sub render { Line 1641  sub render {
         $result .= "</select> :\n";          $result .= "</select> :\n";
   
         $result .= "<select name='${var}minute'>\n";          $result .= "<select name='${var}minute'>\n";
         for ($i = 0; $i < 60; $i++) {          for my $i ((0,15,30,45,59,undef,1..59)) {
             my $printedMinute = $i;              my $printedMinute = $i;
             if ($i < 10) {              if (defined($i) && $i < 10) {
                 $printedMinute = "0" . $printedMinute;                  $printedMinute = "0" . $printedMinute;
             }              }
             if ($date->min == $i) {              if ($date->min == $i) {
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});
     }      }
Line 2257  sub render { Line 2277  sub render {
         numSections  = document.forms.helpform.chosensections.length;          numSections  = document.forms.helpform.chosensections.length;
  desiredState = getDesiredState();   desiredState = getDesiredState();
   
  for (option = 0; option , numSections; option++) {   for (var option = 0; option < numSections; option++) {
     if(document.forms.helpform.chosensections.options[option].selected) {      if(document.forms.helpform.chosensections.options[option].selected) {
  section = document.forms.helpform.chosensections.options[option].text;   section = document.forms.helpform.chosensections.options[option].text;
  if (section == "Staff") {   // Staff are indicated by an empty section.   if (section == "none") {
     section ="";      section ="";
  }   }
  for (i = 0; i < document.forms.helpform.elements.length; i++ ) {   for (i = 0; i < document.forms.helpform.elements.length; i++ ) {
Line 2268  sub render { Line 2288  sub render {
  info = document.forms.helpform.elements[i].value.split(':');   info = document.forms.helpform.elements[i].value.split(':');
  hisSection = info[2];   hisSection = info[2];
  hisState   = info[4];   hisState   = info[4];
                         if((hisSection == section)  && ((desiredState ==hisState) ||  (section =="") || (desiredState == "All"))) {   if (desiredState == hisState ||
     document.forms.helpform.elements[i].checked = value;      desiredState == "All") {
       if(hisSection == section ||
          section =="" ) {
    document.forms.helpform.elements[i].checked = value;
       }
  }   }
     }      }
  }   }
Line 2397  BUTTONS Line 2421  BUTTONS
     $result .= $buttons;         $result .= $buttons;   
     #      #
     #  now add the fancy section choice... first enumerate the sections:      #  now add the fancy section choice... first enumerate the sections:
       if ($self->{'multichoice'}) {
    my %sections;
    for my $key (@keys) {
       my $section_name = $classlist->{$key}->[$section];
       if ($section_name ne "") {
    $sections{$section_name} = 1;
       }
    }
    #  The variable $choice_widget will have the html to make the choice 
    #  selector.
    my $size=5;
    if (scalar(keys(%sections)) < 5) {
       $size=scalar(keys(%sections));
    }
    my $choice_widget = '<select multiple name="chosensections" size="'.$size.'">'."\n";
    foreach my $sec (sort {lc($a) cmp lc($b)} (keys(%sections))) {
       $choice_widget .= "<option name=\"$sec\">$sec</option>\n";
    }
    $choice_widget .= "<option>none</option></select>\n";
   
     my %sections;   # Build a table without any borders to contain the section based
     for my $key (@keys) {   # selection:
  my $section_name = $classlist->{$key}->[$section];  
  if ($section_name ne "") {  
     $sections{$section_name} = 1;  
  }  
     }  
     #  The variable $choice_widget will have the html to make the choice   
     #  selector.  
   
     my $choice_widget = '<select multiple name="chosensections" size="5">'."\n";  
     foreach my $sec (sort (keys %sections)) {  
  $choice_widget .= "<option name=\"$sec\">$sec</option>\n";  
     }  
     $choice_widget .= "<option>Staff</option></select>\n";  
   
     # Build a table without any borders to contain the section based  
     # selection:  
   
     my $section_selectors = '<table border="0">'."\n";  
     $section_selectors   .= "<tr valign=\"top\">\n<td>For Sections:</td><td>$choice_widget</td>\n";  
     $section_selectors   .= '    <td><label><input type="radio" name="personstate" value="Active" checked />';  
     $section_selectors   .= "         Current Students</label></td>\n";  
     $section_selectors   .= '    <td><label><input type="radio" name="personstate" value="All" />';  
     $section_selectors   .= "         All students</label></td>\n";  
     $section_selectors   .= '    <td><label><input type="radio" name="personstate" value="Expired" />';  
     $section_selectors   .= "          Expired Students</label></td>\n";  
     $section_selectors   .= "</tr>\n";  
     $section_selectors   .= "<tr>\n";  
     $section_selectors   .= '    <td><input type="button" value="Select" onclick="checksections(true);" /></td>'."\n";  
     $section_selectors   .= '    <td><input type="button" value="Unselect" onclick="checksections(false);" /></td></tr>'."\n</table>\n";  
     $section_selectors   .= "<br />";  
   
     $result .= $section_selectors;   my $section_selectors =<<SECTIONSELECT;
   <table border="0">
     <tr valign="top">
      <td>For Sections:</td><td>$choice_widget</td>
      <td><label><input type="radio" name="personstate" value="Active" checked />
                  Current Students</label></td>
      <td><label><input type="radio" name="personstate" value="All" />
                  All students</label></td>
      <td><label><input type="radio" name="personstate" value="Expired" />
                  Expired Students</label></td>
     </tr>
     <tr>
      <td><input type="button" value="Select" onclick="checksections(true);" /></td>
      <td><input type="button" value="Unselect" onclick="checksections(false);" /></td></tr>
   </table>
   <br />
   SECTIONSELECT
            $result .= $section_selectors;
       }
     return $result;      return $result;
 }  }
   

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


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