implemented VSC web forms for domain

2.0@2434
Daniel Tiefnig 16 years ago
parent 0474cc7a70
commit dec981c2af

@ -213,6 +213,43 @@ sub detail : Local {
}
}
my $vscs;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_domain_vscs',
{ domain => $domain },
\$vscs
);
$c->stash->{vscs} = $$vscs{result} if eval { @{$$vscs{result}} };
my $vsc_actions;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_vsc_actions',
{ },
\$vsc_actions
);
@{$$vsc_actions{result}} = grep { my $tmp = $_;
! grep { $$_{action} eq $tmp }
eval { @{$$vscs{result}} }
}
eval { @{$$vsc_actions{result}} };
$c->stash->{vsc_actions} = $$vsc_actions{result} if @{$$vsc_actions{result}};
$c->stash->{edit_vsc} = $c->request->params->{edit_vsc};
if(exists $c->session->{vcrefill}) {
$c->stash->{vcrefill} = $c->session->{vcrefill};
delete $c->session->{vcrefill};
}
if(exists $c->session->{verefill}) {
$c->stash->{verefill} = $c->session->{verefill};
delete $c->session->{verefill};
} elsif($c->request->params->{edit_vsc}) {
foreach my $vsc (eval { @{$$vscs{result}} }) {
if($$vsc{action} eq $c->request->params->{edit_vsc}) {
$c->stash->{verefill} = $vsc;
last;
}
}
}
return 1;
}
@ -501,6 +538,128 @@ sub listen_audio : Local {
return;
}
=head2 do_create_vsc
Store a new VSC entry in the database.
=cut
sub do_create_vsc : Local {
my ( $self, $c ) = @_;
my %messages;
my %settings;
$settings{domain} = $c->request->params->{domain};
unless(length $settings{domain}) {
$c->response->redirect("/domain");
return;
}
$settings{action} = $c->request->params->{action};
$settings{data}{digits} = $c->request->params->{digits}
if length $c->request->params->{digits};
$settings{data}{audio_file_handle} = $c->request->params->{audio_file_handle};
$settings{data}{description} = $c->request->params->{description}
if length $c->request->params->{description};
if($c->model('Provisioning')->call_prov( $c, 'voip', 'create_domain_vsc',
\%settings,
undef))
{
$messages{vscmsg} = 'Web.VSC.Created';
$c->session->{messages} = \%messages;
$c->response->redirect("/domain/detail?domain=$settings{domain}#vsc");
return;
}
$messages{vscerr} = 'Client.Voip.InputErrorFound';
$c->session->{messages} = \%messages;
$c->session->{vcrefill} = \%settings;
$c->response->redirect("/domain/detail?domain=$settings{domain}#vsc");
return;
}
=head2 do_update_vsc
Update a VSC entry in the database.
=cut
sub do_update_vsc : Local {
my ( $self, $c ) = @_;
my %messages;
my %settings;
$settings{domain} = $c->request->params->{domain};
unless(length $settings{domain}) {
$c->response->redirect("/domain");
return;
}
$settings{action} = $c->request->params->{action};
unless(length $settings{action}) {
$c->response->redirect("/domain/detail?domain=$settings{domain}");
return;
}
$settings{data}{digits} = length $c->request->params->{digits}
? $c->request->params->{digits}
: undef;
$settings{data}{audio_file_handle} = $c->request->params->{audio_file_handle}
if defined $c->request->params->{audio_file_handle};
$settings{data}{description} = $c->request->params->{description};
if($c->model('Provisioning')->call_prov( $c, 'voip', 'update_domain_vsc',
\%settings,
undef))
{
$messages{vscmsg} = 'Web.VSC.Updated';
$c->session->{messages} = \%messages;
$c->response->redirect("/domain/detail?domain=$settings{domain}#vsc");
return;
}
$messages{vscerr} = 'Client.Voip.InputErrorFound';
$c->session->{messages} = \%messages;
$c->session->{verefill} = $settings{data};
$c->response->redirect("/domain/detail?domain=$settings{domain}&edit_vsc=$settings{action}#vsc");
return;
}
=head2 do_delete_vsc
Delete a VSC entry from the database.
=cut
sub do_delete_vsc : Local {
my ( $self, $c ) = @_;
my %settings;
$settings{domain} = $c->request->params->{domain};
unless(length $settings{domain}) {
$c->response->redirect("/domain");
return;
}
$settings{action} = $c->request->params->{action};
unless(length $settings{action}) {
$c->response->redirect("/domain/detail?domain=$settings{domain}");
return;
}
if($c->model('Provisioning')->call_prov( $c, 'voip', 'delete_domain_vsc',
\%settings,
undef))
{
$c->session->{messages} = { vscmsg => 'Web.VSC.Deleted' };
$c->response->redirect("/domain/detail?domain=$settings{domain}#vsc");
return;
}
$c->response->redirect("/domain/detail?domain=$settings{domain}#vsc");
return;
}
=head1 BUGS AND LIMITATIONS

