You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-panel/lib/NGCP/Panel/Field/E164.pm

71 lines
1.9 KiB

package NGCP::Panel::Field::E164;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler::Field::Compound';
#has 'label' => ( default => 'E164 Number');
has_field 'cc' => (
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_cc'],
rel => ['tooltip'],
title => ['Country Code, e.g. 1 for US or 43 for Austria']
},
do_label => 0,
do_wrapper => 0,
);
has_field 'ac' => (
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_ac'],
rel => ['tooltip'],
title => ['Area Code, e.g. 212 for NYC or 1 for Vienna']
},
do_label => 0,
do_wrapper => 0,
);
has_field 'sn' => (
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_sn'],
rel => ['tooltip'],
title => ['Subscriber Number, e.g. 12345678']
},
do_label => 0,
do_wrapper => 0,
);
sub validate {
my $self = shift;
my $cc = $self->field('cc')->value;
my $sn = $self->field('sn')->value;
my %sub_errors = map {$_, 1} (
@{ $self->field('cc')->errors },
@{ $self->field('ac')->errors },
@{ $self->field('sn')->errors } );
for my $sub_error( keys %sub_errors ) {
$self->add_error($sub_error);
}
$self->field('cc')->clear_errors if $self->field('cc');
$self->field('ac')->clear_errors if $self->field('ac');
$self->field('sn')->clear_errors if $self->field('sn');
if ($self->has_errors) {
#dont add more errors
} elsif (defined $cc && $cc ne '' && (!defined $sn || $sn eq '')) {
my $err_msg = 'Subscriber Number required if Country Code is set';
$self->add_error($err_msg);
} elsif(defined $sn && $sn ne '' && (!defined $cc || $cc eq '')) {
my $err_msg = 'Country Code required if Subscriber Number is set';
$self->add_error($err_msg);
}
}
1;
# vim: set tabstop=4 expandtab: