remove audio_file and vsc handling

audio_file handling was replaced with sound sets (introduced with r9073)
drop vsc handling (not yet supported)
3.4
Christian Veigl 13 years ago
parent f1d40d1eaf
commit b99227c7ba

@ -407,390 +407,6 @@ sub do_edit_iplist : Local {
$c->response->redirect("/domain/edit_iplist?domain=$domain&list_name=$list");
}
=head2 audio
Show audio file details for a given domain.
=cut
sub audio : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/domain_audio.tt';
my $domain = $c->request->params->{domain};
$c->stash->{domain} = $domain;
my $audio_files;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_audio_files',
{ domain => $domain },
\$audio_files
);
$c->stash->{audio_files} = $audio_files if eval { @$audio_files };
$c->stash->{edit_audio} = $c->request->params->{edit_audio};
$c->stash->{delete_audio} = $c->request->params->{daf};
if(exists $c->session->{acrefill}) {
$c->stash->{acrefill} = $c->session->{acrefill};
delete $c->session->{acrefill};
}
if(exists $c->session->{aerefill}) {
$c->stash->{aerefill} = $c->session->{aerefill};
delete $c->session->{aerefill};
} elsif($c->request->params->{edit_audio}) {
foreach my $audio (eval { @$audio_files }) {
if($$audio{handle} eq $c->request->params->{edit_audio}) {
$c->stash->{aerefill} = $audio;
last;
}
}
}
return 1;
}
=head2 do_create_audio
Store a new audio file in the database.
=cut
sub do_create_audio : Local {
my ( $self, $c ) = @_;
my %messages;
my %settings;
$settings{domain} = $c->request->params->{domain};
unless(length $settings{domain}) {
$c->response->redirect("/domain");
return;
}
$settings{handle} = $c->request->params->{handle};
$settings{data}{description} = $c->request->params->{description}
if length $c->request->params->{description};
my $upload = $c->req->upload('cupload_audio');
$settings{data}{audio} = eval { $upload->slurp };
unless(keys %messages) {
if($c->model('Provisioning')->call_prov( $c, 'voip', 'create_audio_file',
\%settings,
undef))
{
$messages{audiomsg} = 'Web.AudioFile.Created';
$c->session->{messages} = \%messages;
$c->response->redirect("/domain/audio?domain=$settings{domain}");
return;
}
}
$messages{audioerr} = 'Client.Voip.InputErrorFound';
$c->session->{messages} = \%messages;
$c->session->{acrefill} = \%settings;
$c->response->redirect("/domain/audio?domain=$settings{domain}");
return;
}
=head2 do_update_audio
Update an audio file in the database.
=cut
sub do_update_audio : Local {
my ( $self, $c ) = @_;
my %messages;
my %settings;
$settings{domain} = $c->request->params->{domain};
unless(length $settings{domain}) {
$c->response->redirect("/domain");
return;
}
$settings{handle} = $c->request->params->{handle};
unless(length $settings{handle}) {
$c->response->redirect("/domain/audio?domain=$settings{domain}");
return;
}
$settings{data}{description} = $c->request->params->{description};
my $upload = $c->req->upload('eupload_audio');
$settings{data}{audio} = eval { $upload->slurp } if defined $upload;
if($c->model('Provisioning')->call_prov( $c, 'voip', 'update_audio_file',
\%settings,
undef))
{
$messages{audiomsg} = 'Web.AudioFile.Updated';
$c->session->{messages} = \%messages;
$c->response->redirect("/domain/audio?domain=$settings{domain}");
return;
}
$messages{audioerr} = 'Client.Voip.InputErrorFound';
$c->session->{messages} = \%messages;
$c->session->{aerefill} = $settings{data};
$c->response->redirect("/domain/audio?domain=$settings{domain}&edit_audio=$settings{handle}");
return;
}
=head2 do_delete_audio
Delete an audio file from the database.
=cut
sub do_delete_audio : Local {
my ( $self, $c ) = @_;
my %settings;
$settings{domain} = $c->request->params->{domain};
unless(length $settings{domain}) {
$c->response->redirect("/domain");
return;
}
$settings{handle} = $c->request->params->{handle};
unless(length $settings{handle}) {
$c->response->redirect("/domain/audio?domain=$settings{domain}");
return;
}
if($c->model('Provisioning')->call_prov( $c, 'voip', 'delete_audio_file',
\%settings,
undef))
{
$c->session->{messages} = { audiomsg => 'Web.AudioFile.Deleted' };
$c->response->redirect("/domain/audio?domain=$settings{domain}");
return;
}
$c->response->redirect("/domain/audio?domain=$settings{domain}&daf=$settings{handle}");
return;
}
=head2 listen_audio
Listen to an audio file from the database.
=cut
sub listen_audio : Local {
my ( $self, $c ) = @_;
my %settings;
$settings{domain} = $c->request->params->{domain};
unless(length $settings{domain}) {
$c->response->redirect("/domain");
return;
}
$settings{handle} = $c->request->params->{handle};
unless(length $settings{handle}) {
$c->response->redirect("/domain/audio?domain=$settings{domain}");
return;
}
my $audio;
if($c->model('Provisioning')->call_prov( $c, 'voip', 'get_audio_file',
\%settings,
\$audio))
{
$c->stash->{current_view} = 'Plain';
$c->stash->{content_type} = 'audio/x-wav';
$c->stash->{content} = eval { $$audio{audio}->value() };
return;
}
$c->response->redirect("/domain/audio?domain=$settings{domain}");
return;
}
=head2 vsc
Show VSC details for a given domain.
=cut
sub vsc : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/domain_vsc.tt';
my $domain = $c->request->params->{domain};
$c->stash->{domain} = $domain;
my $audio_files;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_audio_files',
{ domain => $domain },
\$audio_files
);
$c->stash->{audio_files} = $audio_files if eval { @$audio_files };
my $vscs;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_domain_vscs',
{ domain => $domain },
\$vscs
);
$c->stash->{vscs} = $vscs if eval { @$vscs };
my $vsc_actions;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_vsc_actions',
{ },
\$vsc_actions
);
@$vsc_actions = grep { my $tmp = $_;
! grep { $$_{action} eq $tmp }
eval { @$vscs }
}
eval { @$vsc_actions };
$c->stash->{vsc_actions} = $vsc_actions if @$vsc_actions;
$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 }) {
if($$vsc{action} eq $c->request->params->{edit_vsc}) {
$c->stash->{verefill} = $vsc;
last;
}
}
}
return 1;
}
=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/vsc?domain=$settings{domain}");
return;
}
$messages{vscerr} = 'Client.Voip.InputErrorFound';
$c->session->{messages} = \%messages;
$c->session->{vcrefill} = \%settings;
$c->response->redirect("/domain/vsc?domain=$settings{domain}");
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/vsc?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/vsc?domain=$settings{domain}");
return;
}
$messages{vscerr} = 'Client.Voip.InputErrorFound';
$c->session->{messages} = \%messages;
$c->session->{verefill} = $settings{data};
$c->response->redirect("/domain/vsc?domain=$settings{domain}&edit_vsc=$settings{action}");
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/vsc?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/vsc?domain=$settings{domain}");
return;
}
$c->response->redirect("/domain/vsc?domain=$settings{domain}");
return;
}
=head1 BUGS AND LIMITATIONS
=over