@ -195,3 +195,126 @@
[% IF acrefill && prov_error %]<div class="errormsg">[% prov_error %]</div>[% END %]
</div>
<h3 id="vsc">Vertical Service Codes</h3>
<div class="p1">
[% IF messages.vscmsg %]<div class="goodmsg">[% messages.vscmsg %]</div>[% END %]
[% IF messages.vscerr %]<div class="errormsg">[% messages.vscerr %]</div>[% END %]
<table class="vscs">
<tr class="table_header">
<td style="width:120px;">Action</td>
<td style="width:40;">Digits</td>
<td style="width:120px;">Audio</td>
<td style="width:250px;">Description</td>
<td style="width:40px;" />
<td style="width:60px;" />
</tr>
[% id = 0 %]
[% FOREACH vsc = vscs %]
[% id = id + 1 %]
[% IF vsc.action == edit_vsc %]
<tr>
<form action="/domain/do_update_vsc" method="post">
<td>[% vsc.action %]</td>
<td>
<input type="text" maxlength="2" class="irealshort" title="two-digit dialcode for VoIP devices"
name="digits" value="[% verefill.digits %]" />
</td>
<td>
<select size="1" name="audio_file_handle"
title="the audio which will be played after execution">
[% FOREACH audio = audio_files %]
<option value="[% audio.handle %]"
[% IF verefill.audio_file_handle == audio.handle %]selected="selected"[% END %]
>[% audio.handle %]</option>
[% END %]
</select>
</td>
<td>
<input type="text" class="iaudiodesc" title="free-form description string"
name="description" value="[% verefill.description %]" />
</td>
<td>
<input type="hidden" name="domain" value="[% domain.domain %]" />
<input type="hidden" name="action" value="[% vsc.action %]" />
<div class="postlink">
<label for="vscsave">save</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="vscsave" />
</div>
</td>
</form>
<td><a href="/domain/detail?domain=[% domain.domain %]#vsc" class="aaction">cancel</a></td>
</tr>
[% IF verefill && prov_error %]<tr><td colspan="5"><div class="errormsg">[% prov_error %]</div></td></tr>[% END %]
[% ELSE %]
<tr>
<td>[% vsc.action %]</td>
<td>[% vsc.digits %]</td>
<td>[% vsc.audio_file_handle %]</td>
<td>[% vsc.description %]</td>
<td>
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/domain/detail?domain=[% domain.domain %]&amp;edit_vsc=[% vsc.action %]#vsc" class="aaction">edit</a>
[% END %]
</td>
<td>
<form action="/domain/do_delete_vsc" method="post">
<input type="hidden" name="domain" value="[% domain.domain %]" />
<input type="hidden" name="action" value="[% vsc.action %]" />
[% UNLESS Catalyst.session.admin.read_only %]
<div class="postlink">
<label for="vscdel[% id %]">delete</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="vscdel[% id %]" />
</div>
[% END %]
</form>
</td>
</tr>
[% END %]
[% END %]
<tr>
<form action="/domain/do_create_vsc" method="post">
<td>
<select size="1" name="action"
title="the VSC action that should be triggered">
[% FOREACH action = vsc_actions %]
<option value="[% action %]"
[% IF vcrefill.action == action %]selected="selected"[% END %]
>[% action %]</option>
[% END %]
</select>
</td>
<td>
<input type="text" maxlength="2" class="irealshort" title="two-digit dialcode for VoIP devices"
name="digits" value="[% vcrefill.data.digits %]" />
</td>
<td>
<select size="1" name="audio_file_handle"
title="the audio which will be played after execution">
[% FOREACH audio = audio_files %]
<option value="[% audio.handle %]"
[% IF vcrefill.data.audio_file_handle == audio.handle %]selected="selected"[% END %]
>[% audio.handle %]</option>
[% END %]
</select>
</td>
<td>
<input type="text" class="iaudiodesc" title="free-form description string"
name="description" value="[% vcrefill.data.description %]" />
</td>
<td>
<input type="hidden" name="domain" value="[% domain.domain %]" />
<div class="postlink">
<label for="vscadd">add</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="vscadd" />
</div>
</td>
</form>
<td />
</tr>
</table>
[% IF vcrefill && prov_error %]<div class="errormsg">[% prov_error %]</div>[% END %]
</div>

Loading…
Cancel
Save