5 @ISA = ( "Webmin::Input" );
7 =head2 new Webmin::Time(name, time, [disabled])
8 Create a new field for selecting a time
12 if (defined(&Webmin::Theme::Time::new)) {
13 return new Webmin::Theme::Time(@_[1..$#_]);
15 my ($self, $name, $value, $disabled) = @_;
17 $self->set_name($name);
18 $self->set_value($value);
19 $self->set_disabled($disabled) if (defined($disabled));
24 Returns the HTML for the time chooser
30 my $val = $self->get_value();
31 my $hour = ($val/3600) % 24;
32 my $min = ($val/60) % 60;
33 my $sec = ($val/1) % 60;
34 my $name = $self->get_name();
35 $rv .= &ui_textbox("hour_".$name, pad2($hour), 2,$self->get_disabled()).":".
36 &ui_textbox("min_".$name, pad2($min), 2, $self->get_disabled()).":".
37 &ui_textbox("sec_".$name, pad2($sec), 2, $self->get_disabled());
43 return $_[0] < 10 ? "0".$_[0] : $_[0];
48 my ($self, $value) = @_;
49 $self->{'value'} = timegm(localtime($value));
53 Returns the date as a Unix time number (for 1st jan 1970)
58 my $in = $self->{'form'} ? $self->{'form'}->{'in'} : undef;
59 if ($in && defined($in->{"hour_".$self->{'name'}})) {
60 my $rv = $self->to_time($in);
61 return defined($rv) ? $rv : $self->{'value'};
63 elsif ($in && defined($in->{"ui_value_".$self->{'name'}})) {
64 return $in->{"ui_value_".$self->{'name'}};
67 return $self->{'value'};
74 my $hour = $in->{"hour_".$self->{'name'}};
75 return undef if ($hour !~ /^\d+$/ || $hour < 0 || $hour > 23);
76 my $min = $in->{"min_".$self->{'name'}};
77 return undef if ($min !~ /^\d+$/ || $min < 0 || $min > 59);
78 my $sec = $in->{"sec_".$self->{'name'}};
79 return undef if ($sec !~ /^\d+$/ || $sec < 0 || $sec > 59);
80 return $hour*60*60 + $min*60 + $sec;
83 sub set_validation_func
85 my ($self, $func) = @_;
86 $self->{'validation_func'} = $func;
90 Ensures that the date is valid
95 my $tm = $self->to_time($self->{'form'}->{'in'});
97 return ( $text{'ui_etime'} );
99 if ($self->{'validation_func'}) {
100 my $err = &{$self->{'validation_func'}}($self->get_value(),
103 return ( $err ) if ($err);
108 =head2 set_auto(auto?)
109 If set to 1, the time will be automatically incremented by Javascript
113 my ($self, $auto) = @_;
114 $self->{'auto'} = $auto;
117 my $formno = $self->{'form'}->get_formno();
118 $self->{'form'}->add_onload("F=[0]; timeInit(F); setTimeout(\"timeUpdate(F)\", 5000)");
119 my $as = $autoscript;
120 $as =~ s/NAME/$self->{'name'}/g;
121 $self->{'form'}->add_script($as);
126 function timeInit(F) {
130 for(i=0; i<F.length; i++){
131 secs[i] = document.forms[F[i]].sec_NAME;
132 mins[i] = document.forms[F[i]].min_NAME;
133 hours[i] = document.forms[F[i]].hour_NAME;
136 function timeUpdate(F) {
137 for(i=0; i<F.length; i++){
138 s = parseInt(secs[i].value);
143 m = parseInt(mins[i].value);
148 h = parseInt(hours[i].value);
154 hours[i].value = packNum(h);
156 mins[i].value = packNum(m);
158 secs[i].value = packNum(s);
160 setTimeout('timeUpdate(F)', 5000);
162 function packNum(t) {
163 return (t < 10 ? '0'+t : t);