@ -685,17 +685,6 @@ sub preferences : Local {
);
}
if($c->config->{subscriber}{audiofile_features}) {
my $audio_files;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_audio_files',
{ username => $$subscriber{username},
domain => $$subscriber{domain},
},
\$audio_files
);
$$subscriber{audio_files} = $audio_files if eval { @$audio_files };
}
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_reminder',
{ username => $$subscriber{username},
domain => $$subscriber{domain},
@ -809,7 +798,7 @@ sub preferences : Local {
} elsif($$pref{preference} eq 'block_in_list' or $$pref{preference} eq 'block_out_list' or
$$pref{preference} eq 'adm_block_in_list' or $$pref{preference} eq 'adm_block_out_list')
{
eval { @{$$preferences{$$pref{preference}}} = map { s/^([1-9])/+$1/; $_ } @{$$preferences{$$pref{preference}}} }; ## no critic ProhibitMutatingListFunctions
eval { @{$$preferences{$$pref{preference}}} = map { s/^([1-9])/+$1/; $_ } @{$$preferences{$$pref{preference}}} };
}
elsif ($$pref{data_type} eq 'enum') {
@ -3123,239 +3112,6 @@ sub do_edit_destlist : Local {
$c->response->redirect("/subscriber/edit_destlist?subscriber_id=$subscriber_id&list_name=$list");
}
sub edit_audio_files : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/subscriber_edit_audio_files.tt';
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 %settings;
$settings{username} = $$subscriber{username};
$settings{domain} = $$subscriber{domain};
my $audio_files;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_audio_files',
{ %settings },
\$audio_files
);
$c->stash->{audio_files} = $audio_files if eval { @$audio_files };
$c->stash->{edit_audio} = $c->request->params->{edit_audio};
if(exists $c->session->{acrefill}) {
$c->stash->{acrefill} = $c->session->{acrefill};
delete $c->session->{acrefill};
}
if(exists $c->session->{aerefill}) {
$c->stash->{aerefill} = $c->session->{aerefill};
delete $c->session->{aerefill};
} elsif($c->request->params->{edit_audio}) {
foreach my $audio (eval { @$audio_files }) {
if($$audio{handle} eq $c->request->params->{edit_audio}) {
$c->stash->{aerefill} = $audio;
last;
}
}
}
return 1;
}
=head2 do_create_audio
Store a new audio file in the database.
=cut
sub do_create_audio : Local {
my ( $self, $c ) = @_;
my %messages;
my %settings;
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;
$settings{username} = $$subscriber{username};
$settings{domain} = $$subscriber{domain};
$settings{handle} = $c->request->params->{handle};
$settings{data}{description} = $c->request->params->{description}
if length $c->request->params->{description};
my $upload = $c->req->upload('cupload_audio');
$settings{data}{audio} = eval { $upload->slurp };
unless(keys %messages) {
if($c->model('Provisioning')->call_prov( $c, 'voip', 'create_audio_file',
\%settings,
undef))
{
$messages{audiomsg} = 'Web.AudioFile.Created';
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_audio_files?subscriber_id=$subscriber_id");
return;
}
}
$messages{audioerr} = 'Client.Voip.InputErrorFound';
$c->session->{messages} = \%messages;
$c->session->{acrefill} = \%settings;
$c->response->redirect("/subscriber/edit_audio_files?subscriber_id=$subscriber_id");
return;
}
=head2 do_update_audio
Update an audio file in the database.
=cut
sub do_update_audio : Local {
my ( $self, $c ) = @_;
my %messages;
my %settings;
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;
$settings{username} = $$subscriber{username};
$settings{domain} = $$subscriber{domain};
$settings{handle} = $c->request->params->{handle};
unless(length $settings{handle}) {
$c->response->redirect("/subscriber/edit_audio_files?subscriber_id=$subscriber_id");
return;
}
$settings{data}{description} = $c->request->params->{description};
my $upload = $c->req->upload('eupload_audio');
$settings{data}{audio} = eval { $upload->slurp } if defined $upload;
unless(keys %messages) {
if($c->model('Provisioning')->call_prov( $c, 'voip', 'update_audio_file',
\%settings,
undef))
{
$messages{audiomsg} = 'Web.AudioFile.Updated';
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_audio_files?subscriber_id=$subscriber_id");
return;
}
$c->response->redirect("/subscriber/edit_audio_files?subscriber_id=$subscriber_id&edit_audio=$settings{handle}");
return;
}
$messages{audioerr} = 'Client.Voip.InputErrorFound';
$c->session->{messages} = \%messages;
$c->session->{aerefill} = $settings{data};
$c->response->redirect("/subscriber/edit_audio_files?subscriber_id=$subscriber_id&edit_audio=$settings{handle}");
return;
}
=head2 do_delete_audio
Delete an audio file from the database.
=cut
sub do_delete_audio : Local {
my ( $self, $c ) = @_;
my %settings;
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;
$settings{username} = $$subscriber{username};
$settings{domain} = $$subscriber{domain};
$settings{handle} = $c->request->params->{handle};
unless(length $settings{handle}) {
$c->response->redirect("/subscriber/edit_audio_files?subscriber_id=$subscriber_id");
return;
}
if($c->model('Provisioning')->call_prov( $c, 'voip', 'delete_audio_file',
\%settings,
undef))
{
$c->session->{messages} = { provmsg => 'Web.AudioFile.Deleted' };
$c->response->redirect("/subscriber/edit_audio_files?subscriber_id=$subscriber_id");
return;
}
$c->response->redirect("/subscriber/edit_audio_files?subscriber_id=$subscriber_id");
return;
}
=head2 listen_audio
Listen to an audio file from the database.
=cut
sub listen_audio : Local {
my ( $self, $c ) = @_;
my %settings;
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
);
$settings{username} = $$subscriber{username};
$settings{domain} = $$subscriber{domain};
$settings{handle} = $c->request->params->{handle};
unless(length $settings{handle}) {
$c->response->redirect("/subscriber/edit_audio_files?subscriber_id=$subscriber_id");
return;
}
my $audio;
if($c->model('Provisioning')->call_prov( $c, 'voip', 'get_audio_file',
\%settings,
\$audio))
{
$c->stash->{current_view} = 'Plain';
$c->stash->{content_type} = 'audio/x-wav';
$c->stash->{content} = eval { $$audio{audio}->value() };
return;
}
$c->response->redirect("/subscriber/edit_audio_files?subscriber_id=$subscriber_id");
return;
}
=head1 BUGS AND LIMITATIONS
=over

