Suppress superfluous error messages "Value must be an integer"

and reduce the number of error messages of e164 Subfields, by merging
them into their parent
Mantis: 3723
agranig/peering-route
Gerhard Jungwirth 13 years ago
parent f0e2f1de8a
commit c6362639f6

@ -0,0 +1,14 @@
package NGCP::Panel::Field::PosInteger;
use Sipwise::Base;
extends 'HTML::FormHandler::Field::Integer';
sub validate {
my ( $self ) = @_;
my $value = $self->value;
$self->add_error('Value must be a positive integer')
if(!$self->has_errors && $value < 0);
}
1;
# vim: set tabstop=4 expandtab:

@ -1,6 +1,7 @@
package NGCP::Panel::Form::Customer::PbxAdminSubscriber;
use HTML::FormHandler::Moose;
use NGCP::Panel::Field::PosInteger;
extends 'NGCP::Panel::Form::Customer::PbxSubscriber';
has_field 'e164' => (
@ -13,7 +14,7 @@ has_field 'e164' => (
);
has_field 'e164.cc' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_cc'],
rel => ['tooltip'],
@ -24,7 +25,7 @@ has_field 'e164.cc' => (
);
has_field 'e164.ac' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_ac'],
rel => ['tooltip'],
@ -35,7 +36,7 @@ has_field 'e164.ac' => (
);
has_field 'e164.sn' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_sn'],
rel => ['tooltip'],

@ -1,6 +1,7 @@
package NGCP::Panel::Form::Customer::PbxExtensionSubscriber;
use HTML::FormHandler::Moose;
use NGCP::Panel::Field::PosInteger;
extends 'NGCP::Panel::Form::Customer::PbxSubscriber';
has_field 'group' => (
@ -10,7 +11,7 @@ has_field 'group' => (
);
has_field 'extension' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
rel => ['tooltip'],
title => ['Extension Number, e.g. 101']

@ -1,6 +1,7 @@
package NGCP::Panel::Form::Customer::PbxExtensionSubscriberEdit;
use HTML::FormHandler::Moose;
use NGCP::Panel::Field::PosInteger;
extends 'NGCP::Panel::Form::Customer::PbxSubscriber';
has_field 'group' => (
@ -10,7 +11,7 @@ has_field 'group' => (
);
has_field 'extension' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
rel => ['tooltip'],
title => ['Extension Number, e.g. 101']

@ -5,6 +5,7 @@ extends 'HTML::FormHandler';
use Moose::Util::TypeConstraints;
use HTML::FormHandler::Widget::Block::Bootstrap;
use NGCP::Panel::Field::PosInteger;
has '+widget_wrapper' => ( default => 'Bootstrap' );
has_field 'submitid' => ( type => 'Hidden' );
@ -23,7 +24,7 @@ has_field 'hunt_policy' => (
);
has_field 'hunt_policy_timeout' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
required => 1,
label => 'Serial Hunting Timeout',
default => 10,

@ -7,6 +7,7 @@ use Moose::Util::TypeConstraints;
use HTML::FormHandler::Widget::Block::Bootstrap;
use NGCP::Panel::Field::Domain;
use NGCP::Panel::Field::PosInteger;
has '+widget_wrapper' => ( default => 'Bootstrap' );
has_field 'submitid' => ( type => 'Hidden' );
@ -43,7 +44,7 @@ has_field 'e164' => (
);
has_field 'e164.cc' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_cc'],
rel => ['tooltip'],
@ -54,7 +55,7 @@ has_field 'e164.cc' => (
);
has_field 'e164.ac' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_ac'],
rel => ['tooltip'],
@ -65,7 +66,7 @@ has_field 'e164.ac' => (
);
has_field 'e164.sn' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_sn'],
rel => ['tooltip'],
@ -155,7 +156,18 @@ sub validate {
my $cc = $self->field('e164.cc')->value;
my $sn = $self->field('e164.sn')->value;
if (defined $cc && $cc ne '' && (!defined $sn || $sn eq '')) {
my %sub_errors = map {$_, 1} (
@{ $self->field('e164.cc')->errors },
@{ $self->field('e164.ac')->errors },
@{ $self->field('e164.sn')->errors } );
$self->field('e164')->push_errors(keys %sub_errors);
$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 '')) {

@ -2,6 +2,7 @@ package NGCP::Panel::Form::DestinationSet;
use HTML::FormHandler::Moose;
use HTML::FormHandler::Widget::Block::Bootstrap;
use Moose::Util::TypeConstraints;
use NGCP::Panel::Field::PosInteger;
extends 'HTML::FormHandler';
with 'NGCP::Panel::Render::RepeatableJs';
@ -83,14 +84,14 @@ has_field 'destination.uri.destination' => (
wrapper_class => [qw/hfh-rep-field/],
);
has_field 'destination.uri.timeout' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
label => 'for (seconds)',
default => 300,
wrapper_class => [qw/hfh-rep-field/],
);
has_field 'destination.priority' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
label => 'Priority',
wrapper_class => [qw/hfh-rep-field/],
default => 1,

@ -3,6 +3,7 @@ use Sipwise::Base;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
use Moose::Util::TypeConstraints;
use NGCP::Panel::Field::PosInteger;
use HTML::FormHandler::Widget::Block::Bootstrap;
@ -28,7 +29,7 @@ has_field 'host' => (
);
has_field 'port' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
max_range => 65535,
default => '5060',
required => 1,
@ -45,7 +46,7 @@ has_field 'transport' => (
);
has_field 'weight' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
required => 1,
max_range => 25,
default => 1,

@ -8,7 +8,7 @@ use HTML::FormHandler::Widget::Block::Bootstrap;
use NGCP::Panel::Field::Domain;
use NGCP::Panel::Field::CustomerContract;
use NGCP::Panel::Field::Reseller;
use NGCP::Panel::Field::PosInteger;
has '+widget_wrapper' => ( default => 'Bootstrap' );
has_field 'submitid' => ( type => 'Hidden' );
@ -52,7 +52,7 @@ has_field 'e164' => (
);
has_field 'e164.cc' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_cc'],
rel => ['tooltip'],
@ -63,7 +63,7 @@ has_field 'e164.cc' => (
);
has_field 'e164.ac' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_ac'],
rel => ['tooltip'],
@ -74,7 +74,7 @@ has_field 'e164.ac' => (
);
has_field 'e164.sn' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_sn'],
rel => ['tooltip'],
@ -165,7 +165,18 @@ sub validate {
my $cc = $self->field('e164.cc')->value;
my $sn = $self->field('e164.sn')->value;
if (defined $cc && $cc ne '' && (!defined $sn || $sn eq '')) {
my %sub_errors = map {$_, 1} (
@{ $self->field('e164.cc')->errors },
@{ $self->field('e164.ac')->errors },
@{ $self->field('e164.sn')->errors } );
$self->field('e164')->push_errors(keys %sub_errors);
$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 '')) {

@ -2,6 +2,7 @@ package NGCP::Panel::Form::SubscriberCFSimple;
use HTML::FormHandler::Moose;
use HTML::FormHandler::Widget::Block::Bootstrap;
use Moose::Util::TypeConstraints;
use NGCP::Panel::Field::PosInteger;
extends 'HTML::FormHandler';
has '+widget_wrapper' => (default => 'Bootstrap');
@ -67,7 +68,7 @@ has_field 'destination.uri.destination' => (
label => 'URI/Number',
);
has_field 'destination.uri.timeout' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
label => 'for (seconds)',
default => 300,
);

@ -2,10 +2,11 @@ package NGCP::Panel::Form::SubscriberCFTAdvanced;
use HTML::FormHandler::Moose;
use HTML::FormHandler::Widget::Block::Bootstrap;
use Moose::Util::TypeConstraints;
use NGCP::Panel::Field::PosInteger;
extends 'NGCP::Panel::Form::SubscriberCFAdvanced';
has_field 'ringtimeout' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
required => 1,
label => 'after ring timeout',
element_attr => {

@ -2,10 +2,11 @@ package NGCP::Panel::Form::SubscriberCFTSimple;
use HTML::FormHandler::Moose;
use HTML::FormHandler::Widget::Block::Bootstrap;
use Moose::Util::TypeConstraints;
use NGCP::Panel::Field::PosInteger;
extends 'NGCP::Panel::Form::SubscriberCFSimple';
has_field 'ringtimeout' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
required => 1,
label => 'after ring timeout',
element_attr => {

@ -9,6 +9,7 @@ use HTML::FormHandler::Widget::Block::Bootstrap;
use NGCP::Panel::Field::Domain;
use NGCP::Panel::Field::CustomerContract;
use NGCP::Panel::Field::Reseller;
use NGCP::Panel::Field::PosInteger;
with 'NGCP::Panel::Render::RepeatableJs';
@ -54,7 +55,7 @@ has_field 'e164' => (
);
has_field 'e164.cc' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_cc'],
rel => ['tooltip'],
@ -65,7 +66,7 @@ has_field 'e164.cc' => (
);
has_field 'e164.ac' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_ac'],
rel => ['tooltip'],
@ -76,7 +77,7 @@ has_field 'e164.ac' => (
);
has_field 'e164.sn' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_sn'],
rel => ['tooltip'],
@ -112,7 +113,7 @@ has_field 'alias_number.e164' => (
);
has_field 'alias_number.e164.cc' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_cc'],
rel => ['tooltip'],
@ -123,7 +124,7 @@ has_field 'alias_number.e164.cc' => (
);
has_field 'alias_number.e164.ac' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_ac'],
rel => ['tooltip'],
@ -134,7 +135,7 @@ has_field 'alias_number.e164.ac' => (
);
has_field 'alias_number.e164.sn' => (
type => 'PosInteger',
type => '+NGCP::Panel::Field::PosInteger',
element_attr => {
class => ['ngcp_e164_sn'],
rel => ['tooltip'],

Loading…
Cancel
Save