diff --git a/lib/NGCP/Panel/Controller/Billing.pm b/lib/NGCP/Panel/Controller/Billing.pm index 0ce910a2e9..b4b020460f 100644 --- a/lib/NGCP/Panel/Controller/Billing.pm +++ b/lib/NGCP/Panel/Controller/Billing.pm @@ -455,9 +455,13 @@ sub peaktime_weekdays_edit :Chained('peaktime_weekdays_base') :PathPart('edit') } $rs->delete(); } + + $form = NGCP::Panel::Form::BillingPeaktimeWeekdays->new + unless $form->has_errors; + $self->load_weekdays($c); $c->stash(weekday => $c->stash->{weekdays}->[$c->stash->{weekday_id}]); - $c->stash(form => NGCP::Panel::Form::BillingPeaktimeWeekdays->new); + $c->stash(form => $form); $c->stash(edit_flag => 1); } diff --git a/lib/NGCP/Panel/Form/BillingPeaktimeWeekdays.pm b/lib/NGCP/Panel/Form/BillingPeaktimeWeekdays.pm index 95e70d207a..ebb538ef57 100644 --- a/lib/NGCP/Panel/Form/BillingPeaktimeWeekdays.pm +++ b/lib/NGCP/Panel/Form/BillingPeaktimeWeekdays.pm @@ -3,7 +3,12 @@ package NGCP::Panel::Form::BillingPeaktimeWeekdays; use HTML::FormHandler::Moose; use Moose; extends 'HTML::FormHandler'; +use HTML::FormHandler::Widget::Block::Bootstrap; use Moose::Util::TypeConstraints; +use DateTime; +use DateTime::Format::Strptime; + +has '+widget_wrapper' => ( default => 'Bootstrap' ); has_field 'weekday' => ( type => 'Hidden', @@ -12,24 +17,25 @@ has_field 'weekday' => ( has_field 'start' => ( type => 'Text', do_label => 0, - do_wrapper => 0, + do_wrapper => 1, element_attr => { class => ['ngcp_time_range'], rel => ['tooltip'], title => ['The start time in format hh:mm:ss'] }, - + wrapper_class => ['ngcp_field_inline'], ); has_field 'end' => ( type => 'Text', do_label => 0, - do_wrapper => 0, + do_wrapper => 1, element_attr => { class => ['ngcp_time_range'], rel => ['tooltip'], title => ['The end time in format hh:mm:ss'] }, + wrapper_class => ['ngcp_field_inline'], ); has_field 'add' => ( @@ -40,6 +46,23 @@ has_field 'add' => ( do_wrapper => 0, ); +sub validate { + my $self = shift; + + my $parsetime = DateTime::Format::Strptime->new(pattern => '%T'); + my $parsetime2 = DateTime::Format::Strptime->new(pattern => '%R'); + my $start = $parsetime->parse_datetime($self->field('start')->value) + || $parsetime2->parse_datetime($self->field('start')->value); + my $end = $parsetime->parse_datetime($self->field('end')->value) + || $parsetime2->parse_datetime($self->field('end')->value); + + if ($end < $start) { + my $err_msg = 'Start time must be later than end time.'; + $self->field('start')->add_error($err_msg); + $self->field('end')->add_error($err_msg); + } +} + 1; __END__ @@ -54,6 +77,10 @@ Preferences Form. =head1 METHODS +=head2 validate + +Checks if start time comes before end time. + =head1 AUTHOR Gerhard Jungwirth diff --git a/share/static/css/main.css b/share/static/css/main.css index d4d1369167..106edfa28d 100644 --- a/share/static/css/main.css +++ b/share/static/css/main.css @@ -216,6 +216,12 @@ div.ngcp-modal .control-group.error .dataTables_wrapper input[type="text"] { width: 67%; float: right; } -.modal-body .control-group .controls input.ngcp_time_range { - width: 43%; +.modal-body div.ngcp_field_inline { + display: inline-block; + *display: inline; + width: 218px; +} +.modal-body div.ngcp_field_inline input { + width: 206px !important; + padding: 4px 6px !important; }