@ -15,8 +15,6 @@
<a href="/domain/preferences?domain=[% domain.domain %]">[% domain.domain %]</a>
[% ELSIF Catalyst.config.domain.audiofile_features %]
<a href="/domain/audio?domain=[% domain.domain %]">[% domain.domain %]</a>
[% ELSIF Catalyst.config.domain.vsc_features %]
<a href="/domain/vsc?domain=[% domain.domain %]">[% domain.domain %]</a>
[% ELSE %]
[% domain.domain %]
[% END %]

@ -1,104 +0,0 @@
<h2> Domain [% domain %] </h2>
<!-- <a href="/domain"><span class="button-back">Back</span></a> -->
<div class="topsubmenu">
<ul>
[% IF Catalyst.config.domain.preference_features %]
<li><a href="preferences?domain=[% domain %]"><span>Preferences</span></a></li>
[% END %]
[% IF Catalyst.config.domain.audiofile_features %]
<li class="selected"><a href="audio?domain=[% domain %]"><span>Announcements</span></a></li>
[% END %]
[% IF Catalyst.config.domain.vsc_features %]
<li><a href="vsc?domain=[% domain %]"><span>VSCs</span></a></li>
[% END %]
</ul>
</div>
<div class="topsubmenudivider"> </div>
<h3 id="audio">Audio Files</h3>
[% IF messages.audiomsg %]<div class="success">[% messages.audiomsg %]</div>[% END %]
[% IF messages.audioerr %]<div class="error">[% messages.audioerr %]</div>[% END %]
<ul class="cleanlist">
<li class="ui-state-default">
<div class="span-4">Handle</div>
<div class="span-4">Description</div>
<div class="span-4 append-3 last">Audio</div>
</li>
</ul>
<ul id="audiofilelist" class="cleanlist">
[% id = 0 %]
[% FOREACH audio = audio_files %]
[% id = id + 1 %]
<li class="ui-state-default" id="af_[% id %]">
[% IF audio.handle == edit_audio %]
<form action="/domain/do_update_audio" enctype="multipart/form-data" method="post">
<input type="hidden" name="domain" value="[% domain %]" />
<input type="hidden" name="handle" value="[% audio.handle %]" />
<div class="span-4">[% audio.handle %]</div>
<div class="span-4">
<input type="text" class="iaudiodesc" title="free-form description string"
name="description" value="[% aerefill.description %]" />
</div>
<div class="span-5">
<input type="file" size="10" class="file" id="eupload_audio" name="eupload_audio"
title="audio file in wave format" />
</div>
<div class="prepend-1 span-1">
<button class="button-save" id="esave">Save</button>
</div>
</form>
<div class="prepend-1 span-1 last">
<a href="/domain/audio?domain=[% domain %]"><span class="button-cancel">Cancel</span></a>
</div>
[% IF aerefill && prov_error %]<div class="error">[% prov_error %]</div>[% END %]
[% ELSE %]
<div class="span-4">[% audio.handle %]</div>
<div class="span-4">[% audio.description %]</div>
<div class="span-5"><a href="/domain/listen_audio?domain=[% domain %]&amp;handle=[% audio.handle %]">listen</a></div>
<div class="prepend-1 span-1">
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/domain/audio?domain=[% domain %]&amp;edit_audio=[% audio.handle %]#audio"><span class="button-edit">Edit</span></a>
[% END %]
</div>
<div class="prepend-1 span-1 last">
<form action="/domain/do_delete_audio" method="post">
<input type="hidden" name="domain" value="[% domain %]" />
<input type="hidden" name="handle" value="[% audio.handle %]" />
[% UNLESS Catalyst.session.admin.read_only %]
<button class="button-delete" id="audiodel[% id %]" />
[% END %]
</form>
</div>
[% IF audio.handle == delete_audio && prov_error %]
<div class="error">[% prov_error %]</div>
[% END %]
[% END %]
</li>
[% END %]
<li class="ui-state-default" id="af_new">
<form action="/domain/do_create_audio" enctype="multipart/form-data" method="post">
<input type="hidden" name="domain" value="[% domain %]" />
<div class="span-4">
<input type="text" title="unique identifier string" size="15"
name="handle" value="[% acrefill.handle %]" />
</div>
<div class="span-4">
<input type="text" title="free-form description string" size="15"
name="description" value="[% acrefill.data.description %]" />
</div>
<div class="span-5">
<input type="file" size="10" class="file" id="cupload_audio" name="cupload_audio"
title="audio file in wave format" />
</div>
<div class="prepend-1 span-1 last">
<button class="button-add" id="audioadd" />
</div>
</form>
</li>
</ul>
[% IF acrefill && prov_error %]<div class="error">[% prov_error %]</div>[% END %]

