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/IntegerList.pm

40 lines
1.3 KiB

package NGCP::Panel::Field::IntegerList;
use NGCP::Panel::Utils::Generic qw(:all);
use Sipwise::Base;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler::Field::Text';
has 'min_value' => (isa => 'Int', default => 0, is => 'rw');
has 'max_value' => (isa => 'Int', default => 999_999, is => 'rw');
has 'plusminus' => (isa => 'Bool', default => 0, is => 'rw');
sub validate {
my ( $self ) = @_;
my @integers = split(/,/, $self->value);
for my $single_int (@integers) {
$single_int = abs( $single_int ) if $self->plusminus;
if ( !is_int($single_int) ) {
$self->add_error('Value in IntegerList is not numeric.');
return;
}
if ($single_int < $self->min_value) {
my $min_value = $self->min_value;
$self->add_error("Value in IntegerList ($single_int) is too small (min: $min_value).");
return;
}
if ($single_int > $self->max_value) {
my $max_value = $self->max_value;
$self->add_error("Value in IntegerList ($single_int) is too big (max: $max_value).");
return;
}
}
return;
}
no Moose;
1;
# vim: set tabstop=4 expandtab:
# describes a list of comma-separated integer numbers (mainly to be used for iCal)
# the integers have to be within the defined range (min_value, max_value)