Diff for /loncom/interface/lonhtmlcommon.pm between versions 1.22 and 1.26

version 1.22, 2003/05/21 16:16:32 version 1.26, 2003/06/20 16:13:06
Line 58  package Apache::lonhtmlcommon; Line 58  package Apache::lonhtmlcommon;
 use Time::Local;  use Time::Local;
 use strict;  use strict;
   
   
   ##############################################
   ##############################################
   
   =pod
   
   =item textbox
   
   =cut
   
   ##############################################
   ##############################################
   sub textbox {
       my ($name,$value,$size,$special) = @_;
       $size = 40 if (! defined($size));
       my $Str = '<input type="text" name="'.$name.'" size="'.$size.'" '.
           'value="'.$value.'" '.$special.' />';
       return $Str;
   }
   
   ##############################################
   ##############################################
   
   =pod
   
   =item checkbox
   
   =cut
   
   ##############################################
   ##############################################
   sub checkbox {
       my ($name) = @_;
       my $Str = '<input type="checkbox" name="'.$name.'" />';
       return $Str;
   }
   
   
   
 ##############################################  ##############################################
 ##############################################  ##############################################
   
Line 85  The current setting for this time parame Line 124  The current setting for this time parame
 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.
 Also, to be explicit, a value of 'now' also indicates the current time.  Also, to be explicit, a value of 'now' also indicates the current time.
   
   =item $special
   
   Additional html/javascript to be associated with each element in
   the date_setter.  See lonparmset for example usage.
   
 =back  =back
   
 Bugs  Bugs
Line 96  The method used to restrict user input w Line 140  The method used to restrict user input w
 ##############################################  ##############################################
 ##############################################  ##############################################
 sub date_setter {  sub date_setter {
     my ($formname,$dname,$currentvalue) = @_;      my ($formname,$dname,$currentvalue,$special) = @_;
     if (! defined($currentvalue) || $currentvalue eq 'now') {      if (! defined($currentvalue) || $currentvalue eq 'now') {
         $currentvalue = time;          $currentvalue = time;
     }      }
Line 139  sub date_setter { Line 183  sub date_setter {
     }      }
 </script>  </script>
 ENDJS  ENDJS
     $result .= "  <select name=\"$dname\_month\" ".      $result .= "  <nobr><select name=\"$dname\_month\" ".$special.' '.
         "onChange=\"javascript:$dname\_checkday()\" >\n";          "onChange=\"javascript:$dname\_checkday()\" >\n";
     my @Months = qw/January February  March     April   May      June       my @Months = qw/January February  March     April   May      June 
                     July    August    September October November December/;                      July    August    September October November December/;
Line 152  ENDJS Line 196  ENDJS
     }      }
     $result .= "  </select>\n";      $result .= "  </select>\n";
     $result .= "  <input type=\"text\" name=\"$dname\_day\" ".      $result .= "  <input type=\"text\" name=\"$dname\_day\" ".
             "value=\"$mday\" size=\"3\" ".              "value=\"$mday\" size=\"3\" ".$special.' '.
             "onChange=\"javascript:$dname\_checkday()\" />\n";              "onChange=\"javascript:$dname\_checkday()\" />\n";
     $result .= "  <input type=\"year\" name=\"$dname\_year\" ".      $result .= "  <input type=\"year\" name=\"$dname\_year\" ".
             "value=\"$year\" size=\"5\" ".              "value=\"$year\" size=\"5\" ".$special.' '.
             "onChange=\"javascript:$dname\_checkday()\" />\n";              "onChange=\"javascript:$dname\_checkday()\" />\n";
     $result .= "&nbsp;&nbsp;";      $result .= "&nbsp;&nbsp;";
     $result .= "  <select name=\"$dname\_hour\" >\n";      $result .= "  <select name=\"$dname\_hour\" ".$special." >\n";
     for (my $h = 0;$h<24;$h++) {      for (my $h = 0;$h<24;$h++) {
         $result .= "      <option value=\"$h\" ";          $result .= "      <option value=\"$h\" ";
         $result .= "selected " if ($hour == $h);          $result .= "selected " if ($hour == $h);
Line 175  ENDJS Line 219  ENDJS
         $result .= " </option>\n";          $result .= " </option>\n";
     }       } 
     $result .= "  </select>\n";      $result .= "  </select>\n";
     $result .= "  <input type=\"text\" name=\"$dname\_minute\" ".      $result .= "  <input type=\"text\" name=\"$dname\_minute\" ".$special.' '.
         "value=\"$min\" size=\"3\" /> m\n";          "value=\"$min\" size=\"3\" /> m\n";
     $result .= "  <input type=\"text\" name=\"$dname\_second\" ".      $result .= "  <input type=\"text\" name=\"$dname\_second\" ".$special.' '.
         "value=\"$sec\" size=\"3\" /> s\n";          "value=\"$sec\" size=\"3\" /> s\n";
     $result .= "<!-- end $dname date setting form -->\n";      $result .= "</nobr>\n<!-- end $dname date setting form -->\n";
     return $result;      return $result;
 }  }
   
