MT#4967 Refactor Subscriber Forms

Move Field e164 (Compound) and alias_number (Repeatable) to own
Files because of multiple occurence.
agranig/rest
Gerhard Jungwirth 12 years ago committed by Andreas Granig
parent 86600a6a23
commit 7a20e3fc70

@ -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:

@ -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:

@ -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

@ -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',

@ -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;

@ -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:

@ -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:

Loading…
Cancel
Save