Allow multiple CF mappings per CF type.

3.3
Andreas Granig 15 years ago
parent 6a8a0e3290
commit cdced45c5b

@ -784,7 +784,7 @@ sub preferences : Local {
$c->stash->{edit_voicebox} = $c->request->params->{edit_voicebox};
$c->stash->{edit_fax} = $c->request->params->{edit_fax};
$c->stash->{edit_reminder} = $c->request->params->{edit_reminder};
$c->stash->{edit_callforward} = $c->request->params->{edit_callforward};
$c->stash->{meditid} = $c->request->params->{meditid};
return 1;
}
@ -907,11 +907,63 @@ sub update_callforward : Local {
$c->stash->{template} = 'tt/subscriber_preferences.tt';
my %cfmap;
my @cfs = ("cfu", "cfb", "cft", "cfna");
foreach my $cf(@cfs) {
$cfmap{$cf}{destination_set_id} = (defined $c->request->params->{$cf.'_dest'} && $c->request->params->{$cf.'_dest'} != "0") ? $c->request->params->{$cf.'_dest'} : undef;
$cfmap{$cf}{time_set_id} = (defined $c->request->params->{$cf.'_time'} && $c->request->params->{$cf.'_time'} != "0") ? $c->request->params->{$cf.'_time'} : undef;
$cfmap{id} = $c->request->params->{map_id};
$cfmap{destination_set_id} = (defined $c->request->params->{dest} && $c->request->params->{dest} != "0") ? $c->request->params->{dest} : undef;
$cfmap{time_set_id} = (defined $c->request->params->{time} && $c->request->params->{time} != "0") ? $c->request->params->{time} : undef;
$cfmap{type} = $c->request->params->{type};
my $subscriber_id = $c->request->params->{subscriber_id};
$c->stash->{subscriber_id} = $subscriber_id;
my %messages;
my $subscriber;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_by_id',
{ subscriber_id => $subscriber_id },
\$subscriber,
);
$c->stash->{subscriber} = $subscriber;
my $ret;
unless(defined $cfmap{id}) {
delete $cfmap{id};
$ret = $c->model('Provisioning')->call_prov( $c, 'voip', 'create_subscriber_cf_map',
{ username => $subscriber->{username},
domain => $subscriber->{domain},
data => \%cfmap,
},
undef,
);
} else {
$ret = $c->model('Provisioning')->call_prov( $c, 'voip', 'update_subscriber_cf_map',
{ username => $subscriber->{username},
domain => $subscriber->{domain},
data => \%cfmap,
},
undef,
);
}
if($ret)
{
$messages{cfmsg} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/preferences?subscriber_id=$subscriber_id#callforward");
}
else
{
$messages{cferr} = 'Client.Voip.InputErrorFound';
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/preferences?subscriber_id=$subscriber_id&meditid=$cfmap{id}#callforward");
}
}
sub delete_callforward : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/subscriber_preferences.tt';
my %cfmap;
$cfmap{id} = $c->request->params->{map_id};
$cfmap{type} = $c->request->params->{type};
my $subscriber_id = $c->request->params->{subscriber_id};
$c->stash->{subscriber_id} = $subscriber_id;
@ -925,7 +977,7 @@ sub update_callforward : Local {
);
$c->stash->{subscriber} = $subscriber;
if($c->model('Provisioning')->call_prov( $c, 'voip', 'update_subscriber_cf_maps',
if($c->model('Provisioning')->call_prov( $c, 'voip', 'delete_subscriber_cf_map',
{ username => $subscriber->{username},
domain => $subscriber->{domain},
data => \%cfmap,
@ -941,7 +993,7 @@ sub update_callforward : Local {
{
$messages{cferr} = 'Client.Voip.InputErrorFound';
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/preferences?subscriber_id=$subscriber_id&edit_callforward=1#callforward");
$c->response->redirect("/subscriber/preferences?subscriber_id=$subscriber_id#callforward");
}
}

@ -1,3 +1,4 @@
<h3> Subscriber
<a class="noarrow" href="detail?subscriber_id=[% subscriber.subscriber_id %]">
[% subscriber.username %]@[% subscriber.domain %]</a>
@ -153,19 +154,11 @@
[% IF messages.cfmsg %]<div class="success">[% messages.cfmsg %]</div>[% END %]
[% IF messages.cferr %]<div class="error">[% messages.cferr %]</div>[% END %]
[% IF edit_callforward && prov_error %]<div class="error">[% prov_error %]</div>[% END %]
[% IF meditid && prov_error %]<div class="error">[% prov_error %]</div>[% END %]
[% UNLESS Catalyst.session.admin.read_only %]
<form action="update_callforward" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber.subscriber_id %]"/>
[% IF edit_callforward %]
<a href="preferences?subscriber_id=[% subscriber.subscriber_id %]#callforward"><span class="button-cancel">Cancel</span></a>
<button name="submit" class="button-save">Save</button>
[% ELSE %]
<a href="preferences?subscriber_id=[% subscriber.subscriber_id %]&edit_callforward=1#callforward"><span class="button-edit">Edit Call-Forwards</span></a>
<a href="edit_cf?subscriber_id=[% subscriber.subscriber_id %]"><span class="button-transfer">Edit Destination Sets</span></a>
<a href="edit_cf_times?subscriber_id=[% subscriber.subscriber_id %]"><span class="button-clock">Edit Time Sets</span></a>
[% END %]
<a href="edit_cf?subscriber_id=[% subscriber.subscriber_id %]"><span class="button-transfer">Edit Destination Sets</span></a>
<a href="edit_cf_times?subscriber_id=[% subscriber.subscriber_id %]"><span class="button-clock">Edit Time Sets</span></a>
[% END %]
<div class="hspace-20"></div>
@ -193,31 +186,83 @@
%]
[% FOREACH cf_type IN cf_types %]
<li class="ui-state-default">
<div class="span-5">[% cf_type.description %]:</div>
<div class="span-4">
<label for="cfdest_[% cf_type.name %]">to</label>
<select id="cfdest_[% cf_type.name %]" name="[% cf_type.name %]_dest" size="1" style="width: 120px;" [% UNLESS edit_callforward %]disabled="disabled"[% END %]>
<option value="0" [% UNLESS cf_maps.${cf_type.name}.defined %]selected="selected"[% END %]>&lt;disabled&gt;</option>
[% FOREACH dset IN cf_dsets %]
[% IF dset.destinations.size > 0 %]
<option value="[% dset.id %]" [% IF cf_maps.${cf_type.name}.destination_set_id == dset.id %]selected="selected"[% END %]>[% dset.name %]</option>
[% cf_map = cf_maps.${cf_type.name} %]
[% i = 0 %]
[% IF cf_map == '' %]
[% cf_map = [{ id=0, type=cf_type.name }] %]
[% ELSE %]
[% cf_map.push({ id=0, type=cf_type.name }) %]
[% END %]
[% FOREACH map IN cf_map %]
<li class="ui-state-default" id="cfmap_[% map.id %]">
[% IF i == 0 %]
<div class="span-5">[% cf_type.description %]:</div>
[% ELSE %]
<div class="span-5"></div>
[% END %]
[% IF (map.id == 0 || map.id == meditid) && !Catalyst.session.admin.read_only %]
<form action="update_callforward" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber.subscriber_id %]"/>
<input type="hidden" name="type" value="[% map.type %]"/>
<input type="hidden" name="map_id" value="[% map.id %]"/>
[% END %]
<div class="span-4">
<label for="cfdest_[% map.id %]">to</label>
<select id="cfdest_[% map.id %]" name="dest" size="1" style="width: 120px;" [% UNLESS meditid==map.id || map.id == 0 %]disabled="disabled"[% END %]>
<option value="0" [% UNLESS map.destination_set_id.defined %]selected="selected"[% END %]>&lt;none&gt;</option>
[% FOREACH dset IN cf_dsets %]
[% IF dset.destinations.size > 0 %]
<option value="[% dset.id %]" [% IF map.destination_set_id == dset.id %]selected="selected"[% END %]>[% dset.name %]</option>
[% END %]
[% END %]
</select>
</div>
<div class="span-6">
<label for="cftime_[% map.id %]">during period</label>
<select id="cftime_[% map.id %]" name="time" size="1" style="width: 120px;" [% UNLESS meditid==map.id || map.id == 0 %]disabled="disabled"[% END %]>
<option value="0" [% UNLESS map.time_set_id.defined %]selected="selected"[% END %]>&lt;always&gt;</option>
[% FOREACH tset IN cf_tsets %]
[% IF tset.periods.size > 0 %]
<option value="[% tset.id %]" [% IF map.time_set_id == tset.id %]selected="selected"[% END %]>[% tset.name %]</option>
[% END %]
[% END %]
</select>
</div>
<div class="span-1">
[% UNLESS Catalyst.session.admin.read_only %]
[% UNLESS map.id == 0 %]
[% IF map.id == meditid %]
<button class="button-save">Save</button>
</form>
[% ELSE %]
<a href="/subscriber/preferences?subscriber_id=[% subscriber.subscriber_id %]&meditid=[% map.id %]#cfmap_[% map.id %]"><span class="button-edit">Edit</span></a>
[% END %]
</form>
[% ELSE %]
<button class="button-add">Add</button>
</form>
[% END %]
[% END %]
</select>
</div>
<div class="span-6 last">
<label for="cftime_[% cf_type.name %]">during period</label>
<select id="cftime_[% cf_type.name %]" name="[% cf_type.name %]_time" size="1" style="width: 120px;" [% UNLESS edit_callforward %]disabled="disabled"[% END %]>
<option value="0" [% UNLESS cf_maps.${cf_type.name}.defined && cf_maps.${cf_type.name}.time_set_id.defined %]selected="selected"[% END %]>&lt;always&gt;</option>
[% FOREACH tset IN cf_tsets %]
[% IF tset.periods.size > 0 %]
<option value="[% tset.id %]" [% IF cf_maps.${cf_type.name}.time_set_id == tset.id %]selected="selected"[% END %]>[% tset.name %]</option>
</div>
<div class="span-1 last">
[% UNLESS Catalyst.session.admin.read_only %]
[% IF map.id != 0 && map.id != meditid %]
<form action="delete_callforward" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber.subscriber_id %]"/>
<input type="hidden" name="map_id" value="[% map.id %]"/>
<input type="hidden" name="type" value="[% map.type %]"/>
<button class="button-delete">Delete</button>
</form>
[% ELSIF map.id == meditid %]
<a href="/subscriber/preferences?subscriber_id=[% subscriber.subscriber_id %]#cfmap_[% map.id %]"><span class="button-cancel">Cancel</span></a>
[% END %]
[% END %]
</select>
</div>
</li>
</div>
</li>
[% i = i + 1 %]
[% END %]
[% END %]
</ul>
</form>

Loading…
Cancel
Save