| Rose-HTML-Objects documentation | Contained in the Rose-HTML-Objects distribution. |
Rose::HTML::Form::Field::Time::Hours - Text field that only accepts valid hours.
$field =
Rose::HTML::Form::Field::Time::Hours->new(
label => 'Hours',
name => 'hrs');
$field->input_value(99);
$field->validate; # 0
$field->input_value(20);
$field->validate; # 0
$field->military(1);
$field->validate; # 1
print $field->html;
...
Rose::HTML::Form::Field::Time::Hours is a subclass of Rose::HTML::Form::Field::Text that only accepts valid hours. It supports normal (0-12) and military (0-23) time. The behavior is toggled via the military object method. Leading zeros are optional.
Get or set the boolean flag that indicates whether or not the field will accept "military time." If true, the hours 0-23 are valid. If false, only 0-12 are valid.
John C. Siracusa (siracusa@gmail.com)
Copyright (c) 2010 by John C. Siracusa. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Rose-HTML-Objects documentation | Contained in the Rose-HTML-Objects distribution. |
package Rose::HTML::Form::Field::Time::Hours; use strict; use Rose::HTML::Object::Errors qw(:time); use Rose::HTML::Object::Messages qw(:time); use base 'Rose::HTML::Form::Field::Text'; our $VERSION = '0.606'; use Rose::Object::MakeMethods::Generic ( boolean => 'military', ); __PACKAGE__->add_required_html_attrs( { size => 2, }); sub init { my($self) = shift; $self->label_id(FIELD_LABEL_HOUR); $self->SUPER::init(@_); } sub validate { my($self) = shift; my $ok = $self->SUPER::validate(@_); return $ok unless($ok); my $value = $self->internal_value; unless($value =~ /^\d\d?$/) { $self->add_error_id(TIME_INVALID_HOUR); return 0; } if($self->military) { return 1 if($value >= 0 && $value <= 23); $self->add_error_id(TIME_INVALID_HOUR); return 0; } else { return 1 if($value >= 0 && $value <= 12); $self->add_error_id(TIME_INVALID_HOUR); return 0; } return 1; } if(__PACKAGE__->localizer->auto_load_messages) { __PACKAGE__->localizer->load_all_messages; } use utf8; # The __DATA__ section contains UTF-8 text 1; __DATA__ [% LOCALE en %] TIME_INVALID_HOUR = "Invalid hour." FIELD_LABEL_HOUR = "Hour" FIELD_ERROR_LABEL_HOUR = "hour" [% LOCALE de %] TIME_INVALID_HOUR = "Ungültige Stunde." FIELD_LABEL_HOUR = "Stunde" FIELD_ERROR_LABEL_HOUR = "Stunde" [% LOCALE fr %] TIME_INVALID_HOUR = "Heure invalide." FIELD_LABEL_HOUR = "Heure" FIELD_ERROR_LABEL_HOUR = "heure" [% LOCALE bg %] TIME_INVALID_HOUR = "Ðевалиден ÑаÑ." FIELD_LABEL_HOUR = "ЧаÑ" FIELD_ERROR_LABEL_HOUR = "ÑаÑ" __END__