@ -8,12 +8,6 @@
[% IF Catalyst.config.domain.preference_features %]
<li class="selected"><a href="preferences?domain=[% domain %]"><span>Preferences</span></a></li>
[% END %]
[% IF Catalyst.config.domain.audiofile_features %]
<li><a href="audio?domain=[% domain %]"><span>Announcements</span></a></li>
[% END %]
[% IF Catalyst.config.domain.vsc_features %]
<li><a href="vsc?domain=[% domain %]"><span>VSCs</span></a></li>
[% END %]
</ul>
</div>
<div class="topsubmenudivider"> </div>

@ -1,134 +0,0 @@
<h2> Domain [% domain %] </h2>
<!-- <a href="/domain"><span class="button-back">Back</span></a> -->
<div class="topsubmenu">
<ul>
[% IF Catalyst.config.domain.preference_features %]
<li><a href="preferences?domain=[% domain %]"><span>Preferences</span></a></li>
[% END %]
[% IF Catalyst.config.domain.audiofile_features %]
<li><a href="audio?domain=[% domain %]"><span>Announcements</span></a></li>
[% END %]
[% IF Catalyst.config.domain.vsc_features %]
<li class="selected"><a href="vsc?domain=[% domain %]"><span>VSCs</span></a></li>
[% END %]
</ul>
</div>
<div class="topsubmenudivider"> </div>
<h3 id="vsc">Vertical Service Codes</h3>
[% IF messages.vscmsg %]<div class="success">[% messages.vscmsg %]</div>[% END %]
[% IF messages.vscerr %]<div class="error">[% messages.vscerr %]</div>[% END %]
<ul class="cleanlist"
<li class="ui-state-default">
<div class="span-3">Action</div>
<div class="span-2">Digits</div>
<div class="span-4">Audio</div>
<div class="span-4">Description</div>
</li>
</ul>
<ul id="vsclist" class="cleanlist">
[% id = 0 %]
[% FOREACH vsc = vscs %]
[% id = id + 1 %]
<li class="ui-state-default" id="vsc_[% id %]">
[% IF vsc.action == edit_vsc %]
<form action="/domain/do_update_vsc" method="post">
<input type="hidden" name="domain" value="[% domain %]" />
<input type="hidden" name="action" value="[% vsc.action %]" />
<div class="span-3">[% vsc.action %]</div>
<div class="span-2">
<input type="text" maxlength="2" size="2" title="two-digit dialcode for VoIP devices"
name="digits" value="[% verefill.digits %]" />
</div>
<div class="span-4">
<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>
</div>
<div class="span-4">
<input type="text" size="15" title="free-form description string"
name="description" value="[% verefill.description %]" />
</div>
<div class="prepend-1 span-1">
<button class="button-save" id="esave">Save</button>
</div>
</form>
<div class="prepend-1 span-1 last">
<a href="/domain/vsc?domain=[% domain %]#vsc"><span class="button-cancel">Cancel</span></a>
</div>
[% IF verefill && prov_error %]<div class="error">[% prov_error %]</div>[% END %]
[% ELSE %]
<div class="span-3">[% vsc.action %]</div>
<div class="span-2">[% vsc.digits %]</div>
<div class="span-4">[% vsc.audio_file_handle %]</div>
<div class="span-4">[% vsc.description %]</div>
<div class="prepend-1 span-1">
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/domain/vsc?domain=[% domain %]&amp;edit_vsc=[% vsc.action %]#vsc"><span class="button-edit">Edit</span></a>
[% END %]
</div>
<div class="prepend-1 span-1 last">
<form action="/domain/do_delete_vsc" method="post">
<input type="hidden" name="domain" value="[% domain %]" />
<input type="hidden" name="action" value="[% vsc.action %]" />
[% UNLESS Catalyst.session.admin.read_only %]
<button class="button-delete" id="vscdel[% id %]" />
[% END %]
</form>
</div>
[% END %]
</li>
[% END %]
<li class="ui-state-default" id="vsc_new">
[% IF vsc_actions %]
<form action="/domain/do_create_vsc" method="post">
<input type="hidden" name="domain" value="[% domain %]" />
<div class="span-3">
<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>
</div>
<div class="span-2">
<input type="text" maxlength="2" size="2" title="two-digit dialcode for VoIP devices"
name="digits" value="[% vcrefill.data.digits %]" />
</div>
<div class="span-4">
<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>
</div>
<div class="span-4">
<input type="text" size="15" title="free-form description string"
name="description" value="[% vcrefill.data.description %]" />
</div>
<div class="prepend-1 span-1 last">
<button class="button-add" id="vscadd" />
</div>
</form>
[% ELSE %]
<div class="span-16">No undefined VSC actions found.</div>
[% END %]
</li>
</ul>
[% IF vcrefill && prov_error %]<div class="error">[% prov_error %]</div>[% END %]

