Add separate section for CF and new view for time defs.

Use separate section in subscriber preferences view to configure call-forwards.
Add new view to configure call forward time sets.
3.3
Andreas Granig 14 years ago
parent 0dfef74c39
commit f80c24f32c

@ -1212,8 +1212,6 @@ sub edit_cf : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/subscriber_callforward.tt';
my $type = $c->request->params->{type};
$c->stash->{type} = $type;
$c->stash->{seditid} = $c->request->params->{seditid};
$c->stash->{teditid} = $c->request->params->{teditid};
@ -1257,47 +1255,6 @@ sub edit_cf : Local {
$c->stash->{dsets} = $dsets;
my $cftimes;
# return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_callforward_data',
# { handle => $bilprof },
# \$peaktimes
# );
# $$peaktimes{weekdays} = [] unless defined eval { @{$$peaktimes{weekdays}} };
# foreach (sort { $$a{day} <=> $$b{day} } @{$$peaktimes{weekdays}}) {
# if(defined $c->session->{restore_peaktimes}
# and defined $edit_weekday and $$_{day} == $edit_weekday)
# {
# my $rpt = $c->session->{restore_peaktimes};
# if(defined $$rpt{startold} or defined $$rpt{endold}) {
# for(eval { @{$$_{ranges}} }) {
# if($$_{start} eq $$rpt{startold} and $$_{end} eq $$rpt{endold}) {
# $$_{restore_start} = $$rpt{start};
# $$_{restore_end} = $$rpt{end};
# }
# }
# } else {
# $c->stash->{newrange}{start} = $$rpt{start};
# $c->stash->{newrange}{end} = $$rpt{end};
# }
# }
# $weekdays[$$_{day}]{ranges} = $$_{ranges};
# }
my @weekdays;
for(0 .. 6) {
$weekdays[$_] = { name => $WEEKDAYS[$_] };
}
$c->stash->{cftimes}{weekdays} = \@weekdays;
# cf preference is a cf_id, which points to a table callforwards[id, cf_id, wday, start, end, target]
# 1. fetch rows from callforwards table matching subscriber and cf-type (we don't have the cf_id, have we?)
return 1;
}
@ -1305,8 +1262,6 @@ sub edit_cf_saveset : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/subscriber_callforward.tt';
my $type = $c->request->params->{type};
$c->stash->{type} = $type;
my $dset_id = $c->request->params->{seditid};
$c->stash->{seditid} = $dset_id;
@ -1329,13 +1284,13 @@ sub edit_cf_saveset : Local {
{
$messages{esetmsg} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id&type=$type");
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id");
}
else
{
$c->session->{messages} = \%messages;
$messages{eseterr} = 'Client.Voip.InputErrorFound';
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id&type=$type&seditid=$dset_id");
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id&seditid=$dset_id");
}
}
@ -1343,8 +1298,6 @@ sub edit_cf_delset : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/subscriber_callforward.tt';
my $type = $c->request->params->{type};
$c->stash->{type} = $type;
my $dset_id = $c->request->params->{seditid};
my $subscriber_id = $c->request->params->{subscriber_id};
@ -1370,16 +1323,13 @@ sub edit_cf_delset : Local {
$messages{eseterr} = 'Client.Voip.InputErrorFound';
}
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id&type=$type");
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id");
}
sub edit_cf_createset : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/subscriber_callforward.tt';
my $type = $c->request->params->{type};
$c->stash->{type} = $type;
my $subscriber_id = $c->request->params->{subscriber_id};
$c->stash->{subscriber_id} = $subscriber_id;
@ -1403,7 +1353,7 @@ sub edit_cf_createset : Local {
$messages{eseterr} = 'Client.Voip.InputErrorFound';
}
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id&type=$type");
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id");
}
sub edit_cf_savedst : Local {
@ -1432,10 +1382,10 @@ sub edit_cf_savedst : Local {
my $fmdom = $c->config->{fax2mail_domain};
my $confdom = $c->config->{conference_domain};
my $fw_target_select = $c->request->params->{$fwtype .'_target'} || 'disable';
my $fw_target_select = $c->request->params->{'dest_target'} || 'disable';
my $fw_target;
if($fw_target_select eq 'sipuri') {
$fw_target = $c->request->params->{$fwtype .'_sipuri'};
$fw_target = $c->request->params->{'dest_sipuri'};
# normalize, so we can do some checks.
$fw_target =~ s/^sip://i;
@ -1455,7 +1405,7 @@ sub edit_cf_savedst : Local {
$fw_target = 'sip:'. lc($fw_target) .'@'. $$subscriber{domain};
} else {
$messages{edesterr} = 'Client.Voip.MalformedTarget';
$fw_target = $c->request->params->{$fwtype .'_sipuri'};
$fw_target = $c->request->params->{'dest_sipuri'};
}
} elsif($fw_target_select eq 'voicebox') {
$fw_target = 'sip:vmu'.$$subscriber{cc}.$$subscriber{ac}.$$subscriber{sn}."\@$vbdom";
@ -1470,7 +1420,7 @@ sub edit_cf_savedst : Local {
if(keys %messages) {
$messages{preferr} = 'Client.Voip.InputErrorFound';
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id&type=$fwtype&teditid=$dest_id");
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id&teditid=$dest_id");
return;
}
@ -1492,13 +1442,13 @@ sub edit_cf_savedst : Local {
{
$messages{edestmsg} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id&type=$fwtype");
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id");
}
else
{
$c->session->{messages} = \%messages;
$messages{edesterr} = 'Client.Voip.InputErrorFound';
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id&type=$fwtype&teditid=$dest_id");
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id&teditid=$dest_id");
}
}
else
@ -1514,13 +1464,13 @@ sub edit_cf_savedst : Local {
{
$messages{edestmsg} = 'Server.Voip.SavedSettings';
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id&type=$fwtype");
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id");
}
else
{
$c->session->{messages} = \%messages;
$messages{edesterr} = 'Client.Voip.InputErrorFound';
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id&type=$fwtype&seditid=$dset_id#dset$dset_id");
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id&seditid=$dset_id#dset$dset_id");
}
}
}
@ -1529,8 +1479,6 @@ sub edit_cf_deldest : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/subscriber_callforward.tt';
my $type = $c->request->params->{type};
$c->stash->{type} = $type;
my $dset_id = $c->request->params->{seditid};
my $dest_id = $c->request->params->{teditid};
@ -1565,7 +1513,7 @@ sub edit_cf_deldest : Local {
$messages{eseterr} = 'Client.Voip.InputErrorFound';
}
$c->session->{messages} = \%messages;
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id&type=$type");
$c->response->redirect("/subscriber/edit_cf?subscriber_id=$subscriber_id");
}
sub edit_cf_updatepriority : Local {
@ -1601,6 +1549,38 @@ sub edit_cf_updatepriority : Local {
return;
}
sub edit_cf_times : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/subscriber_callforward_times.tt';
my %messages;
my $subscriber_id = $c->request->params->{subscriber_id};
$c->stash->{subscriber_id} = $subscriber_id;
return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_by_id',
{ subscriber_id => $subscriber_id },
\$c->session->{subscriber}
);
$c->stash->{subscriber} = $c->session->{subscriber};
my $tsets;
# return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_cf_destination_sets',
# { username => $c->session->{subscriber}{username},
# domain => $c->session->{subscriber}{domain},
# },
# \$dsets,
# );
$c->stash->{tsets} = $tsets;
return 1;
}
sub edit_list : Local {
my ( $self, $c ) = @_;
$c->stash->{template} = 'tt/subscriber_edit_list.tt';

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 B

@ -83,6 +83,7 @@
{ name = "deactivate", icon="minus" },
{ name = "listen", icon="video" },
{ name = "clock", icon="clock" },
{ name = "transfer", icon="transferthick-e-w" },
{ name = "cart", icon="cart" },
{ name = "browse", icon="folder-open" },
]

@ -17,11 +17,11 @@
});
</script>
<h3>Edit [% type %] for <a href="detail?subscriber_id=[% subscriber_id %]">[% subscriber.username %]@[% subscriber.domain %]</a></h3>
<h3>Edit Call Forward Destination Sets for <a href="detail?subscriber_id=[% subscriber_id %]">[% subscriber.username %]@[% subscriber.domain %]</a></h3>
<a href="preferences?subscriber_id=[% subscriber_id %]&amp;#userprefs"><span class="button-back">Back</span></a>
<a href="preferences?subscriber_id=[% subscriber_id %]&amp;#callforward"><span class="button-back">Back</span></a>
<h3 id="weekdays">Destination Sets</h3>
<h3 id="destsets">Destination Sets</h3>
[% IF messages.esetmsg %]<div class="success">[% messages.esetmsg %]</div>[% END %]
[% IF messages.eseterr %]<div class="error">[% messages.eseterr %]</div>[% END %]
@ -40,12 +40,11 @@
[% IF seditid == dset.id %]
<form action="/subscriber/edit_cf_saveset" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]"/>
<input type="hidden" name="type" value="[% type %]"/>
<input type="hidden" name="seditid" value="[% dset.id %]"/>
<div class="span-4"><input type="text" size="20" name="dsetname" value="[% dset.name %]"/></div>
<div class="prepend-10 span-1"><button class="button-save">Save</button></div>
<div class="span-1">
<a href="/subscriber/edit_cf?subscriber_id=[% subscriber_id %]&type=[% type %]#dset[% dset.id %]"><span class="button-cancel">Cancel</span></a>
<a href="/subscriber/edit_cf?subscriber_id=[% subscriber_id %]#dset[% dset.id %]"><span class="button-cancel">Cancel</span></a>
</div>
</form>
[% ELSIF Catalyst.session.admin.read_only %]
@ -53,12 +52,11 @@
[% ELSE %]
<div class="span-4">[% dset.name %]</div>
<div class="prepend-10 span-1">
<a href="/subscriber/edit_cf?subscriber_id=[% subscriber_id %]&type=[% type %]&seditid=[% dset.id %]#dset[% dset.id %]"><span class="button-edit">Edit</span></a>
<a href="/subscriber/edit_cf?subscriber_id=[% subscriber_id %]&seditid=[% dset.id %]#dset[% dset.id %]"><span class="button-edit">Edit</span></a>
</div>
<div class="span-1 last">
<form action="/subscriber/edit_cf_delset" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]"/>
<input type="hidden" name="type" value="[% type %]"/>
<input type="hidden" name="seditid" value="[% dset.id %]"/>
<button class="button-delete">Delete</button>
</form>
@ -76,51 +74,49 @@
<form action="/subscriber/edit_cf_savedst" method="post">
<div class="span-12">
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]"/>
<input type="hidden" name="type" value="[% type %]"/>
<input type="hidden" name="seditid" value="[% dset.id %]"/>
<input type="hidden" name="teditid" value="[% dest.id %]"/>
<input type="hidden" name="priority" value="[% dest.priority %]"/>
[% IF Catalyst.config.voicemail_features %]
<input type="radio" id="[% type %]_voicebox" value="voicebox" name="[% type %]_target" class="radio"
<input type="radio" id="dest_voicebox" value="voicebox" name="dest_target" class="radio"
[% IF dest.destination == "voicebox" %] checked="checked"[% END %]/>
<label for="[% type %]_voicebox">Voicebox</label>
<label for="dest_voicebox">Voicebox</label>
<br clear="all" />
[% END %]
[% IF Catalyst.config.fax_features %]
<input type="radio" id="[% type %]_faxserver" value="fax2mail" name="[% type %]_target" class="radio"
<input type="radio" id="dest_faxserver" value="fax2mail" name="dest_target" class="radio"
[% IF dest.destination == "fax2mail" %] checked="checked"[% END %]/>
<label for="[% preference.key %]faxserver">Fax2Mail</label>
<br clear="all" />
[% END %]
[% IF Catalyst.config.conference_features %]
<input type="radio" id="[% type %]_conference" value="conference" name="[% type %]_target" class="radio"
<input type="radio" id="dest_conference" value="conference" name="dest_target" class="radio"
[% IF dest.destination == "conference" %] checked="checked"[% END %]/>
<label for="[% preference.key %]conference">Conference room</label>
<br clear="all" />
[% END %]
<input type="radio" id="[% type %]_sipuri" value="sipuri" name="[% type %]_target" class="radio"
<input type="radio" id="dest_sipuri" value="sipuri" name="dest_target" class="radio"
[% IF dest.destination != "conference" && dest.destination != "voicebox" && dest.destination != "fax2mail" %] checked="checked"[% END %]/>
<label for="[% preference.key %]sipuri">Number or SIP-URI:</label>
<input type="text" id="[% type %]_sipuritxt" name="[% type %]_sipuri" size="25" value="[% IF dest.destination != "conference" && dest.destination != "voicebox" && dest.destination != "fax2mail" %][% dest.destination %][% END %]"/>
<input type="text" id="dest_sipuritxt" name="dest_sipuri" size="25" value="[% IF dest.destination != "conference" && dest.destination != "voicebox" && dest.destination != "fax2mail" %][% dest.destination %][% END %]"/>
</div>
<div class="span-1">
<button class="button-save">Save</button>
</div>
<div class="span-1 last">
<a href="/subscriber/edit_cf?subscriber_id=[% subscriber_id %]&type=[% type %]#dest[% dest.id %]"><span class="button-cancel">Cancel</span></a>
<a href="/subscriber/edit_cf?subscriber_id=[% subscriber_id %]#dest[% dest.id %]"><span class="button-cancel">Cancel</span></a>
</div>
</form>
[% ELSE %]
<div class="span-5 last">[% dest.destination %]</div>
[% UNLESS Catalyst.session.admin.read_only %]
<div class="prepend-7 span-1">
<a href="/subscriber/edit_cf?subscriber_id=[% subscriber_id %]&type=[% type %]&teditid=[% dest.id %]"><span class="button-edit">Edit</span></a>
<a href="/subscriber/edit_cf?subscriber_id=[% subscriber_id %]&teditid=[% dest.id %]"><span class="button-edit">Edit</span></a>
</div>
<div class="span-1 last">
<form action="/subscriber/edit_cf_deldest" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]"/>
<input type="hidden" name="type" value="[% type %]"/>
<input type="hidden" name="seditid" value="[% dset.id %]"/>
<input type="hidden" name="teditid" value="[% dest.id %]"/>
<button class="button-delete">Delete</button>
@ -138,27 +134,26 @@
<form action="/subscriber/edit_cf_savedst" method="post">
<div class="span-12">
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]"/>
<input type="hidden" name="type" value="[% type %]"/>
<input type="hidden" name="seditid" value="[% dset.id %]"/>
<input type="hidden" name="priority" value="[% priority %]"/>
[% IF Catalyst.config.voicemail_features %]
<input type="radio" id="[% type %]_voicebox" value="voicebox" name="[% type %]_target" class="radio"/>
<label for="[% type %]_voicebox">Voicebox</label>
<input type="radio" id="dest_voicebox" value="voicebox" name="dest_target" class="radio"/>
<label for="dest_voicebox">Voicebox</label>
<br clear="all" />
[% END %]
[% IF Catalyst.config.fax_features %]
<input type="radio" id="[% type %]_faxserver" value="fax2mail" name="[% type %]_target" class="radio"/>
<input type="radio" id="dest_faxserver" value="fax2mail" name="dest_target" class="radio"/>
<label for="[% preference.key %]faxserver">Fax2Mail</label>
<br clear="all" />
[% END %]
[% IF Catalyst.config.conference_features %]
<input type="radio" id="[% type %]_conference" value="conference" name="[% type %]_target" class="radio"/>
<input type="radio" id="dest_conference" value="conference" name="dest_target" class="radio"/>
<label for="[% preference.key %]conference">Conference room</label>
<br clear="all" />
[% END %]
<input type="radio" id="[% type %]_sipuri" value="sipuri" name="[% type %]_target" class="radio" checked="checked"/>
<input type="radio" id="dest_sipuri" value="sipuri" name="dest_target" class="radio" checked="checked"/>
<label for="[% preference.key %]sipuri">Number or SIP-URI:</label>
<input type="text" id="[% type %]_sipuritxt" name="[% type %]_sipuri" size="25"/>
<input type="text" id="dest_sipuritxt" name="dest_sipuri" size="25"/>
</div>
<div class="span-1 last">
<button class="button-add">Add</button>
@ -174,7 +169,6 @@
<li class="ui-state-default">
<form action="/subscriber/edit_cf_createset" method="post">
<input type="hidden" name="subscriber_id" value="[% subscriber_id %]"/>
<input type="hidden" name="type" value="[% type %]"/>
<div class="span-4"><input type="text" size="20" name="dsetname" value=""/></div>
<div class="prepend-10 span-1 last"><button class="button-add">Add</button></div>
</form>

@ -0,0 +1,300 @@
<style>
div.ui-widget-header.drophead, div.ui-widget-header.dropfoot {
height: 18px;
width: 150px;
}
div.ui-widget-header.drophead p, div.ui-widget-header.dropfoot p {
text-align: center;
font-weight: normal;
}
div.ui-widget-header.dropfoot p a,
div.ui-widget-header.dropfoot p a:visited,
div.ui-widget-header.dropfoot p a:link {
color: #459E00;
text-decoration: none;
}
div.ui-widget-header.dropfoot p a:hover {
color: #54c000;
text-decoration: none;
}
div.dateform-elem {
height: 26px;
width: 150px;
}
div.waiting {
background: url("jquery-ui/css/smooth/images/ui-bg_glass_75_e6e6e6_1x400.png") repeat-x scroll 50% 50% #E6E6E6;
border: 1px solid #D3D3D3;
color: #555555;
}
div.accepting {
background: url("jquery-ui/css/smooth/images/ui-bg_glass_55_fbf9ee_1x400.png") repeat-x scroll 50% 50% #FBF9EE;
border: 1px solid #FCEFA1;
color: #363636;
}
div.hovering {
background: url("jquery-ui/css/smooth/images/ui-bg_glass_55_f2fbee_1x400.png") repeat-x scroll 50% 50% #F2FBEE;
border: 1px solid #BFFCA1;
color: #363636;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
createDropZone('drop-elem-year');
createDropZone('drop-elem-month');
createDropZone('drop-elem-wday');
createDropZone('drop-elem-tofday');
function createDropZone(id) {
var anchor;
if(id == "drop-elem-year") {
anchor = $('div#drop-anchor-year');
anchor.find('div.drophead').after($('<div class="dateform-elem waiting" id="' + id + '">any</div>').droppable({
hoverClass: "hovering",
activeClass: "accepting",
accept: function(d){
if(d.attr("id") == "drag-elem-year" ||
d.attr("id") == "drag-elem-year-range")
{ return true; }
},
drop: handleDrop,
}));
} else if(id == "drop-elem-month") {
anchor = $('div#drop-anchor-month');
anchor.find('div.drophead').after($('<div class="dateform-elem waiting" id="' + id + '">any</div>').droppable({
hoverClass: "hovering",
activeClass: "accepting",
accept: function(d){
if(d.attr("id") == "drag-elem-month" ||
d.attr("id") == "drag-elem-month-range")
{ return true; }
},
drop: handleDrop,
}));
} else if(id == "drop-elem-wday") {
anchor = $('div#drop-anchor-wday');
anchor.find('div.drophead').after($('<div class="dateform-elem waiting" id="' + id + '">any</div>').droppable({
hoverClass: "hovering",
activeClass: "accepting",
accept: function(d){
if(d.attr("id") == "drag-elem-wday" ||
d.attr("id") == "drag-elem-wday-range")
{ return true; }
},
drop: handleDrop,
}));
} else if(id == "drop-elem-tofday") {
anchor = $('div#drop-anchor-tofday');
anchor.find('div.drophead').after($('<div class="dateform-elem waiting" id="' + id + '">any</div>').droppable({
hoverClass: "hovering",
activeClass: "accepting",
accept: function(d){
if(d.attr("id") == "drag-elem-tofday" ||
d.attr("id") == "drag-elem-tofday-range")
{ return true; }
},
drop: handleDrop,
}));
}
if(anchor != undefined) {
var foot = $(anchor).find('div.dropfoot');
$(foot).find('p').replaceWith('<p>Drop to refine</p>');
}
}
function removeDrop(id) {
$('div#' + id).remove();
createDropZone(id);
}
function handleDrop(event, ui) {
var dropped = ui.draggable.clone();
var from_select = dropped.find('select.from');
if(from_select) {
from_select.removeAttr('disabled');
from_select.children().remove();
}
var to_select = dropped.find('select.to');
if(to_select) {
to_select.removeAttr('disabled');
to_select.children().remove();
}
var from_text = dropped.find('input.from');
if(from_text) {
from_text.removeAttr('value');
from_text.removeAttr('disabled');
}
var to_text = dropped.find('input.to');
if(to_text) {
to_text.removeAttr('value');
to_text.removeAttr('disabled');
}
var d = new Date();
var years = new Array(10);
var months = new Array(12);
var month_names = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var wdays = new Array(7);
var wday_names = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"];
// from-year
var newid;
if(dropped.attr("id") == "drag-elem-year" || dropped.attr("id") == "drag-elem-year-range") {
for(var i = 0; i < years.length; ++i) {
$('<option value="' + (d.getFullYear()+i) + '">' + (d.getFullYear()+i) + '</option>').appendTo(from_select);
}
newid = "drop-elem-year";
}
// to-year
if(dropped.attr("id") == "drag-elem-year-range") {
for(var i = 0; i < years.length; ++i) {
$('<option value="' + (d.getFullYear()+i+1) + '">' + (d.getFullYear()+i+1) + '</option>').appendTo(to_select);
}
}
// from-month
if(dropped.attr("id") == "drag-elem-month" || dropped.attr("id") == "drag-elem-month-range") {
for(var i = 0; i < months.length; ++i) {
$('<option value="' + (i+1) + '">' + month_names[i] + '</option>').appendTo(from_select);
}
newid = "drop-elem-month";
}
// to-month
if(dropped.attr("id") == "drag-elem-month-range") {
for(var i = 0; i < months.length; ++i) {
$('<option value="' + (i+1) + '">' + month_names[i] + '</option>').appendTo(to_select);
}
}
// from-wday
if(dropped.attr("id") == "drag-elem-wday" || dropped.attr("id") == "drag-elem-wday-range") {
for(var i = 0; i < wdays.length; ++i) {
$('<option value="' + (i+1) + '">' + wday_names[i] + '</option>').appendTo(from_select);
}
newid = "drop-elem-wday";
}
// to-wday
if(dropped.attr("id") == "drag-elem-wday-range") {
for(var i = 0; i < wdays.length; ++i) {
$('<option value="' + (i+1) + '">' + wday_names[i] + '</option>').appendTo(to_select);
}
}
if(dropped.attr("id") == "drag-elem-tofday-range") {
newid = "drop-elem-tofday";
}
dropped.attr("id", newid);
// replace old footer text by remove-link and bind click handler
var foot = $(this).next('div');
$(foot).find('p').replaceWith('<p></p>');
$('<a href="javascript:void(0);">Remove</a>').click(function(){
removeDrop(dropped.attr("id"));
}).appendTo($(foot).find('p'));
$(this).replaceWith(dropped).attr('class', 'span-4 ui-state-default dateform-elem');
if(dropped.attr("id") == "drag-elem-wday-range") {
$(this).addClass("last");
}
}
// create draggables for
// drag-elem-{year,month,wday,tofday}-range and
// drag-elem-{year,month,wday}
drags = ["year", "month", "wday", "tofday"];
for(var i = 0; i < drags.length; ++i) {
$("#drag-elem-" + drags[i] + "-range").draggable({
cursor: "move",
helper: "clone",
revert: false,
opacity: 0.7,
});
if(drags[i] != "tofday") {
$("#drag-elem-" + drags[i]).draggable({
cursor: "move",
helper: "clone",
revert: false,
opacity: 0.7,
});
}
}
//$("ul, li").disableSelection();
});
</script>
<h3>Edit Call Forward Time Sets for <a href="detail?subscriber_id=[% subscriber_id %]">[% subscriber.username %]@[% subscriber.domain %]</a></h3>
<a href="preferences?subscriber_id=[% subscriber_id %]&amp;#callforward"><span class="button-back">Back</span></a>
<div class="hspace-20"></div>
<h3 id="weekdays">Drag Building Blocks to Sets</h3>
[% IF messages.epeakmsg %]<div class="success">[% messages.epeakmsg %]</div>[% END %]
[% IF messages.epeakerr %]<div class="error">[% messages.epeakerr %]</div>[% END %]
<div class="span-4">
<div class="ui-state-default dateform-elem" id="drag-elem-year">
<select size="1" class="from" disabled="disabled"><option>Year</option></select>
</div>
<div class="ui-state-default dateform-elem" id="drag-elem-year-range">
<select size="1" class="from" disabled="disabled"><option>Year</option></select> to
<select size="1" class="to" disabled="disabled"><option>Year</option></select>
</div>
</div>
<div class="span-4">
<div class="ui-state-default dateform-elem" id="drag-elem-month">
<select size="1" class="from" disabled="disabled"><option>Month</option></select>
</div>
<div class="ui-state-default dateform-elem" id="drag-elem-month-range">
<select size="1" class="from" disabled="disabled"><option>Month</option></select> to
<select size="1" class="to" disabled="disabled"><option>Month</option></select>
</div>
</div>
<div class="span-4">
<div class="ui-state-default dateform-elem" id="drag-elem-wday">
<select size="1" class="from" disabled="disabled"><option>WDay</option></select>
</div>
<div class="ui-state-default dateform-elem" id="drag-elem-wday-range">
<select size="1" class="from" disabled="disabled"><option>WDay</option></select> to
<select size="1" class="to" disabled="disabled"><option>WDay</option></select>
</div>
</div>
<div class="span-4 last">
<div class="ui-state-default dateform-elem" id="drag-elem-tofday-range">
<input type="text" size="5" class="from" disabled="disabled" value="hh:mm"/> to
<input type="text" size="5" class="to" disabled="disabled" value="hh:mm"/>
</div>
</div>
<br/>
<div class="hspace-20"></div>
<h3 id="timesets">Time Sets</h3>
<div class="span-4" id="drop-anchor-year">
<div class="ui-widget-header drophead"><p>Year</p></div>
<div class="ui-widget-header dropfoot"><p>Drop to refine</p></div>
</div>
<div class="span-4" id="drop-anchor-month">
<div class="ui-widget-header drophead"><p>Month</p></div>
<div class="ui-widget-header dropfoot"><p>Drop to refine</p></div>
</div>
<div class="span-4" id="drop-anchor-wday">
<div class="ui-widget-header drophead"><p>Weekday</p></div>
<div class="ui-widget-header dropfoot"><p>Drop to refine</p></div>
</div>
<div class="span-4 last" id="drop-anchor-tofday">
<div class="ui-widget-header drophead"><p>Time of Day</p></div>
<div class="ui-widget-header dropfoot"><p>Drop to refine</p></div>
</div>

@ -184,8 +184,6 @@
[% IF ! edit_preferences && ! Catalyst.session.admin.read_only %]
[% IF preference.key == "allowed_ips" || preference.key == "man_allowed_ips" %]
<a href="edit_iplist?subscriber_id=[% subscriber.subscriber_id %]&amp;list_name=[% preference.key %]"><span class="button-edit">Edit List</span></a>
[% ELSIF preference.key == "cftest" || preference.key == "cftest_foo" %]
<a href="edit_cf?subscriber_id=[% subscriber.subscriber_id %]&amp;type=[% preference.key %]"><span class="button-edit">Edit List</span></a>
[% ELSE %]
<a href="edit_list?subscriber_id=[% subscriber.subscriber_id %]&amp;list_name=[% preference.key %]"><span class="button-edit">Edit List</span></a>
[% END %]
@ -202,6 +200,37 @@
[% END %]
</form>
<div class="hspace-20"></div>
<h3 id="callforward">Call Forwards</h3>
[% UNLESS Catalyst.session.admin.read_only %]
[% IF edit_callforward %]
<a href="preferences?subscriber_id=[% subscriber.subscriber_id %]#callforward"><span class="button-cancel">Cancel</span></a>
[% ELSE %]
<a href="preferences?subscriber_id=[% subscriber.subscriber_id %]&edit_callforward=1#callforward"><span class="button-edit">Edit Call-Forwards</span></a>
<a href="edit_cf?subscriber_id=[% subscriber.subscriber_id %]"><span class="button-transfer">Edit Destination Sets</span></a>
<a href="edit_cf_times?subscriber_id=[% subscriber.subscriber_id %]"><span class="button-clock">Edit Time Sets</span></a>
[% END %]
[% END %]
[% IF messages.cfmsg %]<div class="success">[% messages.cfmsg %]</div>[% END %]
[% IF messages.cferr %]<div class="error">[% messages.cferr %]</div>[% END %]
[% IF edit_callforward && prov_error %]<div class="error">[% prov_error %]</div>[% END %]
<form action="update_callforward" method="post">
<ul class="cleanlist">
<li class="ui-state-default">
<div class="span-6">Call Forward Unconditional:</div>
</li>
<li class="ui-state-default">
<div class="span-6">Call Forward Busy:</div>
</li>
<li class="ui-state-default">
<div class="span-6">Call Forward Timeout:</div>
</li>
<li class="ui-state-default">
<div class="span-6">Call Forward Unavailable:</div>
</li>
</ul>
</form>
<div class="hspace-20"></div>
<h3 id="reminder">Reminder Calls</h3>

Loading…
Cancel
Save