diff --git a/lib/admin/Controller/number.pm b/lib/admin/Controller/number.pm index b4c40fc..0854f2e 100644 --- a/lib/admin/Controller/number.pm +++ b/lib/admin/Controller/number.pm @@ -24,12 +24,33 @@ sub index : Private { my ( $self, $c ) = @_; $c->stash->{template} = 'tt/number.tt'; + my $limit = 10; + my $offset = $c->request->params->{offset} || 0; + $offset = 0 if $offset !~ /^\d+$/; + my $blocks; return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_number_blocks', - undef, + { filter => { limit => $limit, + offset => $limit * $offset, + }, + }, \$blocks ); - $c->stash->{blocks} = $blocks if eval { @$blocks }; + + if(eval { @{$$blocks{number_blocks}} }) { + $c->stash->{blocks} = $$blocks{number_blocks}; + $c->stash->{total_count} = $$blocks{total_count}; + $c->stash->{offset} = $offset; + + if($$blocks{total_count} > @{$$blocks{number_blocks}}) { + # paginate! + $c->stash->{pagination} = admin::Utils::paginate($$blocks{total_count}, $offset, $limit); + $c->stash->{max_offset} = $#{$c->stash->{pagination}}; + if(@{$$blocks{number_blocks}} == 1) { + $c->stash->{last_one} = 1; + } + } + } $c->stash->{edit_cc} = $c->request->params->{edit_cc}; @@ -70,6 +91,8 @@ sub do_create_block : Local { my %messages; my %settings; + my $offset = $c->request->params->{offset} || 0; + $settings{cc} = $c->request->params->{cc}; $settings{ac} = $c->request->params->{ac}; $settings{sn_prefix} = $c->request->params->{sn_prefix}; @@ -84,18 +107,18 @@ sub do_create_block : Local { { $messages{cblockmsg} = 'Web.NumberBlock.Created'; $c->session->{messages} = \%messages; - $c->response->redirect("/number#create_block"); + $c->response->redirect("/number?offset=$offset#create_block"); return; } $c->session->{crefill} = \%settings; - $c->response->redirect("/number#create_block"); + $c->response->redirect("/number?offset=$offset#create_block"); return; } $messages{cblockerr} = 'Client.Voip.InputErrorFound'; $c->session->{messages} = \%messages; $c->session->{crefill} = \%settings; - $c->response->redirect("/number#create_block"); + $c->response->redirect("/number?offset=$offset#create_block"); return; } @@ -111,6 +134,8 @@ sub do_update_block : Local { my %messages; my %settings; + my $offset = $c->request->params->{offset} || 0; + $settings{cc} = $c->request->params->{cc}; $settings{ac} = $c->request->params->{ac}; $settings{sn_prefix} = $c->request->params->{sn_prefix}; @@ -128,18 +153,18 @@ sub do_update_block : Local { { $messages{eblockmsg} = 'Web.NumberBlock.Updated'; $c->session->{messages} = \%messages; - $c->response->redirect("/number"); + $c->response->redirect("/number?offset=$offset#existing_blocks"); return; } $c->session->{erefill} = \%settings; - $c->response->redirect("/number?edit_cc=$settings{cc}&edit_ac=$settings{ac}&edit_sn_prefix=$settings{sn_prefix}"); + $c->response->redirect("/number?edit_cc=$settings{cc}&edit_ac=$settings{ac}&edit_sn_prefix=$settings{sn_prefix}&offset=$offset#existing_blocks"); return; } $messages{eblockerr} = 'Client.Voip.InputErrorFound'; $c->session->{messages} = \%messages; $c->session->{erefill} = \%settings; - $c->response->redirect("/number?edit_cc=$settings{cc}&edit_ac=$settings{ac}&edit_sn_prefix=$settings{sn_prefix}"); + $c->response->redirect("/number?edit_cc=$settings{cc}&edit_ac=$settings{ac}&edit_sn_prefix=$settings{sn_prefix}&offset=$offset#existing_blocks"); return; } @@ -154,6 +179,8 @@ sub do_delete_block : Local { my %settings; + my $offset = $c->request->params->{offset} || 0; + $settings{cc} = $c->request->params->{cc}; $settings{ac} = $c->request->params->{ac}; $settings{sn_prefix} = $c->request->params->{sn_prefix}; @@ -167,11 +194,11 @@ sub do_delete_block : Local { undef)) { $c->session->{messages} = { eblockmsg => 'Web.NumberBlock.Deleted' }; - $c->response->redirect("/number"); + $c->response->redirect("/number?offset=$offset#existing_blocks"); return; } - $c->response->redirect("/number"); + $c->response->redirect("/number?offset=$offset#existing_blocks"); return; } diff --git a/root/css/admin.css b/root/css/admin.css index 36ec4ec..55fad97 100644 --- a/root/css/admin.css +++ b/root/css/admin.css @@ -407,6 +407,7 @@ ul#topsubmenu { #contentplace .registered_contacts, #contentplace .billing_fees, #contentplace .billing_peaktimes, +#contentplace .numberblocks, #contentplace .domains { width: 100%; diff --git a/root/tt/number.tt b/root/tt/number.tt index 0fd7a0b..ee3008f 100644 --- a/root/tt/number.tt +++ b/root/tt/number.tt @@ -1,4 +1,60 @@ -

Existing Number Blocks

+ [% UNLESS Catalyst.session.admin.read_only %] +

Create Number Block

+ +
+ [% IF messages.cblockmsg %]
[% messages.cblockmsg %]
[% END %] + [% IF messages.cblockerr %]
[% messages.cblockerr %]
[% END %] + +
+ + + + + + + + + + + + + + + + + + + +
ccacsn_prefixsn_lengthauthoritativeallocable + +
+ + + + + + + + + + +
+
+ [% IF crefill && prov_error %]
[% prov_error %]
[% END %] + +
+ [% END %] + +

Existing Number Blocks

[% IF messages.eblockmsg %]
[% messages.eblockmsg %]
[% END %] @@ -18,11 +74,19 @@ [% id = 0 %] + [% bgflip = 1 %] [% FOREACH block = blocks %] [% id = id + 1 %] [% IF block.cc == edit_cc && block.ac == edit_ac && block.sn_prefix == edit_sn_prefix %] + [% IF bgflip %] + [% bgflip = 0 %] + + [% ELSE %] + [% bgflip = 1 %] + [% END %]
+ @@ -45,10 +109,16 @@
- cancel + cancel [% ELSE %] + [% IF bgflip %] + [% bgflip = 0 %] + + [% ELSE %] + [% bgflip = 1 %] + [% END %] [% block.cc %] [% block.ac %] [% block.sn_prefix %] @@ -63,10 +133,11 @@ [% UNLESS Catalyst.session.admin.read_only %] - edit + edit [% END %]
+ @@ -83,63 +154,45 @@ [% END %] [% END %] + + [% IF pagination %] + + [% END %] + [% ELSE %] No number blocks found in the database. [% END %] - [% UNLESS Catalyst.session.admin.read_only %] -

Create Number Block

- -
- [% IF messages.cblockmsg %]
[% messages.cblockmsg %]
[% END %] - [% IF messages.cblockerr %]
[% messages.cblockerr %]
[% END %] - - - - - - - - - - - - - - - - - - - - -
ccacsn_prefixsn_lengthauthoritativeallocable - -
- - - - - - - - - - -
- - [% IF crefill && prov_error %]
[% prov_error %]
[% END %] - -
- [% END %] -