@ -1,90 +0,0 @@
<h3> Audio Files for Subscriber
<a class="noarrow" href="detail?subscriber_id=[% subscriber_id %]">
[% subscriber.username %]@[% subscriber.domain %]</a>
</h3>
<a href="preferences?subscriber_id=[% subscriber_id %]&amp;#audio"><span class="button-back">Back</span></a>
<div class="p1">
[% IF messages.audiomsg %]<div class="success">[% messages.audiomsg %]</div>[% END %]
[% IF messages.audioerr %]<div class="error">[% messages.audioerr %]</div>[% END %]
<table class="audiofiles">
<tr class="table_header">
<td style="width:100px;">Handle</td>
<td style="width:250px;">Description</td>
<td style="width:180px;">Audio</td>
<td style="width:40px;" />
<td style="width:60px;" />
</tr>
[% id = 0 %]
[% FOREACH audio = audio_files %]
[% id = id + 1 %]
[% IF audio.handle == edit_audio %]
<tr>
<form action="/subscriber/do_update_audio" enctype="multipart/form-data" method="post">
<td>[% audio.handle %]</td>
<td>
<input type="text" class="iaudiodesc" title="free-form description string"
name="description" value="[% aerefill.description %]" />
</td>
<td>
<input type="file" size="10" class="file" id="eupload_audio" name="eupload_audio"
title="audio file in wave format" />
</td>
<td>
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<input type="hidden" name="handle" value="[% audio.handle %]" />
<button class="button-save" id="audiosave">Save</button>
</td>
</form>
<td><a href="/subscriber/edit_audio_files?subscriber_id=[% subscriber_id %]"><span class="button-cancel">Cancel</span></a></td>
</tr>
[% IF aerefill && prov_error %]<tr><td colspan="5"><div class="error">[% prov_error %]</div></td></tr>[% END %]
[% ELSE %]
<tr>
<td>[% audio.handle %]</td>
<td>[% audio.description %]</td>
<td><a href="/subscriber/listen_audio?subscriber_id=[% subscriber_id %]&amp;handle=[% audio.handle %]"><span class="button-listen">Listen</span></a></td>
<td>
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/subscriber/edit_audio_files?subscriber_id=[% subscriber_id %]&amp;edit_audio=[% audio.handle %]"><span class="button-edit">Edit</span></a>
[% END %]
</td>
<td>
<form action="/subscriber/do_delete_audio" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<input type="hidden" name="handle" value="[% audio.handle %]" />
[% UNLESS Catalyst.session.admin.read_only %]
<button class="button-delete" id="audiodel[% id %]">Delete</button>
[% END %]
</form>
</td>
</tr>
[% END %]
[% END %]
<tr>
<form action="/subscriber/do_create_audio" enctype="multipart/form-data" method="post">
<td>
<input type="text" class="ihandle" title="unique identifier string"
name="handle" value="[% acrefill.handle %]" />
</td>
<td>
<input type="text" class="iaudiodesc" title="free-form description string"
name="description" value="[% acrefill.data.description %]" />
</td>
<td>
<input type="file" size="10" class="file" id="cupload_audio" name="cupload_audio"
title="audio file in wave format" />
</td>
<td>
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]" />
<button class="button-add" id="audioadd">Add</button>
</td>
</form>
<td />
</tr>
</table>
[% IF acrefill && prov_error %]<div class="error">[% prov_error %]</div>[% END %]
</div>

@ -366,31 +366,6 @@
</li>
</ul>
[% IF Catalyst.config.subscriber.audiofile_features %]
<div class="hspace-20"></div>
<h3 id="audio">Audio Files</h3>
<ul class="cleanlist">
<li class="ui-state-default">
<div class="span-4">Existing audio files:</div>
<div class="span-11">
<select size="1" name="audio_files">
[% FOREACH audio = subscriber.audio_files %]
<option>[% audio.handle %]</option>
[% END %]
</select>
</div>
<div class="span-1 last">
[% UNLESS Catalyst.session.admin.read_only %]
<a href="edit_audio_files?subscriber_id=[% subscriber.subscriber_id %]"><span class="button-edit">Edit</span></a>
[% END %]
</div>
</li>
</ul>
</div>
[% END %]
[% IF subscriber.voicebox_preferences %]
<div class="hspace-20"></div>

Loading…
Cancel
Save