+speed dial web UI components

2.0@2434
Rene Krenn 17 years ago
parent fad413ea30
commit 02b7a7d8a3

@ -117,6 +117,7 @@ sub detail : Local {
my $is_new = $c->request->params->{new};
my $preferences;
my $speed_dial_slots;
unless($is_new) {
my $subscriber_id = $c->request->params->{subscriber_id};
@ -146,6 +147,13 @@ sub detail : Local {
},
\$regcon
);
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_speed_dial_slots',
{ username => $c->session->{subscriber}{username},
domain => $c->session->{subscriber}{domain},
},
\$speed_dial_slots
);
$c->session->{subscriber}{registered_contacts} = $$regcon{result} if $$regcon{result};
$c->stash->{subscriber} = $c->session->{subscriber};
@ -154,6 +162,7 @@ sub detail : Local {
config->{VARIABLES}{site_config}{language},
'Web.Subscriber.Lock'.$$preferences{lock})
if $$preferences{lock};
} else {
$c->stash->{account_id} = $c->request->params->{account_id};
$c->stash->{edit_subscriber} = 1;
@ -279,6 +288,27 @@ sub detail : Local {
}
}
my $i = 1;
my $default_speed_dial_slots = $self->_get_default_slot_list();
my @used_default_speed_dial_slots = ();
foreach my $sdentry (sort {$a->{id} <=> $b->{id}} @{$$speed_dial_slots{result}}) {
push @{$c->stash->{speed_dial_slots}}, { id => $$sdentry{id},
number => $i++,
label => 'Slot ' . $$sdentry{slot} . ': ' . $$sdentry{destination}
};
if (grep { $_ eq $$sdentry{slot} } @$default_speed_dial_slots) {
push @used_default_speed_dial_slots,$$sdentry{slot};
}
}
foreach my $free_slot (@$default_speed_dial_slots) {
unless (grep { $_ eq $free_slot } @used_default_speed_dial_slots) {
push @{$c->stash->{speed_dial_slots}}, { id => '',
number => $i++,
label => 'Slot ' . $free_slot . ': empty'
};
}
}
$c->stash->{show_pass} = $c->request->params->{show_pass};
$c->stash->{show_webpass} = $c->request->params->{show_webpass};
$c->stash->{edit_subscriber} = $c->request->params->{edit_subscriber}
@ -745,7 +775,7 @@ sub edit_list : Local {
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 ? '' : 'alt',
background => $bg ? '' : 'tr_alt',
id => $i++,
active => $$blockentry{active},
};
@ -863,6 +893,151 @@ sub do_edit_list : Local {
}
sub edit_speed_dial_slots : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/speed_dial_list.tt';
my %messages;
my $subscriber_id = $c->request->params->{subscriber_id};
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_byid',
{ subscriber_id => $subscriber_id },
\$c->session->{subscriber}
);
my $speed_dial_slots;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_speed_dial_slots',
{ username => $c->session->{subscriber}{username},
domain => $c->session->{subscriber}{domain},
},
\$speed_dial_slots
);
my $i = 1;
my $bg = '';
my $default_speed_dial_slots = $self->_get_default_slot_list();
my @used_default_speed_dial_slots = ();
foreach my $sdentry (sort {$a->{id} <=> $b->{id}} @{$$speed_dial_slots{result}}) {
push @{$c->stash->{speed_dial_slots}}, { id => $$sdentry{id},
number => $i++,
background => $bg ? '' : 'tr_alt',
slot => $$sdentry{slot},
destination => $$sdentry{destination}
};
if (grep { $_ eq $$sdentry{slot} } @$default_speed_dial_slots) {
push @used_default_speed_dial_slots,$$sdentry{slot};
}
$bg = !$bg;
}
$i = 0;
foreach my $free_slot (@$default_speed_dial_slots) {
unless (grep { $_ eq $free_slot } @used_default_speed_dial_slots) {
$i++;
push @{$c->stash->{free_speed_dial_slots}}, { number => $i,
slot => $free_slot
};
}
}
$c->stash->{subscriber} = $c->session->{subscriber};
$c->stash->{subscriber_id} = $subscriber_id;
if(defined $c->session->{addslottxt}) {
$c->stash->{addslottxt} = $c->session->{addslottxt};
delete $c->session->{addslottxt};
}
if(defined $c->session->{adddestinationtxt}) {
$c->stash->{adddestinationtxt} = $c->session->{adddestinationtxt};
delete $c->session->{adddestinationtxt};
}
return 1;
}
sub do_edit_sd_list : Local {
my ( $self, $c ) = @_;
my %messages;
my $subscriber_id = $c->request->params->{subscriber_id};
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_byid',
{ subscriber_id => $subscriber_id },
\$c->session->{subscriber}
);
# add new entry form
my $add_slot = $c->request->params->{add_slot};
my $add_destination = $c->request->params->{add_destination};
if(defined $add_slot) {
$c->model('Provisioning')->call_prov( $c, 'voip', 'create_speed_dial_slot',
{ username => $c->session->{subscriber}{username},
domain => $c->session->{subscriber}{domain},
data => {
slot => $add_slot,
destination => $add_destination
},
},
undef
);
#$messages{msgadd} = 'Client.Voip.MalformedNumberPattern';
$c->session->{addslottxt} = $add_slot;
$c->session->{adddestinationtxt} = $add_destination;
}
# delete link forms
my $delete_slotid = $c->request->params->{delete_id};
if(defined $delete_slotid) {
#unless(keys %messages) {
$c->model('Provisioning')->call_prov( $c, 'voip', 'delete_speed_dial_slot',
{ username => $c->session->{subscriber}{username},
domain => $c->session->{subscriber}{domain},
id => $delete_slotid
},
undef
);
#} else {
# $messages{numerr} = 'Client.Voip.InputErrorFound';
#}
}
# update link forms
my $update_slotid = $c->request->params->{update_id};
my $slot = $c->request->params->{slot};
my $destination = $c->request->params->{destination};
if(defined $update_slotid) {
$c->model('Provisioning')->call_prov( $c, 'voip', 'update_speed_dial_slot',
{ username => $c->session->{subscriber}{username},
domain => $c->session->{subscriber}{domain},
id => $update_slotid,
data => {
slot => $slot,
destination => $destination
},
},
undef
);
}
#unless(keys %messages) {
# $c->model('Provisioning')->call_prov( $c, 'voip', 'set_subscriber_preferences',
# { username => $c->session->{subscriber}{username},
# domain => $c->session->{subscriber}{domain},
# preferences => {
# $list => $$preferences{$list},
# },
# },
# undef
# );
#} else {
# $messages{numerr} = 'Client.Voip.InputErrorFound';
#}
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_speed_dial_slots?subscriber_id=$subscriber_id");
}
sub expire : Local {
my ( $self, $c ) = @_;
@ -889,6 +1064,20 @@ sub expire : Local {
$c->response->redirect("/subscriber/detail?subscriber_id=$subscriber_id");
}
#-# sub _get_default_slot_list
#-# parameter none
#-# return \@slots
#-# description generates list of default speed dial slots
sub _get_default_slot_list {
my $self = shift;
my @slots = ();
for (my $i = 0; $i < 10; $i++) {
push @slots,'#' . $i;
}
return \@slots;
}
=head1 BUGS AND LIMITATIONS

@ -0,0 +1,81 @@
<h3>Edit speed dial slots for
<a class="noarrow" href="detail?subscriber_id=[% subscriber_id %]">
[% subscriber.username %]@[% subscriber.domain %]</a>
</h3>
<div class="actions">
<a href="detail?subscriber_id=[% subscriber_id %]&amp;#userprefs" class="aaction">back</a>
</div>
<div class="p1">
[% IF messages.nummsg %]<div class="goodmsg">[% messages.nummsg %]</div>[% END %]
[% IF messages.numerr %]<div class="errormsg">[% messages.numerr %]</div>[% END %]
<div class="list_explanation">
[% IF speed_dial_slots %]
The following speed dial vertical service codes (slots) are defined:<br />
[% ELSE %]
No speed dial vertical service codes (slots) defined yet.<br />
[% END %]
</div>
<table>
<tr class="table_header">
<td>VSC</td>
<td>destination</td>
<td />
<td />
</tr>
[% FOREACH sdentry = speed_dial_slots %]
<tr class="[% sdentry.background %]">
<td >[% sdentry.slot %]</td>
<form action="/subscriber/do_edit_sd_list" method="post">
<td>
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<input type="hidden" name="update_id" value="[% sdentry.id %]" />
<input type="hidden" name="slot" value="[% sdentry.slot %]" />
<div class="postlink">
<input type="text" size="20" name="destination" id="destinationtxt" value="[% sdentry.destination %]" /> &nbsp;
<label for="listupdate[% sdentry.id %]">update</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="listupdate[% sdentry.id %]" />
</div>
</td>
</form>
<form action="/subscriber/do_edit_sd_list" method="post">
<td >
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<input type="hidden" name="delete_id" value="[% sdentry.id %]" />
<div class="postlink">
<label for="listdel[% sdentry.id %]">delete</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="listdel[% sdentry.id %]" />
</div>
</td>
</form>
</tr>
[% END %]
</table>
<br />
[% IF free_speed_dial_slots %]
<form action="/subscriber/do_edit_sd_list" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<label for="addslot">New entry:</label><br />
<div class="postlink">
VSC:&nbsp;<select size="1" name="add_slot" id="addslot">
[% FOREACH sdslot = free_speed_dial_slots %]
[% IF sdslot.slot == addslottxt %]
<option selected>[% sdslot.slot %]</option>
[% ELSE %]
<option>[% sdslot.slot %]</option>
[% END %]
[% END %]
</select>
Destination:&nbsp;<input type="text" size="20" name="add_destination" id="adddestination" value="[% adddestinationtxt %]" /> &nbsp;
<label for="sdadd">Add entry</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="sdadd" />
[% IF messages.msgadd %]<div class="errormsg">[% messages.msgadd %]</div>[% END %]
</div><br clear="all" />
</form>
[% ELSE %]
All speed dial vertical service codes in use. Please delete or modify the exisitng ones.
[% END %]
</div>

@ -212,9 +212,9 @@
<div class="p1">
[% IF messages.prefmsg %]<div class="goodmsg">[% messages.prefmsg %]</div>[% END %]
[% IF messages.preferr %]<div class="errormsg">[% messages.preferr %]</div>[% END %]
<form action="update_preferences" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber.subscriber_id %]" />
<table>
<form action="update_preferences" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber.subscriber_id %]" />
<table>
[% FOREACH preference = subscriber.preferences_array %]
[% IF preference.max_occur == 1 %]
[% IF preference.key == "block_in_mode" || preference.key == "block_out_mode" %]
@ -346,6 +346,27 @@
</form>
</div>
<h3 id="userprefs">Speed Dial</h3>
<div class="p1">
<table>
<tr>
<td class="tdkey">Speed dial slots:</td>
<td>
<select size="1" name="speed_dial_slots">
[% FOREACH sdslot = speed_dial_slots %]
<option>[% sdslot.label %]</option>
[% END %]
</select>
[% UNLESS Catalyst.session.admin.read_only %]
&nbsp;
<a href="edit_speed_dial_slots?subscriber_id=[% subscriber.subscriber_id %]&amp;"
class="aaction">edit list</a>
[% END %]
</td>
</tr>
</table>
</div>
[% IF subscriber.voicebox_preferences %]
<h3 id="vboxprefs">Voicebox Preferences</h3>

Loading…
Cancel
Save