diff --git a/lib/NGCP/Panel/Field/AliasNumber.pm b/lib/NGCP/Panel/Field/AliasNumber.pm new file mode 100644 index 0000000000..477fd7e145 --- /dev/null +++ b/lib/NGCP/Panel/Field/AliasNumber.pm @@ -0,0 +1,32 @@ +package NGCP::Panel::Field::AliasNumber; +use HTML::FormHandler::Moose; +extends 'HTML::FormHandler::Field::Repeatable'; + + +has 'label' => ( default => 'E164 Number'); + +has_field 'id' => ( + type => 'Hidden', +); + +has_field 'e164' => ( + type => '+NGCP::Panel::Field::E164', + order => 99, + required => 0, + label => 'Alias Number', + do_label => 1, + do_wrapper => 1, + wrapper_class => [qw/hfh-rep-field/], +); + +has_field 'rm' => ( + type => 'RmElement', + value => 'Remove', + order => 100, + element_class => [qw/btn btn-primary pull-right/], +); + + +1; + +# vim: set tabstop=4 expandtab: diff --git a/lib/NGCP/Panel/Field/E164.pm b/lib/NGCP/Panel/Field/E164.pm new file mode 100644 index 0000000000..569db80f2a --- /dev/null +++ b/lib/NGCP/Panel/Field/E164.pm @@ -0,0 +1,70 @@ +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; + $self->field('ac')->clear_errors; + $self->field('sn')->clear_errors; + + 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: diff --git a/lib/NGCP/Panel/Form/Customer/PbxAdminSubscriber.pm b/lib/NGCP/Panel/Form/Customer/PbxAdminSubscriber.pm index 5a586e244e..269e975906 100644 --- a/lib/NGCP/Panel/Form/Customer/PbxAdminSubscriber.pm +++ b/lib/NGCP/Panel/Form/Customer/PbxAdminSubscriber.pm @@ -5,7 +5,7 @@ use NGCP::Panel::Field::PosInteger; extends 'NGCP::Panel::Form::Customer::PbxSubscriber'; has_field 'e164' => ( - type => 'Compound', + type => '+NGCP::Panel::Field::E164', order => 99, required => 0, label => 'E.164 Number', @@ -13,39 +13,6 @@ has_field 'e164' => ( do_wrapper => 1, ); -has_field 'e164.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 'e164.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 'e164.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, -); - has_field 'domain' => ( type => '+NGCP::Panel::Field::Domain', label => 'SIP Domain', @@ -58,20 +25,6 @@ has_block 'fields' => ( render_list => [qw/domain e164 display_name webusername webpassword username password status external_id/ ], ); -sub validate { - my $self = shift; - my $cc = $self->field('e164.cc')->value; - my $sn = $self->field('e164.sn')->value; - - if (defined $cc && $cc ne '' && (!defined $sn || $sn eq '')) { - my $err_msg = 'Subscriber Number required if Country Code is set'; - $self->field('e164')->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->field('e164')->add_error($err_msg); - } -} - 1; =head1 NAME diff --git a/lib/NGCP/Panel/Form/Customer/PbxSubscriber.pm b/lib/NGCP/Panel/Form/Customer/PbxSubscriber.pm index 37bdd82780..d09c624e33 100644 --- a/lib/NGCP/Panel/Form/Customer/PbxSubscriber.pm +++ b/lib/NGCP/Panel/Form/Customer/PbxSubscriber.pm @@ -44,15 +44,6 @@ has_field 'webpassword' => ( }, ); -has_field 'e164' => ( - type => 'Compound', - order => 99, - required => 0, - label => 'Extension Number', - do_label => 1, - do_wrapper => 1, -); - has_field 'username' => ( type => 'Text', label => 'SIP Username', diff --git a/lib/NGCP/Panel/Form/Customer/Subscriber.pm b/lib/NGCP/Panel/Form/Customer/Subscriber.pm index 2cdfa34fbe..3b2b48d3eb 100644 --- a/lib/NGCP/Panel/Form/Customer/Subscriber.pm +++ b/lib/NGCP/Panel/Form/Customer/Subscriber.pm @@ -36,7 +36,7 @@ has_field 'webpassword' => ( ); has_field 'e164' => ( - type => 'Compound', + type => '+NGCP::Panel::Field::E164', order => 99, required => 0, label => 'E164 Number', @@ -44,39 +44,6 @@ has_field 'e164' => ( do_wrapper => 1, ); -has_field 'e164.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 'e164.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 'e164.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, -); - has_field 'username' => ( type => '+NGCP::Panel::Field::Identifier', label => 'SIP Username', @@ -152,34 +119,6 @@ has_block 'actions' => ( render_list => [qw/save/], ); -sub validate { - my $self = shift; - my $cc = $self->field('e164.cc')->value; - my $sn = $self->field('e164.sn')->value; - - my %sub_errors = map {$_, 1} ( - @{ $self->field('e164.cc')->errors }, - @{ $self->field('e164.ac')->errors }, - @{ $self->field('e164.sn')->errors } ); - for my $sub_error( keys %sub_errors ) { - $self->field('e164')->add_error($sub_error); - } - $self->field('e164.cc')->clear_errors; - $self->field('e164.ac')->clear_errors; - $self->field('e164.sn')->clear_errors; - - if ($self->field('e164')->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->field('e164')->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->field('e164')->add_error($err_msg); - } - - return; -} 1; diff --git a/lib/NGCP/Panel/Form/Subscriber.pm b/lib/NGCP/Panel/Form/Subscriber.pm index 8e3cec5db9..b5863a1fec 100644 --- a/lib/NGCP/Panel/Form/Subscriber.pm +++ b/lib/NGCP/Panel/Form/Subscriber.pm @@ -44,7 +44,7 @@ has_field 'webpassword' => ( ); has_field 'e164' => ( - type => 'Compound', + type => '+NGCP::Panel::Field::E164', order => 99, required => 0, label => 'E164 Number', @@ -52,39 +52,6 @@ has_field 'e164' => ( do_wrapper => 1, ); -has_field 'e164.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 'e164.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 'e164.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, -); - has_field 'username' => ( type => '+NGCP::Panel::Field::Identifier', label => 'SIP Username', @@ -161,35 +128,6 @@ has_block 'actions' => ( render_list => [qw/save/], ); -sub validate { - my $self = shift; - my $cc = $self->field('e164.cc')->value; - my $sn = $self->field('e164.sn')->value; - - my %sub_errors = map {$_, 1} ( - @{ $self->field('e164.cc')->errors }, - @{ $self->field('e164.ac')->errors }, - @{ $self->field('e164.sn')->errors } ); - for my $sub_error( keys %sub_errors ) { - $self->field('e164')->add_error($sub_error); - } - $self->field('e164.cc')->clear_errors; - $self->field('e164.ac')->clear_errors; - $self->field('e164.sn')->clear_errors; - - if ($self->field('e164')->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->field('e164')->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->field('e164')->add_error($err_msg); - } - - return; -} - 1; # vim: set tabstop=4 expandtab: diff --git a/lib/NGCP/Panel/Form/SubscriberEdit.pm b/lib/NGCP/Panel/Form/SubscriberEdit.pm index 6e28525e6e..68942e9160 100644 --- a/lib/NGCP/Panel/Form/SubscriberEdit.pm +++ b/lib/NGCP/Panel/Form/SubscriberEdit.pm @@ -46,7 +46,7 @@ has_field 'webpassword' => ( ); has_field 'e164' => ( - type => 'Compound', + type => '+NGCP::Panel::Field::E164', order => 99, required => 0, label => 'E164 Number', @@ -54,41 +54,9 @@ has_field 'e164' => ( do_wrapper => 1, ); -has_field 'e164.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 'e164.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 'e164.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, -); has_field 'alias_number' => ( - type => 'Repeatable', + type => '+NGCP::Panel::Field::AliasNumber', setup_for_js => 1, do_wrapper => 1, do_label => 0, @@ -98,60 +66,6 @@ has_field 'alias_number' => ( wrapper_class => [qw/hfh-rep/], ); -has_field 'alias_number.id' => ( - type => 'Hidden', -); - -has_field 'alias_number.e164' => ( - type => 'Compound', - order => 99, - required => 0, - label => 'Alias Number', - do_label => 1, - do_wrapper => 1, - wrapper_class => [qw/hfh-rep-field/], -); - -has_field 'alias_number.e164.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 'alias_number.e164.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 'alias_number.e164.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, -); - -has_field 'alias_number.rm' => ( - type => 'RmElement', - value => 'Remove', - order => 100, - element_class => [qw/btn btn-primary pull-right/], -); - has_field 'alias_number_add' => ( type => 'AddElement', repeatable => 'alias_number', @@ -224,20 +138,6 @@ has_block 'actions' => ( render_list => [qw/save/], ); -sub validate { - my $self = shift; - my $cc = $self->field('e164.cc')->value; - my $sn = $self->field('e164.sn')->value; - - if (defined $cc && $cc ne '' && (!defined $sn || $sn eq '')) { - my $err_msg = 'Subscriber Number required if Country Code is set'; - $self->field('e164')->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->field('e164')->add_error($err_msg); - } -} - 1; # vim: set tabstop=4 expandtab: