reworked domain templates to follow new design


			
			
				3.1
			
			
		
Daniel Tiefnig 15 years ago
parent 5b42e557b5
commit 03fa1f136b

@ -98,15 +98,15 @@ sub do_delete_domain : Local {
return;
}
=head2 detail
=head2 rewrite
Show details for a given domain: rewrite rules
Show rewrite rule details for a given domain.
=cut
sub detail : Local {
sub rewrite : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/domain_detail.tt';
$c->stash->{template} = 'tt/domain_rewrite.tt';
my $domain = $c->request->params->{domain};
@ -118,69 +118,6 @@ sub detail : Local {
$c->stash->{domain} = $domain_rw;
$c->stash->{editid} = $c->request->params->{editid};
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;
}
}
}
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;
}
@ -228,7 +165,7 @@ sub create_rewrite : Local {
{
$messages{$m} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/domain/detail?domain=$domain#$a");
$c->response->redirect("/domain/rewrite?domain=$domain#$a");
return;
}
else
@ -239,7 +176,7 @@ sub create_rewrite : Local {
}
$c->session->{messages} = \%messages;
$c->response->redirect("/domain/detail?domain=$domain#$a");
$c->response->redirect("/domain/rewrite?domain=$domain#$a");
return;
}
@ -288,7 +225,7 @@ sub edit_rewrite : Local {
{
$messages{$m} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/domain/detail?domain=$domain#$a");
$c->response->redirect("/domain/rewrite?domain=$domain#$a");
return;
}
else
@ -299,7 +236,7 @@ sub edit_rewrite : Local {
}
$c->session->{messages} = \%messages;
$c->response->redirect("/domain/detail?domain=$domain#$a");
$c->response->redirect("/domain/rewrite?domain=$domain#$a");
return;
}
@ -380,17 +317,60 @@ sub delete_rewrite : Local {
{
$messages{$m} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/domain/detail?domain=$domain#$a");
$c->response->redirect("/domain/rewrite?domain=$domain#$a");
return;
}
} else {
}
$c->session->{messages} = \%messages;
$c->response->redirect("/domain/detail?domain=$domain#$a");
$c->response->redirect("/domain/rewrite?domain=$domain#$a");
return;
}
=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.
@ -421,7 +401,7 @@ sub do_create_audio : Local {
{
$messages{audiomsg} = 'Web.AudioFile.Created';
$c->session->{messages} = \%messages;
$c->response->redirect("/domain/detail?domain=$settings{domain}#audio");
$c->response->redirect("/domain/audio?domain=$settings{domain}");
return;
}
}
@ -429,7 +409,7 @@ sub do_create_audio : Local {
$messages{audioerr} = 'Client.Voip.InputErrorFound';
$c->session->{messages} = \%messages;
$c->session->{acrefill} = \%settings;
$c->response->redirect("/domain/detail?domain=$settings{domain}#audio");
$c->response->redirect("/domain/audio?domain=$settings{domain}");
return;
}
@ -452,7 +432,7 @@ sub do_update_audio : Local {
}
$settings{handle} = $c->request->params->{handle};
unless(length $settings{handle}) {
$c->response->redirect("/domain/detail?domain=$settings{domain}");
$c->response->redirect("/domain/audio?domain=$settings{domain}");
return;
}
$settings{data}{description} = $c->request->params->{description};
@ -465,14 +445,14 @@ sub do_update_audio : Local {
{
$messages{audiomsg} = 'Web.AudioFile.Updated';
$c->session->{messages} = \%messages;
$c->response->redirect("/domain/detail?domain=$settings{domain}#audio");
$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/detail?domain=$settings{domain}&edit_audio=$settings{handle}#audio");
$c->response->redirect("/domain/audio?domain=$settings{domain}&edit_audio=$settings{handle}");
return;
}
@ -494,7 +474,7 @@ sub do_delete_audio : Local {
}
$settings{handle} = $c->request->params->{handle};
unless(length $settings{handle}) {
$c->response->redirect("/domain/detail?domain=$settings{domain}");
$c->response->redirect("/domain/audio?domain=$settings{domain}");
return;
}
@ -503,11 +483,11 @@ sub do_delete_audio : Local {
undef))
{
$c->session->{messages} = { audiomsg => 'Web.AudioFile.Deleted' };
$c->response->redirect("/domain/detail?domain=$settings{domain}#audio");
$c->response->redirect("/domain/audio?domain=$settings{domain}");
return;
}
$c->response->redirect("/domain/detail?domain=$settings{domain}&daf=$settings{handle}#audio");
$c->response->redirect("/domain/audio?domain=$settings{domain}&daf=$settings{handle}");
return;
}
@ -529,7 +509,7 @@ sub listen_audio : Local {
}
$settings{handle} = $c->request->params->{handle};
unless(length $settings{handle}) {
$c->response->redirect("/domain/detail?domain=$settings{domain}");
$c->response->redirect("/domain/audio?domain=$settings{domain}");
return;
}
@ -544,10 +524,71 @@ sub listen_audio : Local {
return;
}
$c->response->redirect("/domain/detail?domain=$settings{domain}#audio");
$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.
@ -578,14 +619,14 @@ sub do_create_vsc : Local {
{
$messages{vscmsg} = 'Web.VSC.Created';
$c->session->{messages} = \%messages;
$c->response->redirect("/domain/detail?domain=$settings{domain}#vsc");
$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/detail?domain=$settings{domain}#vsc");
$c->response->redirect("/domain/vsc?domain=$settings{domain}");
return;
}
@ -608,7 +649,7 @@ sub do_update_vsc : Local {
}
$settings{action} = $c->request->params->{action};
unless(length $settings{action}) {
$c->response->redirect("/domain/detail?domain=$settings{domain}");
$c->response->redirect("/domain/vsc?domain=$settings{domain}");
return;
}
$settings{data}{digits} = length $c->request->params->{digits}
@ -624,14 +665,14 @@ sub do_update_vsc : Local {
{
$messages{vscmsg} = 'Web.VSC.Updated';
$c->session->{messages} = \%messages;
$c->response->redirect("/domain/detail?domain=$settings{domain}#vsc");
$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/detail?domain=$settings{domain}&edit_vsc=$settings{action}#vsc");
$c->response->redirect("/domain/vsc?domain=$settings{domain}&edit_vsc=$settings{action}");
return;
}
@ -653,7 +694,7 @@ sub do_delete_vsc : Local {
}
$settings{action} = $c->request->params->{action};
unless(length $settings{action}) {
$c->response->redirect("/domain/detail?domain=$settings{domain}");
$c->response->redirect("/domain/vsc?domain=$settings{domain}");
return;
}
@ -662,11 +703,11 @@ sub do_delete_vsc : Local {
undef))
{
$c->session->{messages} = { vscmsg => 'Web.VSC.Deleted' };
$c->response->redirect("/domain/detail?domain=$settings{domain}#vsc");
$c->response->redirect("/domain/vsc?domain=$settings{domain}");
return;
}
$c->response->redirect("/domain/detail?domain=$settings{domain}#vsc");
$c->response->redirect("/domain/vsc?domain=$settings{domain}");
return;
}

@ -11,10 +11,12 @@
[% FOREACH domain = domains %]
<li class="ui-state-default">
<div class="span-10 append-5">
[% IF Catalyst.config.domain.rewrite_features
|| Catalyst.config.domain.vsc_features
|| Catalyst.config.domain.audiofile_features %]
<a href="/domain/detail?domain=[% domain.domain %]">[% domain.domain %]</a>
[% IF Catalyst.config.domain.rewrite_features %]
<a href="/domain/rewrite?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 %]

@ -0,0 +1,104 @@
<h2> Domain [% domain %] </h2>
<!-- <a href="/domain"><span class="button-back">Back</span></a> -->
<div class="topsubmenu">
<ul>
[% IF Catalyst.config.domain.rewrite_features %]
<li><a href="rewrite?domain=[% domain %]"><span>Rewrite Rules</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 %]

@ -1,404 +0,0 @@
<script type="text/javascript">
$(function() {
[% ids = ['icaller', 'icallee', 'ocaller'] %]
[% FOREACH id = ids %]
$("#[% id %]list").sortable({
placeholder: 'ui-state-highlight',
forcePlaceholderSize: true,
stop: function(i) {
placeholder: 'ui-state-highlight'
$.ajax({
type: "POST",
url: "update_rewrite_priority",
data: $("#[% id %]list").sortable("serialize")
});
},
});
//$("#[% id %]").disableSelection();
[% END %]
});
</script>
<h2> Domain
<a class="noarrow" href="detail?domain=[% domain.domain.domain %]">[% domain.domain.domain %]</a>
</h2>
<a href="/domain"><span class="button-back">Back</span></a>
[% IF Catalyst.config.domain.rewrite_features %]
[%
rewrites = [
{
header = 'Inbound Rewrite Rules for Caller',
id = 'icaller',
tag = 'if',
dir = 'in',
field = 'caller',
msg = messages.icallermsg,
err = messages.icallererr,
rules = domain.rewrite_in_caller,
},
{
header = 'Inbound Rewrite Rules for Callee',
id = 'icallee',
tag = 'it',
dir = 'in',
field = 'callee',
msg = messages.icalleemsg,
err = messages.icalleeerr,
rules = domain.rewrite_in_callee,
},
{
header = 'Outbound Rewrite Rules for Caller',
id = 'ocaller',
tag = 'of',
dir = 'out',
field = 'caller',
msg = messages.ocallermsg,
err = messages.ocallererr,
rules = domain.rewrite_out_caller,
},
]
%]
[% FOREACH rw = rewrites %]
<h3 id="[% rw.id %]">[% rw.header %]</h3>
[% IF rw.msg %]<div class="success">[% rw.msg %]</div>[% END %]
[% IF rw.err %]<div class="error">[% rw.err %]</div>[% END %]
<ul class="cleanlist">
<li class="ui-state-default">
<div class="span-1">&nbsp;</div>
<div class="span-4">Match Pattern</div>
<div class="span-4">Replacement Pattern</div>
<div class="span-4 append-3 last">Description</div>
</li>
</ul>
<ul id="[% rw.id %]list" class="cleanlist">
[% id = 0 %]
[% priority = 999 %]
[% FOREACH rule = rw.rules %]
[% priority = rule.priority %]
<li class="ui-state-default" id="rule_[% rule.id %]">
<div class="span-1"><span class='ui-icon ui-icon-arrowthick-2-n-s'></span></div>
[% IF rule.id == editid && !Catalyst.session.admin.read_only %]
<form action="/domain/edit_rewrite" method="post">
<input type="hidden" name="direction" value="[% rule.direction %]" />
<input type="hidden" name="field" value="[% rule.field %]" />
<input type="hidden" name="domain" value="[% domain.domain.domain %]" />
<input type="hidden" name="rewriteid" value="[% rule.id %]" />
<input type="hidden" name="priority" value="[% rule.priority %]" />
<div class="span-4">
<input type="text" size="15 id="addtxt" title="string, match pattern"
name="match_pattern" value="[% rule.match_pattern %]" />
</div>
<div class="span-4">
<input type="text" size="15" id="addtxt" title="string, replacement pattern"
name="replace_pattern" value="[% rule.replace_pattern %]" />
</div>
<div class="span-4 append-1">
<input type="text" size="15" id="addtxt" title="string, rewrite rule description"
name="description" value="[% rule.description %]" />
</div>
<div class="span-1">
<button class="button-save" id="[% rw.tag %]save[% id %]">Save</button>
</div>
</form>
<div class="prepend-1 span-1 last">
<a href="/domain/detail?domain=[% domain.domain.domain %]#[% rw.id %]"><span class="button-cancel">Cancel</span></a>
</div>
[% ELSE %]
<div class="span-4">[% rule.match_pattern %]</div>
<div class="span-4">[% rule.replace_pattern %]</div>
<div class="span-4 append-1">[% rule.description %]</div>
<div class="span-1">
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/domain/detail?domain=[% domain.domain.domain %]&amp;editid=[% rule.id %]#[% rw.id %]"><span class="button-edit">Edit</span></a>
[% END %]
</div>
<form action="/domain/delete_rewrite" method="post">
<input type="hidden" name="domain" value="[% domain.domain.domain %]" />
<input type="hidden" name="rewriteid" value="[% rule.id %]" />
<input type="hidden" name="direction" value="[% rule.direction %]" />
<input type="hidden" name="field" value="[% rule.field %]" />
<div class="prepend-1 span-1 last">
[% UNLESS Catalyst.session.admin.read_only %]
<button id="[% rw.tag %]del[% id %]" class="button-delete">Delete</button>
[% END %]
</div>
[% END %]
</form>
</li>
[% id = id + 1 %]
[% END %]
</ul>
[% UNLESS Catalyst.session.admin.read_only %]
<ul class="cleanlist">
<li class="ui-state-default">
<form action="/domain/create_rewrite" method="post">
<input type="hidden" name="direction" value="[% rw.dir %]" />
<input type="hidden" name="field" value="[% rw.field%]" />
<input type="hidden" name="priority" value="[% priority - 1 %]" />
<input type="hidden" name="domain" value="[% domain.domain.domain %]" />
<div class="span-1">&nbsp;</div>
<div class="span-4">
<input type="text" size="15" id="addtxt" title="string, match pattern"
name="match_pattern" value="" />
</div>
<div class="span-4">
<input type="text" size="15" id="addtxt" title="string, replacement pattern"
name="replace_pattern" value="" />
</div>
<div class="span-4 append-1">
<input type="text" size="15" id="addtxt" title="string, rule description"
name="description" value="" />
</div>
<div class="span-1 append-2 last">
<button class="button-add" id="[% rw.tag %]add">Add</button>
</div>
</form>
</li>
</ul>
<div class="hspace-20"></div>
[% END %]
[% END %]
[% END %]
[% IF Catalyst.config.domain.audiofile_features %]
<h3 id="audio">Audio Files</h3>
<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="/domain/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="domain" value="[% domain.domain.domain %]" />
<input type="hidden" name="handle" value="[% audio.handle %]" />
<div class="postlink ui-corner-all">
<label for="audiosave">Save</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="audiosave" />
</div>
</td>
</form>
<td>
<div class="postlink ui-corner-all">
<a href="/domain/detail?domain=[% domain.domain.domain %]#audio">Cancel</a>
</div>
</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="/domain/listen_audio?domain=[% domain.domain.domain %]&amp;handle=[% audio.handle %]">listen</a></td>
<td>
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/domain/detail?domain=[% domain.domain.domain %]&amp;edit_audio=[% audio.handle %]#audio"><span class="button-edit">Edit</span></a>
[% END %]
</td>
<td>
<form action="/domain/do_delete_audio" method="post">
<input type="hidden" name="domain" value="[% domain.domain.domain %]" />
<input type="hidden" name="handle" value="[% audio.handle %]" />
[% UNLESS Catalyst.session.admin.read_only %]
<button class="button-delete" id="audiodel[% id %]" />
[% END %]
</form>
</td>
</tr>
[% IF audio.handle == delete_audio && prov_error %]
<tr><td colspan="5"><div class="error">[% prov_error %]</div></td></tr>
[% END %]
[% END %]
[% END %]
<tr>
<form action="/domain/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="domain" value="[% domain.domain.domain %]" />
<button class="button-add" id="audioadd" />
</td>
</form>
<td />
</tr>
</table>
[% IF acrefill && prov_error %]<div class="error">[% prov_error %]</div>[% END %]
</div>
[% END %]
[% IF Catalyst.config.domain.vsc_features %]
<h3 id="vsc">Vertical Service Codes</h3>
<div class="p1">
[% IF messages.vscmsg %]<div class="success">[% messages.vscmsg %]</div>[% END %]
[% IF messages.vscerr %]<div class="error">[% 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.domain %]" />
<input type="hidden" name="action" value="[% vsc.action %]" />
<div class="postlink ui-corner-all">
<label for="vscsave">Save</label>
<input type="image" class="hidden" src="/static/images/dot_trans.gif" alt="" id="vscsave" />
</div>
</td>
</form>
<td>
<div class="postlink ui-corner-all">
<a href="/domain/detail?domain=[% domain.domain.domain %]#vsc">Cancel</a>
</div>
</td>
</tr>
[% IF verefill && prov_error %]<tr><td colspan="5"><div class="error">[% 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 %]
<div class="postlink ui-corner-all">
<a href="/domain/detail?domain=[% domain.domain.domain %]&amp;edit_vsc=[% vsc.action %]#vsc"><span class="button-edit">Edit</span></a>
</div>
[% END %]
</td>
<td>
<form action="/domain/do_delete_vsc" method="post">
<input type="hidden" name="domain" value="[% domain.domain.domain %]" />
<input type="hidden" name="action" value="[% vsc.action %]" />
[% UNLESS Catalyst.session.admin.read_only %]
<button class="button-delete" id="vscdel[% id %]" />
[% END %]
</form>
</td>
</tr>
[% END %]
[% END %]
[% IF vsc_actions %]
<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.domain %]" />
<button class="button-add" id="vscadd" />
</td>
</form>
<td />
</tr>
[% ELSE %]
<tr><td colspan="6" class="tdcenter">No undefined VSC actions found.</td></tr>
[% END %]
</table>
[% IF vcrefill && prov_error %]<div class="error">[% prov_error %]</div>[% END %]
</div>
[% END %]

@ -0,0 +1,187 @@
<script type="text/javascript">
$(function() {
[% ids = ['icaller', 'icallee', 'ocaller'] %]
[% FOREACH id = ids %]
$("#[% id %]list").sortable({
placeholder: 'ui-state-highlight',
forcePlaceholderSize: true,
stop: function(i) {
placeholder: 'ui-state-highlight'
$.ajax({
type: "POST",
url: "update_rewrite_priority",
data: $("#[% id %]list").sortable("serialize")
});
},
});
//$("#[% id %]").disableSelection();
[% END %]
});
</script>
<h2> Domain [% domain %] </h2>
<!-- <a href="/domain"><span class="button-back">Back</span></a> -->
<div class="topsubmenu">
<ul>
[% IF Catalyst.config.domain.rewrite_features %]
<li class="selected"><a href="rewrite?domain=[% domain.domain.domain %]"><span>Rewrite Rules</span></a></li>
[% END %]
[% IF Catalyst.config.domain.audiofile_features %]
<li><a href="audio?domain=[% domain.domain.domain %]"><span>Announcements</span></a></li>
[% END %]
[% IF Catalyst.config.domain.vsc_features %]
<li><a href="vsc?domain=[% domain.domain.domain %]"><span>VSCs</span></a></li>
[% END %]
</ul>
</div>
<div class="topsubmenudivider"> </div>
[%
rewrites = [
{
header = 'Inbound Rewrite Rules for Caller',
id = 'icaller',
tag = 'if',
dir = 'in',
field = 'caller',
msg = messages.icallermsg,
err = messages.icallererr,
rules = domain.rewrite_in_caller,
},
{
header = 'Inbound Rewrite Rules for Callee',
id = 'icallee',
tag = 'it',
dir = 'in',
field = 'callee',
msg = messages.icalleemsg,
err = messages.icalleeerr,
rules = domain.rewrite_in_callee,
},
{
header = 'Outbound Rewrite Rules for Caller',
id = 'ocaller',
tag = 'of',
dir = 'out',
field = 'caller',
msg = messages.ocallermsg,
err = messages.ocallererr,
rules = domain.rewrite_out_caller,
},
]
%]
[% FOREACH rw = rewrites %]
<h3 id="[% rw.id %]">[% rw.header %]</h3>
[% IF rw.msg %]<div class="success">[% rw.msg %]</div>[% END %]
[% IF rw.err %]<div class="error">[% rw.err %]</div>[% END %]
<ul class="cleanlist">
<li class="ui-state-default">
<div class="span-1">&nbsp;</div>
<div class="span-4">Match Pattern</div>
<div class="span-4">Replacement Pattern</div>
<div class="span-4 append-3 last">Description</div>
</li>
</ul>
<ul id="[% rw.id %]list" class="cleanlist">
[% id = 0 %]
[% priority = 999 %]
[% FOREACH rule = rw.rules %]
[% priority = rule.priority %]
<li class="ui-state-default" id="rule_[% rule.id %]">
<div class="span-1"><span class='ui-icon ui-icon-arrowthick-2-n-s'></span></div>
[% IF rule.id == editid && !Catalyst.session.admin.read_only %]
<form action="/domain/edit_rewrite" method="post">
<input type="hidden" name="direction" value="[% rule.direction %]" />
<input type="hidden" name="field" value="[% rule.field %]" />
<input type="hidden" name="domain" value="[% domain.domain.domain %]" />
<input type="hidden" name="rewriteid" value="[% rule.id %]" />
<input type="hidden" name="priority" value="[% rule.priority %]" />
<div class="span-4">
<input type="text" size="15 id="addtxt" title="string, match pattern"
name="match_pattern" value="[% rule.match_pattern %]" />
</div>
<div class="span-4">
<input type="text" size="15" id="addtxt" title="string, replacement pattern"
name="replace_pattern" value="[% rule.replace_pattern %]" />
</div>
<div class="span-4 append-1">
<input type="text" size="15" id="addtxt" title="string, rewrite rule description"
name="description" value="[% rule.description %]" />
</div>
<div class="span-1">
<button class="button-save" id="[% rw.tag %]save[% id %]">Save</button>
</div>
</form>
<div class="prepend-1 span-1 last">
<a href="/domain/rewrite?domain=[% domain.domain.domain %]#[% rw.id %]"><span class="button-cancel">Cancel</span></a>
</div>
[% ELSE %]
<div class="span-4">[% rule.match_pattern %]</div>
<div class="span-4">[% rule.replace_pattern %]</div>
<div class="span-4 append-1">[% rule.description %]</div>
<div class="span-1">
[% UNLESS Catalyst.session.admin.read_only %]
<a href="/domain/rewrite?domain=[% domain.domain.domain %]&amp;editid=[% rule.id %]#[% rw.id %]"><span class="button-edit">Edit</span></a>
[% END %]
</div>
<form action="/domain/delete_rewrite" method="post">
<input type="hidden" name="domain" value="[% domain.domain.domain %]" />
<input type="hidden" name="rewriteid" value="[% rule.id %]" />
<input type="hidden" name="direction" value="[% rule.direction %]" />
<input type="hidden" name="field" value="[% rule.field %]" />
<div class="prepend-1 span-1 last">
[% UNLESS Catalyst.session.admin.read_only %]
<button id="[% rw.tag %]del[% id %]" class="button-delete">Delete</button>
[% END %]
</div>
[% END %]
</form>
</li>
[% id = id + 1 %]
[% END %]
</ul>
[% UNLESS Catalyst.session.admin.read_only %]
<ul class="cleanlist">
<li class="ui-state-default">
<form action="/domain/create_rewrite" method="post">
<input type="hidden" name="direction" value="[% rw.dir %]" />
<input type="hidden" name="field" value="[% rw.field%]" />
<input type="hidden" name="priority" value="[% priority - 1 %]" />
<input type="hidden" name="domain" value="[% domain.domain.domain %]" />
<div class="span-1">&nbsp;</div>
<div class="span-4">
<input type="text" size="15" id="addtxt" title="string, match pattern"
name="match_pattern" value="" />
</div>
<div class="span-4">
<input type="text" size="15" id="addtxt" title="string, replacement pattern"
name="replace_pattern" value="" />
</div>
<div class="span-4 append-1">
<input type="text" size="15" id="addtxt" title="string, rule description"
name="description" value="" />
</div>
<div class="span-1 append-2 last">
<button class="button-add" id="[% rw.tag %]add">Add</button>
</div>
</form>
</li>
</ul>
<div class="hspace-20"></div>
[% END %]
[% END %]

@ -0,0 +1,134 @@
<h2> Domain [% domain %] </h2>
<!-- <a href="/domain"><span class="button-back">Back</span></a> -->
<div class="topsubmenu">
<ul>
[% IF Catalyst.config.domain.rewrite_features %]
<li><a href="rewrite?domain=[% domain %]"><span>Rewrite Rules</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 %]
Loading…
Cancel
Save