Line 252  sub get_date_from_form { Line 296  sub get_date_from_form {
             $year = $tmpyear - 1900;              $year = $tmpyear - 1900;
         }          }
     }      }
       if (($year<70) || ($year>137)) { return undef; }
     if (eval(&timelocal($sec,$min,$hour,$day,$month,$year))) {      if (eval(&timelocal($sec,$min,$hour,$day,$month,$year))) {
         return &timelocal($sec,$min,$hour,$day,$month,$year);          return &timelocal($sec,$min,$hour,$day,$month,$year);
     } else {      } else {
Line 578  sub FormatStudentInformation { Line 623  sub FormatStudentInformation {
 ########################################################  ########################################################
 ########################################################  ########################################################
   
   =pod
   
   =item Progess Window Handling Routines
   
   These routines handle the creation, update, increment, and closure of 
   progress windows.  The progress window reports to the user the number
   of items completed and an estimate of the time required to complete the rest.
   
   =over 4
   
   
   =item &Create_PrgWin
   
   Writes javascript to the client to open a progress window and returns a
   data structure used for bookkeeping.
   
   Inputs
   
   =over 4
   
   =item $r Apache request
   
   =item $title The title of the progress window
   
   =item $heading A description (usually 1 line) of the process being initiated.
   
   =item $number_to_do The total number of items being processed.
   
   =back
   
   Returns a hash containing the progress state data structure.
   
   
   =item &Update_PrgWin
   
   Updates the text in the progress indicator.  Does not increment the count.
   See &Increment_PrgWin.
   
   Inputs:
   
   =over 4
   
   =item $r Apache request
   
   =item $prog_state Pointer to the data structure returned by &Create_PrgWin
   
   =item $displaystring The string to write to the status indicator
   
   =back
   
   Returns: none
   
   
   =item Increment_PrgWin
   
   Increment the count of items completed for the progress window by 1.  
   
   Inputs:
   
   =over 4
   
   =item $r Apache request
   
   =item $prog_state Pointer to the data structure returned by Create_PrgWin
   
   =item $extraInfo A description of the items being iterated over.  Typically
   'student'.
   
   =back
   
   Returns: none
   
   
   =item Close_PrgWin
   
   Closes the progress window.
   
   Inputs:
   
   =over 4 
   
   =item $r Apache request
   
   =item $prog_state Pointer to the data structure returned by Create_PrgWin
   
   =back
   
   Returns: none
   
   =back
   
   =cut
   
   ########################################################
   ########################################################
   
 # Create progress  # Create progress
 sub Create_PrgWin {  sub Create_PrgWin {
     my ($r, $title, $heading, $number_to_do)=@_;      my ($r, $title, $heading, $number_to_do)=@_;
Line 594  sub Create_PrgWin { Line 735  sub Create_PrgWin {
   
     my %prog_state;      my %prog_state;
     $prog_state{'done'}=0;      $prog_state{'done'}=0;
     $prog_state{'firststart'}=time;      $prog_state{'firststart'}=&Time::HiRes::time();
     $prog_state{'laststart'}=time;      $prog_state{'laststart'}=&Time::HiRes::time();
     $prog_state{'max'}=$number_to_do;      $prog_state{'max'}=$number_to_do;
   
     $r->rflush();      $r->rflush();
Line 607  sub Update_PrgWin { Line 748  sub Update_PrgWin {
     my ($r,$prog_state,$displayString)=@_;      my ($r,$prog_state,$displayString)=@_;
     $r->print('<script>popwin.document.popremain.remaining.value="'.      $r->print('<script>popwin.document.popremain.remaining.value="'.
               $displayString.'";</script>');                $displayString.'";</script>');
     $$prog_state{'laststart'}=time;      $$prog_state{'laststart'}=&Time::HiRes::time();
     $r->rflush();      $r->rflush();
 }  }
   
Line 615  sub Update_PrgWin { Line 756  sub Update_PrgWin {
 sub Increment_PrgWin {  sub Increment_PrgWin {
     my ($r,$prog_state,$extraInfo)=@_;      my ($r,$prog_state,$extraInfo)=@_;
     $$prog_state{'done'}++;      $$prog_state{'done'}++;
     my $time_est= (time - $$prog_state{'firststart'})/$$prog_state{'done'} *      my $time_est= (&Time::HiRes::time() - $$prog_state{'firststart'})/
           $$prog_state{'done'} *
  ($$prog_state{'max'}-$$prog_state{'done'});   ($$prog_state{'max'}-$$prog_state{'done'});
     $time_est = int($time_est);      $time_est = int($time_est);
     if (int ($time_est/60) > 0) {      if (int ($time_est/60) > 0) {
  my $min = int($time_est/60);   my $min = int($time_est/60);
  my $sec = $time_est % 60;   my $sec = $time_est % 60;
  $time_est = $min.' minutes';   $time_est = $min.' minutes';
  if ($sec > 1) {          if ($min < 10)  {
     $time_est.= ', '.$sec.' seconds';              if ($sec > 1) {
  } elsif ($sec > 0) {                  $time_est.= ', '.$sec.' seconds';
     $time_est.= ', '.$sec.' second';              } elsif ($sec > 0) {
  }                  $time_est.= ', '.$sec.' second';
               }
           }
     } else {      } else {
  $time_est .= ' seconds';   $time_est .= ' seconds';
     }      }
     my $lasttime = time-$$prog_state{'laststart'};      my $lasttime = &Time::HiRes::time()-$$prog_state{'laststart'};
       if ($lasttime > 9) {
           $lasttime = int($lasttime);
       } elsif ($lasttime < 0.01) {
           $lasttime = 0;
       } else {
           $lasttime = sprintf("%3.2f",$lasttime);
       }
     if ($lasttime == 1) {      if ($lasttime == 1) {
         $lasttime = '('.$lasttime.' second for '.$extraInfo.')';          $lasttime = '('.$lasttime.' second for '.$extraInfo.')';
     } else {      } else {
Line 639  sub Increment_PrgWin { Line 790  sub Increment_PrgWin {
     $r->print('<script>popwin.document.popremain.remaining.value="'.      $r->print('<script>popwin.document.popremain.remaining.value="'.
       $$prog_state{'done'}.'/'.$$prog_state{'max'}.        $$prog_state{'done'}.'/'.$$prog_state{'max'}.
       ': '.$time_est.' remaining '.$lasttime.'";'.'</script>');        ': '.$time_est.' remaining '.$lasttime.'";'.'</script>');
     $$prog_state{'laststart'}=time;      $$prog_state{'laststart'}=&Time::HiRes::time();
     $r->rflush();      $r->rflush();
 }  }
   
Line 652  sub Close_PrgWin { Line 803  sub Close_PrgWin {
 }  }
   
 1;  1;
   
 __END__  __END__

Removed from v.1.22  
changed lines
  Added in v.1.26


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