implemented pagination for number blocks

2.1@2833
Daniel Tiefnig 17 years ago
parent 3fbee5f333
commit 4170c87ec6

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

@ -407,6 +407,7 @@ ul#topsubmenu {
#contentplace .registered_contacts,
#contentplace .billing_fees,
#contentplace .billing_peaktimes,
#contentplace .numberblocks,
#contentplace .domains
{
width: 100%;

@ -1,4 +1,60 @@
<h3>Existing Number Blocks</h3>
[% UNLESS Catalyst.session.admin.read_only %]
<h3 id="create_block">Create Number Block</h3>
<div class="p1">
[% IF messages.cblockmsg %]<div class="goodmsg">[% messages.cblockmsg %]</div>[% END %]
[% IF messages.cblockerr %]<div class="errormsg">[% messages.cblockerr %]</div>[% END %]
<form action="/number/do_create_block" method="post">
<input type="hidden" name="offset" value="[% offset %]" />
<table class="numberblocks">
<tr class="table_header">
<td style="width:60px;">cc</td>
<td style="width:60px;">ac</td>
<td style="width:80px;">sn_prefix</td>
<td style="width:80px;">sn_length</td>
<td class="tdcenter" style="width:100px;">authoritative</td>
<td class="tdcenter" style="width:100px;">allocable</td>
<td style="width:40px;" />
<td style="width:60px;" />
</tr>
<tr>
<td><input type="text" class="irealshort" title="country code, integer"
name="cc" value="[% crefill.cc %]" />
</td>
<td><input type="text" class="irealshort" title="area code, integer"
name="ac" value="[% crefill.ac %]" />
</td>
<td><input type="text" class="ishort" title="subscriber number prefix, numeric string"
name="sn_prefix" value="[% crefill.sn_prefix %]" />
</td>
<td><input type="text" class="irealshort" title="subscriber number length, integer"
name="sn_length" value="[% crefill.data.sn_length %]" />
</td>
<td class="tdcenter">
<input type="checkbox" class="checkbox" title="check if NGCP is authoritative for this number block"
name="authoritative" [% IF crefill.data.authoritative %]checked="checked"[% END %] />
</td>
<td class="tdcenter">
<input type="checkbox" class="checkbox" title="check if numbers should be automatically assigned from this number block"
name="allocable" [% IF crefill.data.allocable %]checked="checked"[% END %] />
</td>
<td>
<div class="postlink">
<label for="blockadd">add</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="blockadd" />
</div>
</td>
<td />
</tr>
</table>
</form>
[% IF crefill && prov_error %]<div class="errormsg">[% prov_error %]</div>[% END %]
</div>
[% END %]
<h3 id="existing_blocks">Existing Number Blocks</h3>
<div class="p1">
[% IF messages.eblockmsg %]<div class="goodmsg">[% messages.eblockmsg %]</div>[% END %]
@ -18,11 +74,19 @@
<td style="width:60px;" />
</tr>
[% 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 %]
<tr class="tr_alt">
[% ELSE %]
[% bgflip = 1 %]
<tr>
[% END %]
<form action="/number/do_update_block" method="post">
<input type="hidden" name="offset" value="[% offset %]" />
<input type="hidden" name="cc" value="[% block.cc %]" />
<input type="hidden" name="ac" value="[% block.ac %]" />
<input type="hidden" name="sn_prefix" value="[% block.sn_prefix %]" />
@ -45,10 +109,16 @@
</div>
</td>
</form>
<td><a href="/number" class="aaction">cancel</a></td>
<td><a href="/number?offset=[% offset %]" class="aaction">cancel</a></td>
</tr>
[% ELSE %]
[% IF bgflip %]
[% bgflip = 0 %]
<tr class="tr_alt">
[% ELSE %]
[% bgflip = 1 %]
<tr>
[% END %]
<td>[% block.cc %]</td>
<td>[% block.ac %]</td>
<td>[% block.sn_prefix %]</td>
@ -63,10 +133,11 @@
</td>
<td>
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/number?edit_cc=[% block.cc %]&amp;edit_ac=[% block.ac %]&amp;edit_sn_prefix=[% block.sn_prefix %]" class="aaction">edit</a>
<a href="/number?edit_cc=[% block.cc %]&amp;edit_ac=[% block.ac %]&amp;edit_sn_prefix=[% block.sn_prefix %]&amp;offset=[% offset %]" class="aaction">edit</a>
[% END %]
</td>
<form action="/number/do_delete_block" method="post">
<input type="hidden" name="offset" value="[% offset %]" />
<input type="hidden" name="cc" value="[% block.cc %]" />
<input type="hidden" name="ac" value="[% block.ac %]" />
<input type="hidden" name="sn_prefix" value="[% block.sn_prefix %]" />
@ -83,63 +154,45 @@
[% END %]
[% END %]
</table>
[% IF pagination %]
<div class="pagination">
<ul>
[% IF offset == 0 %]
<li class="disablepage">&#171; prev</li>
[% ELSE %]
<li class="nextpage">
<a href="/number?offset=[% offset - 1 %]#existing_blocks">&#171; prev</a>
</li>
[% END %]
[% FOREACH pagine = pagination %]
[% IF pagine.offset == offset %]
<li class="currentpage">
[% pagine.offset + 1 %]
</li>
[% ELSIF pagine.offset == -1 %]
...
[% ELSE %]
<li>
<a href="/number?offset=[% pagine.offset %]#existing_blocks">[% pagine.offset + 1 %]</a>
</li>
[% END %]
[% END %]
[% IF offset >= max_offset %]
<li class="disablepage">
next &#187;
</li>
[% ELSE %]
<li class="nextpage">
<a href="/number?offset=[% offset + 1 %]#existing_blocks">next &#187;</a>
</li>
[% END %]
</ul>
</div>
[% END %]
[% ELSE %]
No number blocks found in the database.
[% END %]
</div>
[% UNLESS Catalyst.session.admin.read_only %]
<h3 id="create_block">Create Number Block</h3>
<div class="p1">
[% IF messages.cblockmsg %]<div class="goodmsg">[% messages.cblockmsg %]</div>[% END %]
[% IF messages.cblockerr %]<div class="errormsg">[% messages.cblockerr %]</div>[% END %]
<form action="/number/do_create_block" method="post">
<table class="numberblocks">
<tr class="table_header">
<td style="width:60px;">cc</td>
<td style="width:60px;">ac</td>
<td style="width:80px;">sn_prefix</td>
<td style="width:80px;">sn_length</td>
<td class="tdcenter" style="width:100px;">authoritative</td>
<td class="tdcenter" style="width:100px;">allocable</td>
<td style="width:40px;" />
<td style="width:60px;" />
</tr>
<tr>
<td><input type="text" class="irealshort" title="country code, integer"
name="cc" value="[% crefill.cc %]" />
</td>
<td><input type="text" class="irealshort" title="area code, integer"
name="ac" value="[% crefill.ac %]" />
</td>
<td><input type="text" class="ishort" title="subscriber number prefix, numeric string"
name="sn_prefix" value="[% crefill.sn_prefix %]" />
</td>
<td><input type="text" class="irealshort" title="subscriber number length, integer"
name="sn_length" value="[% crefill.data.sn_length %]" />
</td>
<td class="tdcenter">
<input type="checkbox" class="checkbox" title="check if NGCP is authoritative for this number block"
name="authoritative" [% IF crefill.data.authoritative %]checked="checked"[% END %] />
</td>
<td class="tdcenter">
<input type="checkbox" class="checkbox" title="check if numbers should be automatically assigned from this number block"
name="allocable" [% IF crefill.data.allocable %]checked="checked"[% END %] />
</td>
<td>
<div class="postlink">
<label for="blockadd">add</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="blockadd" />
</div>
</td>
<td />
</tr>
</table>
</form>
[% IF crefill && prov_error %]<div class="errormsg">[% prov_error %]</div>[% END %]
</div>
[% END %]

Loading…
Cancel
Save