package NGCP::Panel::Form::Reminder; use HTML::FormHandler::Moose; extends 'HTML::FormHandler'; use Moose::Util::TypeConstraints; use HTML::FormHandler::Widget::Block::Bootstrap; has '+widget_wrapper' => ( default => 'Bootstrap' ); has_field 'submitid' => ( type => 'Hidden' ); sub build_render_list {[qw/submitid fields actions/]} sub build_form_element_class {[qw(form-horizontal)]} has_field 'time' => ( type => 'Text', label => 'Time', ); has_field 'recur' => ( type => 'Select', label => 'Repeat', required => 1, options => [ { label => 'only once', value => 'never' }, { label => 'on weekdays', value => 'weekdays' }, { label => 'everyday', value => 'always' }, ], ); has_field 'save' => ( type => 'Submit', value => 'Save', element_class => [qw/btn btn-primary/], label => '', ); has_block 'fields' => ( tag => 'div', class => [qw/modal-body/], render_list => [qw/time recur/], ); has_block 'actions' => ( tag => 'div', class => [qw/modal-footer/], render_list => [qw/save/], ); sub validate_time { my ($self, $field) = @_; my ($hour, $minute, $second) = split /:/, $field->value; unless(defined $hour && int($hour) >= 0 && int($hour) <= 23 && defined $minute && $minute =~ /^[0-5]\d$/) { $field->add_error("Invalid time format, must be HH:MM"); } } 1; # vim: set tabstop=4 expandtab: