implemented fax settings and destinations forms


			
			
				2.0@2434
			
			
		
Daniel Tiefnig 17 years ago
parent 2dc05ac299
commit c613cc0ba5

@ -155,6 +155,13 @@ sub detail : Local {
\$speed_dial_slots
);
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_fax_preferences',
{ username => $c->session->{subscriber}{username},
domain => $c->session->{subscriber}{domain},
},
\$c->session->{subscriber}{fax_preferences}
);
$c->session->{subscriber}{registered_contacts} = $$regcon{result} if $$regcon{result};
$c->stash->{subscriber} = $c->session->{subscriber};
$c->stash->{subscriber}{subscriber_id} = $subscriber_id;
@ -210,6 +217,15 @@ sub detail : Local {
}
delete $c->session->{restore_vboxprefs_input};
}
if(ref $c->session->{restore_faxprefs_input} eq 'HASH') {
if(ref $c->stash->{subscriber}{fax_preferences} eq 'HASH') {
$c->stash->{subscriber}{fax_preferences} = { %{$c->stash->{subscriber}{fax_preferences}},
%{$c->session->{restore_faxprefs_input}} };
} else {
$c->stash->{subscriber}{fax_preferences} = $c->session->{restore_faxprefs_input};
}
delete $c->session->{restore_faxprefs_input};
}
### build preference array for TT ###
@ -239,8 +255,10 @@ sub detail : Local {
or $$pref{attribute} eq 'cfna')
{
if(defined $$preferences{$$pref{attribute}} and length $$preferences{$$pref{attribute}}) {
if($$preferences{$$pref{attribute}} =~ /voicebox\.local$/) {
if($$preferences{$$pref{attribute}} =~ /\@voicebox\.local$/) {
$$cftarget{voicebox} = 1;
} elsif($$preferences{$$pref{attribute}} =~ /\@fax2mail\.local$/) {
$$cftarget{fax2mail} = 1;
} else {
$$cftarget{sipuri} = $$preferences{$$pref{attribute}};
$$cftarget{sipuri} =~ s/^sip://i;
@ -316,10 +334,12 @@ sub detail : Local {
$c->stash->{show_pass} = $c->request->params->{show_pass};
$c->stash->{show_webpass} = $c->request->params->{show_webpass};
$c->stash->{show_faxpass} = $c->request->params->{show_faxpass};
$c->stash->{edit_subscriber} = $c->request->params->{edit_subscriber}
unless $is_new;
$c->stash->{edit_preferences} = $c->request->params->{edit_preferences};
$c->stash->{edit_voicebox} = $c->request->params->{edit_voicebox};
$c->stash->{edit_fax} = $c->request->params->{edit_fax};
return 1;
}
@ -607,6 +627,8 @@ sub update_preferences : Local {
}
} elsif($fw_target_select eq 'voicebox') {
$fw_target = 'sip:vmu'.$c->session->{subscriber}{cc}.$c->session->{subscriber}{ac}.$c->session->{subscriber}{sn}.'@voicebox.local';
} elsif($fw_target_select eq 'fax2mail') {
$fw_target = 'sip:'.$c->session->{subscriber}{cc}.$c->session->{subscriber}{ac}.$c->session->{subscriber}{sn}.'@fax2mail.local';
} else {
# wtf?
}
@ -1251,6 +1273,187 @@ sub do_edit_sd_list : Local {
}
sub update_fax : 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_by_id',
{ subscriber_id => $subscriber_id },
\$c->session->{subscriber}
);
my $faxprefs;
$$faxprefs{name} = $c->request->params->{name} || undef;
$$faxprefs{password} = $c->request->params->{password} || undef;
$$faxprefs{active} = $c->request->params->{active} ? 1 : undef;
### save settings ###
unless(keys %messages) {
if($c->model('Provisioning')->call_prov( $c, 'voip', 'set_subscriber_fax_preferences',
{ username => $c->session->{subscriber}{username},
domain => $c->session->{subscriber}{domain},
preferences => $faxprefs,
},
undef
))
{
$messages{faxmsg} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/detail?subscriber_id=$subscriber_id#faxprefs");
return;
}
} else {
$messages{faxerr} = 'Client.Voip.InputErrorFound';
}
$c->session->{messages} = \%messages;
$$faxprefs{repass} = $$faxprefs{password};
$c->session->{restore_faxprefs_input} = $faxprefs;
$c->response->redirect("/subscriber/detail?subscriber_id=$subscriber_id&edit_fax=1#faxprefs");
return;
}
sub edit_destlist : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/subscriber_edit_destlist.tt';
my %messages;
my $subscriber_id = $c->request->params->{subscriber_id};
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_by_id',
{ subscriber_id => $subscriber_id },
\$c->session->{subscriber}
);
my $preferences;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_fax_preferences',
{ username => $c->session->{subscriber}{username},
domain => $c->session->{subscriber}{domain},
},
\$preferences
);
my $list = $c->request->params->{list_name};
if(defined $$preferences{$list}) {
my $destlist = ref $$preferences{$list} ? $$preferences{$list} : [ $$preferences{$list} ];
my $bg = '';
my $i = 1;
foreach my $entry (sort { $$a{destination} cmp $$b{destination} } @$destlist) {
if($$entry{destination} =~ /^\d+$/) {
my $scc = $c->session->{subscriber}{cc};
$$entry{destination} = '+'.$$entry{destination};
$$entry{destination} =~ s/^\+$scc/0/;
}
push @{$c->stash->{list_data}}, { %$entry,
background => $bg ? '' : 'tr_alt',
id => $i++,
};
$bg = !$bg;
}
}
$c->stash->{subscriber} = $c->session->{subscriber};
$c->stash->{subscriber_id} = $subscriber_id;
$c->stash->{list_name} = $list;
$c->stash->{edit_dest} = $c->request->params->{list_edit};
if(defined $c->session->{arefill}) {
$c->stash->{arefill} = $c->session->{arefill};
delete $c->session->{arefill};
}
return 1;
}
sub do_edit_destlist : Local {
my ( $self, $c ) = @_;
my %messages;
my %entry;
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 $preferences;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_fax_preferences',
{ username => $c->session->{subscriber}{username},
domain => $c->session->{subscriber}{domain},
},
\$preferences
);
my $list = $c->request->params->{list_name};
# delete link in destination list
# this is also sent by the save link next to entries in edit mode
my $del = $c->request->params->{list_del};
if(defined $del) {
my $destlist = $$preferences{$list};
if(defined $destlist) {
$destlist = [ $destlist ] unless ref $destlist;
$$preferences{$list} = [ grep { $$_{destination} ne $del } @$destlist ];
}
}
# input text field to add new entry to destination list
# this is also sent by the save link next to entries in edit mode
my $add = $c->request->params->{list_add};
if(defined $add) {
my $checkresult;
if($add =~ /^\d+$/) {
if($add =~ /^\+[1-9][0-9]+$/) {
$add =~ s/^\+//;
} elsif($add =~ /^00[1-9][0-9]+$/) {
$add =~ s/^00//;
} elsif($add =~ /^0[1-9][0-9]+$/) {
$add =~ s/^0/$c->session->{subscriber}{cc}/e;
} else {
$add = $c->session->{subscriber}{cc} . $c->session->{subscriber}{ac} . $add;
}
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'check_E164_number', $add, \$checkresult);
} else {
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'check_email', $add, \$checkresult);
}
unless($checkresult) {
$messages{msgadd} = 'Client.Voip.MalformedFaxDestination';
$c->session->{arefill}{destination} = $add;
}
$entry{destination} = $add;
$entry{filetype} = $c->request->params->{filetype} || 'TIFF';
$entry{cc} = $c->request->params->{cc} ? 1 : 0;
$entry{incoming} = $c->request->params->{incoming} ? 1 : 0;
$entry{outgoing} = $c->request->params->{outgoing} ? 1 : 0;
$entry{status} = $c->request->params->{status} ? 1 : 0;
my $destlist = $$preferences{$list};
$destlist = [] unless defined $destlist;
$destlist = [ $destlist ] unless ref $destlist;
$$preferences{$list} = [ @$destlist, \%entry ];
$c->session->{arefill} = \%entry if keys %messages;
}
unless(keys %messages) {
$c->model('Provisioning')->call_prov( $c, 'voip', 'set_subscriber_fax_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_destlist?subscriber_id=$subscriber_id&list_name=$list");
}
sub expire : Local {
my ( $self, $c ) = @_;

@ -271,10 +271,16 @@
[% IF edit_preferences %]
<label for="cfvoicebox">
<input type="radio" id="cfvoicebox" value="voicebox" name="fw_target" class="radio"
[% IF ! preference.value.sipuri %]checked="checked"[% END %] />
[% IF preference.value.voicebox %]checked="checked"[% END %] />
Voicebox
</label>
<br clear="all" />
<label for="cffaxserver">
<input type="radio" id="cffaxserver" value="fax2mail" name="fw_target" class="radio"
[% IF preference.value.fax2mail %]checked="checked"[% END %] />
Fax2Mail
</label>
<br clear="all" />
<label for="cfsipuri">
<input type="radio" id="cfsipuri" value="sipuri" name="fw_target" class="radio"
[% IF preference.value.sipuri %]checked="checked"[% END %] />
@ -283,11 +289,13 @@
<input type="text" id="cfsipuritxt" name="fw_sipuri" size="25" value="[% preference.value.sipuri %]"
[% IF ! edit_preferences %]class="disabled" disabled="disabled"[% END %] />
[% ELSE %]
[% IF preference.value.sipuri %]
<input type="text" size="25" value="[% preference.value.sipuri %]"
class="disabled" disabled="disabled" />
[% ELSE %]
[% IF preference.value.voicebox %]
Voicebox
[% ELSIF preference.value.fax2mail %]
Fax2Mail
[% ELSE %]
<input type="text" size="25" value="[% preference.value.sipuri %]"
class="disabled txtpreference" disabled="disabled" />
[% END %]
[% END %]
</td>
@ -426,3 +434,90 @@
[% END %]
[% IF subscriber.fax_preferences %]
<h3 id="faxprefs">Fax Preferences</h3>
[% UNLESS Catalyst.session.admin.read_only %]
<div class="actions">
<a href="detail?subscriber_id=[% subscriber.subscriber_id %]&amp;edit_fax=1#faxprefs" class="aaction">edit</a>
[% IF edit_fax %]
<a href="detail?subscriber_id=[% subscriber.subscriber_id %]#faxprefs" class="aaction">cancel</a>
[% END %]
</div>
[% END %]
<div class="p1">
[% IF messages.faxmsg %]<div class="goodmsg">[% messages.faxmsg %]</div>[% END %]
[% IF messages.faxerr %]<div class="errormsg">[% messages.faxerr %]</div>[% END %]
<form action="update_fax" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber.subscriber_id %]" />
<table>
<tr>
<td class="tdkey">name:</td>
<td>
<input type="text" name="name" [% IF ! edit_fax %]class="disabled" disabled="disabled"[% END %]
value="[% subscriber.fax_preferences.name %]" />
</td>
</tr>
[% IF messages.faxname %]<tr><td /><td><div class="errormsg">[% messages.faxname %]</div></td></tr>[% END %]
<tr>
<td class="tdkey">password:</td>
<td>
[% IF edit_fax %]
<input type="text" name="password" value="[% subscriber.fax_preferences.repass %]" />
[% ELSE %]
<input type="text" name="password" class="disabled" disabled="disabled"
[% IF show_faxpass && Catalyst.session.admin.show_passwords %]
value="[% subscriber.fax_preferences.password %]" />
<a href="?subscriber_id=[% subscriber.subscriber_id %]#faxprefs" class="apass">Hide</a>
[% ELSE %]
[% IF subscriber.password %]
value="********" />
[% IF Catalyst.session.admin.show_passwords %]
<a href="?subscriber_id=[% subscriber.subscriber_id %]&amp;show_faxpass=1#faxprefs" class="apass">Show</a>
[% END %]
[% ELSE %]
value="" />
[% END %]
[% END %]
[% END %]
</td>
</tr>
[% IF messages.faxpass %]<tr><td /><td><div class="errormsg">[% messages.faxpass %]</div></td></tr>[% END %]
<tr>
<td class="tdkey">active:</td>
<td>
<input type="checkbox" name="active" class="checkbox" [% IF ! edit_fax %]disabled="disabled"[% END %]
[% IF subscriber.fax_preferences.active %]checked="checked"[% END %] />
</td>
</tr>
<tr>
<td class="tdkey">destinations:</td>
<td>
[% IF subscriber.fax_preferences.destinations %]
<select size="1" name="destinations">
[% FOREACH dest = subscriber.fax_preferences.destinations %]
<option>[% dest.destination %]</option>
[% END %]
</select>
[% ELSE %]
<select size="1" name="destinations">
<option />
</select>
[% END %]
[% IF ! edit_fax && ! Catalyst.session.admin.read_only %]
&nbsp;
<a href="edit_destlist?subscriber_id=[% subscriber.subscriber_id %]&amp;list_name=destinations"
class="aaction">edit list</a>
[% END %]
</td>
</tr>
</table>
[% IF edit_fax %]
<input type="submit" class="but" value="Save &#187;" />
[% END %]
</form>
</div>
[% END %]

@ -0,0 +1,171 @@
<h3>Edit fax [% list_name %] 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;#faxprefs" class="aaction">back</a>
</div>
<div class="p1">
<div class="list_explanation">
The fax messages and/or notifications will be distributed to the following list of email addresses and phone numbers.
</div>
<table>
<tr class="table_header">
<td>destination</td>
<td>filetype</td>
<td class="tdcenter">CC</td>
<td class="tdcenter">incoming</td>
<td class="tdcenter">outgoing</td>
<td class="tdcenter">status</td>
<td />
<td />
</tr>
[% FOREACH listentry = list_data %]
<!-- <tr class="[% listentry.background %]"> -->
[% IF listentry.destination == edit_dest %]
<tr>
<form action="do_edit_destlist" method="post">
<td> [% listentry.destination %] </td>
<td>
<select size="1" name="filetype"
title="for fax2mail: select the file format for fax message delivery"
>
<option [% IF listentry.filetype == "TIFF" %]selected="selected"[% END %]>TIFF</option>
<option [% IF listentry.filetype == "PS" %]selected="selected"[% END %]>PS</option>
<option [% IF listentry.filetype == "PDF" %]selected="selected"[% END %]>PDF</option>
<option [% IF listentry.filetype == "PDF14" %]selected="selected"[% END %]>PDF14</option>
</select>
</td>
<td class="tdcenter"><input type="checkbox" class="checkbox" name="cc"
title="for fax2mail: if checked, the address will be written to the CC header"
[% IF listentry.cc %]checked="checked"[% END %] /></td>
<td class="tdcenter"><input type="checkbox" class="checkbox" name="incoming"
title="if checked, incoming fax messages will be delivered to this destination"
[% IF listentry.incoming %]checked="checked"[% END %] /></td>
<td class="tdcenter"><input type="checkbox" class="checkbox" name="outgoing"
title="if checked, outgoing fax messages will be delivered to this destination"
[% IF listentry.outgoing %]checked="checked"[% END %] /></td>
<td class="tdcenter"><input type="checkbox" class="checkbox" name="status"
title="if checked, status information for outgoing fax messages will be delivered to this destination"
[% IF listentry.status %]checked="checked"[% END %] /></td>
<td>
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<input type="hidden" name="list_name" value="[% list_name %]" />
<input type="hidden" name="list_del" value="[% listentry.destination %]" />
<input type="hidden" name="list_add" value="[% listentry.destination %]" />
<div class="postlink">
<label for="listedit[% listentry.id %]">save</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif"
alt="" id="listedit[% listentry.id %]" />
</div>
</td>
</form>
<form action="edit_destlist" method="post">
<td>
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<input type="hidden" name="list_name" value="[% list_name %]" />
<div class="postlink">
<label for="listdel[% listentry.id %]">cancel</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif"
alt="" id="listdel[% listentry.id %]" />
</div>
</td>
</form>
</tr>
[% ELSE %]
<tr>
<td> [% listentry.destination %] </td>
<td> [% listentry.filetype %] </td>
<td class="tdcenter"><input type="checkbox" class="checkbox" disabled="disabled"
[% IF listentry.cc %]checked="checked"[% END %] /></td>
<td class="tdcenter"><input type="checkbox" class="checkbox" disabled="disabled"
[% IF listentry.incoming %]checked="checked"[% END %] /></td>
<td class="tdcenter"><input type="checkbox" class="checkbox" disabled="disabled"
[% IF listentry.outgoing %]checked="checked"[% END %] /></td>
<td class="tdcenter"><input type="checkbox" class="checkbox" disabled="disabled"
[% IF listentry.status %]checked="checked"[% END %] /></td>
<form action="edit_destlist" method="post">
<td>
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<input type="hidden" name="list_name" value="[% list_name %]" />
<input type="hidden" name="list_edit" value="[% listentry.destination %]" />
<div class="postlink">
<label for="listedit[% listentry.id %]">edit</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif"
alt="" id="listedit[% listentry.id %]" />
</div>
</td>
</form>
<form action="do_edit_destlist" method="post">
<td>
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<input type="hidden" name="list_name" value="[% list_name %]" />
<input type="hidden" name="list_del" value="[% listentry.destination %]" />
<div class="postlink">
<label for="listdel[% listentry.id %]">delete</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif"
alt="" id="listdel[% listentry.id %]" />
</div>
</td>
</form>
</tr>
[% END %]
[% END %]
<tr>
<td>&nbsp;</td><td /><td /><td /><td /><td /><td /><td />
</tr>
<tr>
<form action="/subscriber/do_edit_destlist" method="post">
<td>
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<input type="hidden" name="list_name" value="[% list_name %]" />
<input type="text" size="20" name="list_add" id="listaddtxt" value="[% arefill.destination %]"
title="enter a phone number or email address"
/>
</td>
<td>
<select size="1" name="filetype"
title="for fax2mail: select the file format for fax message delivery"
>
<option [% IF arefill.filetype == "TIFF" %]selected="selected"[% END %]>TIFF</option>
<option [% IF arefill.filetype == "PS" %]selected="selected"[% END %]>PS</option>
<option [% IF arefill.filetype == "PDF" %]selected="selected"[% END %]>PDF</option>
<option [% IF arefill.filetype == "PDF14" %]selected="selected"[% END %]>PDF14</option>
</select>
</td>
<td class="tdcenter">
<input type="checkbox" class="checkbox" name="cc"
title="for fax2mail: if checked, the address will be written to &quot;Cc&quot; instead of &quot;To&quot;"
[% IF arefill.cc %]checked="checked"[% END %] />
</td>
<td class="tdcenter">
<input type="checkbox" class="checkbox" name="incoming"
title="if checked, incoming fax messages will be delivered to this destination"
[% IF arefill.incoming %]checked="checked"[% END %] />
</td>
<td class="tdcenter">
<input type="checkbox" class="checkbox" name="outgoing"
title="if checked, outgoing fax messages will be delivered to this destination"
[% IF arefill.outgoing %]checked="checked"[% END %] />
</td>
<td class="tdcenter">
<input type="checkbox" class="checkbox" name="status"
title="if checked, status information for outgoing fax messages will be delivered to this destination"
[% IF arefill.status %]checked="checked"[% END %] />
</td>
<td colspan="2">
<div class="postlink">
<label for="listadd">Add entry</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="listadd" />
</div>
</td>
</form>
</tr>
</table>
[% IF messages.msgadd %]<div class="errormsg">[% messages.msgadd %]</div>[% END %]
</div>
Loading…
Cancel
Save