Add call-thru allowed-CLI management.

3.5
Andreas Granig 14 years ago
parent 1bfb34682c
commit 822ac82031

@ -619,6 +619,7 @@ sub preferences : Local {
my $cf_tsets;
my $cf_maps;
my $trusted_sources;
my $callthru_clis;
my $subscriber_id = $c->request->params->{subscriber_id};
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_voip_account_subscriber_by_id',
@ -659,7 +660,12 @@ sub preferences : Local {
},
\$trusted_sources,
);
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_ccmap_entries',
{ username => $$subscriber{username},
domain => $$subscriber{domain},
},
\$callthru_clis
);
# voicebox requires a number
if(length $$subscriber{sn} && $c->config->{voicemail_features}) {
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_voicebox_preferences',
@ -696,6 +702,7 @@ sub preferences : Local {
$c->stash->{cf_dsets} = $cf_dsets;
$c->stash->{cf_tsets} = $cf_tsets;
$c->stash->{cf_maps} = $cf_maps;
$c->stash->{callthru_clis} = $callthru_clis;
$c->stash->{subscriber} = $subscriber;
$c->stash->{subscriber}{subscriber_id} = $subscriber_id;
@ -3059,6 +3066,102 @@ sub do_edit_destlist : Local {
$c->response->redirect("/subscriber/edit_destlist?subscriber_id=$subscriber_id&list_name=$list");
}
sub edit_callthru_list : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/subscriber_edit_callthru_list.tt';
my %messages;
my $subscriber;
my $subscriber_id = $c->request->params->{subscriber_id};
return unless $c->model('Provisioning')->call_prov( $c, 'billing', 'get_voip_account_subscriber_by_id',
{ subscriber_id => $subscriber_id },
\$subscriber
);
$c->stash->{subscriber} = $subscriber;
$c->stash->{subscriber_id} = $subscriber_id;
my $callthru_clis;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_ccmap_entries',
{ username => $$subscriber{username},
domain => $$subscriber{domain},
},
\$callthru_clis
);
$c->stash->{callthru_clis} = $callthru_clis;
$c->stash->{editid} = $c->request->params->{editid};
return 1;
}
sub do_edit_callthru_list : Local {
my ( $self, $c ) = @_;
my %messages;
my $subscriber;
my $subscriber_id = $c->request->params->{subscriber_id};
$c->response->redirect("/subscriber/edit_callthru_list?subscriber_id=$subscriber_id") unless
$c->model('Provisioning')->call_prov( $c, 'billing', 'get_voip_account_subscriber_by_id',
{ subscriber_id => $subscriber_id },
\$subscriber
);
my $action = $c->request->params->{action};
if($action eq "add") {
if($c->model('Provisioning')->call_prov( $c, 'voip', 'create_ccmap_entry',
{ username => $$subscriber{username},
domain => $$subscriber{domain},
auth_key => $c->request->params->{auth_key},
},
))
{
$messages{msg} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_callthru_list?subscriber_id=$subscriber_id");
return;
} else {
$messages{err} = 'Client.Voip.InputErrorFound';
}
} elsif($action eq "delete") {
if($c->model('Provisioning')->call_prov( $c, 'voip', 'delete_ccmap_entry',
{ username => $$subscriber{username},
domain => $$subscriber{domain},
id => $c->request->params->{editid},
},
))
{
$messages{msg} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_callthru_list?subscriber_id=$subscriber_id");
return;
} else {
$messages{err} = 'Client.Voip.InputErrorFound';
}
} elsif($action eq "save") {
if($c->model('Provisioning')->call_prov( $c, 'voip', 'update_ccmap_authkey',
{ username => $$subscriber{username},
domain => $$subscriber{domain},
id => $c->request->params->{editid},
auth_key => $c->request->params->{auth_key},
},
))
{
$messages{msg} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_callthru_list?subscriber_id=$subscriber_id");
return;
} else {
$messages{err} = 'Client.Voip.InputErrorFound';
}
}
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_callthru_list?subscriber_id=$subscriber_id");
}
=head1 BUGS AND LIMITATIONS
=over

@ -0,0 +1,59 @@
<h3>Edit Call Through CLIs for
<a class="noarrow" href="detail?subscriber_id=[% subscriber_id %]">
[% subscriber.username %]@[% subscriber.domain %]</a>
</h3>
<a href="preferences?subscriber_id=[% subscriber_id %]&amp;#callthru"><span class="button-back">Back</span></a>
[% IF messages.msg %]<div class="success">[% messages.msg %]</div>[% END %]
[% IF messages.err %]<div class="error">[% messages.err %]</div>[% END %]
<div class="hspace-20"></div>
<ul class="cleanlist">
[% FOREACH ccli = callthru_clis %]
<li class="ui-state-default">
[% IF editid == ccli.id && !Catalyst.session.admin.read_only %]
<form action="do_edit_callthru_list" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<input type="hidden" name="editid" value="[% ccli.id %]" />
<input type="hidden" name="action" value="save" />
<div class="span-14">
<input type="text" size="20" name="auth_key" value="[% ccli.auth_key %]" title="E.164 number string" />
</div>
<div class="span-1">
<button class="button-save" id="save[% ccli.id %]">Save</button>
</div>
<div class="span-1 last">
<a href="/subscriber/edit_callthru_list?subscriber_id=[% subscriber_id %]"><span class="button-cancel">Cancel</span></a>
</div>
</form>
[% ELSE %]
<div class="span-14">[% ccli.auth_key %]</div>
[% UNLESS Catalyst.session.admin.read_only %]
<div class="span-1">
<form action="do_edit_callthru_list" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<input type="hidden" name="editid" value="[% ccli.id %]" />
<input type="hidden" name="action" value="delete" />
<button class="button-delete" name="delete_key" id="del[% ccli.id %]">Delete</button>
</form>
</div>
<div class="span-1 last">
<a href="/subscriber/edit_callthru_list?subscriber_id=[% subscriber_id %]&editid=[% ccli.id %]"><span class="button-edit">Edit</span></a>
</div>
[% END %]
[% END %]
</li>
[% END %]
<li class="ui-state-default">
<form action="do_edit_callthru_list" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<input type="hidden" name="action" value="add" />
<div class="span-14">
<input type="text" size="20" name="auth_key" value="" title="E.164 number string" />
</div>
<div class="span-1 last">
<button class="button-add" id="add">Add</button>
</div>
</form>
</li>
</ul>

@ -366,6 +366,28 @@
</li>
</ul>
[% IF Catalyst.config.callthru_features %]
<div class="hspace-20"></div>
<h3 id="callthru">Call Through</h3>
<ul class="cleanlist">
<li class="ui-state-default">
<div class="span-4">Allowed CLIs:</div>
<div class="span-11">
<select size="1" name="speed_dial_slots">
[% FOREACH cc_cli = callthru_clis %]
<option>[% cc_cli.auth_key %]</option>
[% END %]
</select>
</div>
<div class="span-1 last">
[% UNLESS Catalyst.session.admin.read_only %]
<a href="edit_callthru_list?subscriber_id=[% subscriber.subscriber_id %]&amp;"><span class="button-edit">Edit List</span></a>
[% END %]
</div>
</li>
</ul>
[% END %]
[% IF subscriber.voicebox_preferences %]
<div class="hspace-20"></div>

Loading…
Cancel
Save