diff --git a/lib/admin/Controller/domain.pm b/lib/admin/Controller/domain.pm index 2ce91b6..a273fc2 100644 --- a/lib/admin/Controller/domain.pm +++ b/lib/admin/Controller/domain.pm @@ -253,12 +253,26 @@ sub edit_list : Local { if(defined $$preferences{$list}) { my $block_list = ref $$preferences{$list} ? $$preferences{$list} : [ $$preferences{$list} ]; - $c->stash->{list_data} = admin::Utils::prepare_tt_list($c, $block_list); - } - $c->stash->{list_name} = $list; + my @block_list_to_sort; + foreach my $blockentry (@$block_list) { + my $active = $blockentry =~ s/^#// ? 0 : 1; + push @block_list_to_sort, { entry => $blockentry, active => $active }; + } + my $bg = ''; + my $i = 1; + foreach my $blockentry (sort {$a->{entry} cmp $b->{entry}} @block_list_to_sort) { + push @{$c->stash->{list_data}}, { number => $$blockentry{entry}, + background => $bg ? '' : 'tr_alt', + id => $i++, + active => $$blockentry{active}, + }; + $bg = !$bg; + } + } my $list_mode = $list; + $c->stash->{list_name} = $list; $list_mode =~ s/list$/mode/; $c->stash->{list_mode} = $$preferences{$list_mode}; $list_mode =~ s/mode$/clir/; @@ -281,6 +295,7 @@ Update a number list preference in the database. sub do_edit_list : Local { my ( $self, $c ) = @_; + my %messages; my $domain = $c->request->params->{domain}; $c->stash->{domain} = $domain; @@ -301,7 +316,48 @@ sub do_edit_list : Local { # activate/deactivate link next to entries in block list my $act = $c->request->params->{block_act}; - admin::Utils::addelact_blocklist($c, $preferences, $list, $add, $del, $act); + #admin::Utils::addelact_blocklist($c, $preferences, $list, $add, $del, $act); + + if (defined $add) { # input text field to add new entry to block list + my $checkresult; + $add =~ s/ //g; + return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'check_sip_username_shell_pattern', { pattern => $add }, \$checkresult); + + if ($list eq 'advice_of_charge' || $checkresult) { + my $blocklist = $$preferences{$list}; + $blocklist = [] unless defined $blocklist; + $blocklist = [ $blocklist ] unless ref $blocklist; + $$preferences{$list} = [ @$blocklist, $add ]; + } + else { + $messages{msgadd} = 'Client.Syntax.InvalidSipUsernamePattern'; + $c->session->{blockaddtxt} = $add; + } + } + elsif (defined $del) { # delete link next to entries in block list + my $blocklist = $$preferences{$list}; + if (defined $blocklist) { + $blocklist = [ $blocklist ] unless ref $blocklist; + if($c->request->params->{block_stat}) { + $$preferences{$list} = [ grep { $_ ne $del } @$blocklist ]; + } else { + $$preferences{$list} = [ grep { $_ ne '#'.$del } @$blocklist ]; + } + } + } + elsif (defined $act) { # activate/deactivate link next to entries in block list + my $blocklist = $$preferences{$list}; + if (defined $blocklist) { + $blocklist = [ $blocklist ] unless ref $blocklist; + if($c->request->params->{block_stat}) { + $$preferences{$list} = [ grep { $_ ne $act } @$blocklist ]; + push @{$$preferences{$list}}, '#'.$act; + } else { + $$preferences{$list} = [ grep { $_ ne '#'.$act } @$blocklist ]; + push @{$$preferences{$list}}, $act; + } + } + } unless(eval {keys %{$c->session->{messages}} }) { $c->model('Provisioning')->call_prov( $c, 'voip', 'set_domain_preferences', @@ -316,6 +372,7 @@ sub do_edit_list : Local { $c->session->{messages}{numerr} = 'Client.Voip.InputErrorFound'; } + $c->session->{messages} = \%messages; $c->response->redirect("/domain/edit_list?domain=$domain&list_name=$list"); } diff --git a/lib/admin/Controller/subscriber.pm b/lib/admin/Controller/subscriber.pm index 6f56a05..77df395 100644 --- a/lib/admin/Controller/subscriber.pm +++ b/lib/admin/Controller/subscriber.pm @@ -2532,7 +2532,7 @@ sub do_edit_list : Local { $add =~ s/ //g; return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'check_sip_username_shell_pattern', { pattern => $add }, \$checkresult); - if ($list eq 'outbound_prefixes' || $list eq 'rerouting_list' || $list eq 'custom_headers' || $checkresult) { + if ($list eq 'outbound_prefixes' || $list eq 'rerouting_list' || $list eq 'custom_headers' || $list eq 'advice_of_charge' || $checkresult) { my $blocklist = $$preferences{$list}; $blocklist = [] unless defined $blocklist; $blocklist = [ $blocklist ] unless ref $blocklist;