From cdb87937a839525722b0af8be76c57a6342f80fb Mon Sep 17 00:00:00 2001 From: Andreas Granig Date: Tue, 24 Jan 2012 13:53:26 +0000 Subject: [PATCH] Implement editing of time periods. Can be used with drag/drop/remove like a new period now. --- lib/admin/Controller/subscriber.pm | 31 ++++++++++++++---- root/tt/subscriber_callforward_times.tt | 42 +++++++++++++------------ 2 files changed, 47 insertions(+), 26 deletions(-) diff --git a/lib/admin/Controller/subscriber.pm b/lib/admin/Controller/subscriber.pm index 052c727..ba8e335 100644 --- a/lib/admin/Controller/subscriber.pm +++ b/lib/admin/Controller/subscriber.pm @@ -1740,7 +1740,7 @@ sub edit_cf_times_createset : Local { # fooooo -sub edit_cf_times_createperiod : Local { +sub edit_cf_times_saveperiod : Local { my ( $self, $c ) = @_; $c->stash->{template} = 'tt/subscriber_callforward_times.tt'; @@ -1748,6 +1748,8 @@ sub edit_cf_times_createperiod : Local { $c->stash->{subscriber_id} = $subscriber_id; my $tset_id = $c->request->params->{seditid}; $c->stash->{seditid} = $tset_id; + my $period_id = $c->request->params->{peditid}; + $c->stash->{peditid} = $period_id; my %messages; my %period; @@ -1774,6 +1776,7 @@ sub edit_cf_times_createperiod : Local { $self->period_collapse(\%period); $period{setid} = $tset_id; + $period{id} = $period_id if(defined $period_id); my $subscriber; return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_by_id', @@ -1782,13 +1785,29 @@ sub edit_cf_times_createperiod : Local { ); $c->stash->{subscriber} = $subscriber; - if($c->model('Provisioning')->call_prov( $c, 'voip', 'create_subscriber_cf_time_period', + my $ret; + unless(defined $period_id) + { + $ret = $c->model('Provisioning')->call_prov( $c, 'voip', 'create_subscriber_cf_time_period', { username => $subscriber->{username}, domain => $subscriber->{domain}, data => \%period, }, undef, - )) + ); + } + else + { + $ret = $c->model('Provisioning')->call_prov( $c, 'voip', 'update_subscriber_cf_time_period', + { username => $subscriber->{username}, + domain => $subscriber->{domain}, + data => \%period, + }, + undef, + ); + } + + if($ret) { $messages{esetmsg} = 'Server.Voip.SavedSettings'; } @@ -1797,7 +1816,7 @@ sub edit_cf_times_createperiod : Local { $messages{eseterr} = 'Client.Voip.InputErrorFound'; } $c->session->{messages} = \%messages; - $c->response->redirect("/subscriber/edit_cf_times?subscriber_id=$subscriber_id"); + $c->response->redirect("/subscriber/edit_cf_times?subscriber_id=$subscriber_id#".$tset_id."set"); } sub period_collapse : Private { @@ -1849,7 +1868,7 @@ sub period_collapse : Private { # nothing to be done } elsif(defined $period->{from_wday} && defined $period->{to_wday}) { - $period->{mday} = $period->{from_wday} . "-" . $period->{to_wday}; + $period->{wday} = $period->{from_wday} . "-" . $period->{to_wday}; } else { # skip if incomplete @@ -2009,7 +2028,7 @@ sub edit_cf_time_delperiod : Local { $messages{eseterr} = 'Client.Voip.InputErrorFound'; } $c->session->{messages} = \%messages; - $c->response->redirect("/subscriber/edit_cf_times?subscriber_id=$subscriber_id"); + $c->response->redirect("/subscriber/edit_cf_times?subscriber_id=$subscriber_id#".$tset_id."set"); } sub edit_list : Local { diff --git a/root/tt/subscriber_callforward_times.tt b/root/tt/subscriber_callforward_times.tt index 0db7664..ee712d5 100644 --- a/root/tt/subscriber_callforward_times.tt +++ b/root/tt/subscriber_callforward_times.tt @@ -90,37 +90,39 @@ createDropZone(drops[i], [% tset.id %], 0, true); } [% FOREACH p IN tset.periods %] - createDropZone('drop-elem-year', [% tset.id %], [% p.id %], false); + for(var i in drops) { + [% IF peditid == p.id %] + createDropZone(drops[i], [% tset.id %], [% p.id %], true); + [% ELSE %] + createDropZone(drops[i], [% tset.id %], [% p.id %], false); + [% END %] + } + [% IF p.year.defined %] $('div#drop-elem-year-[% tset.id %]-[% p.id %]').trigger('drop', [$('div#drag-elem-year').draggable().clone(), true, '[% p.year %]', undefined, undefined]); [% ELSIF p.from_year.defined AND p.to_year.defined %] $('div#drop-elem-year-[% tset.id %]-[% p.id %]').trigger('drop', [$('div#drag-elem-year-range').draggable().clone(), true, undefined, '[% p.from_year %]', '[% p.to_year %]']); [% END %] - createDropZone('drop-elem-month', [% tset.id %], [% p.id %], false); [% IF p.month.defined %] $('div#drop-elem-month-[% tset.id %]-[% p.id %]').trigger('drop', [$('div#drag-elem-month').draggable().clone(), true, '[% p.month %]', undefined, undefined]); [% ELSIF p.from_month.defined AND p.to_month.defined %] $('div#drop-elem-month-[% tset.id %]-[% p.id %]').trigger('drop', [$('div#drag-elem-month-range').draggable().clone(), true, undefined, '[% p.from_month %]', '[% p.to_month %]']); [% END %] - createDropZone('drop-elem-mday', [% tset.id %], [% p.id %], false); [% IF p.mday.defined %] $('div#drop-elem-mday-[% tset.id %]-[% p.id %]').trigger('drop', [$('div#drag-elem-mday').draggable().clone(), true, '[% p.mday %]', undefined, undefined]); [% ELSIF p.from_mday.defined AND p.to_mday.defined %] $('div#drop-elem-mday-[% tset.id %]-[% p.id %]').trigger('drop', [$('div#drag-elem-mday-range').draggable().clone(), true, undefined, '[% p.from_mday %]', '[% p.to_mday %]']); [% END %] - createDropZone('drop-elem-wday', [% tset.id %], [% p.id %], false); [% IF p.wday.defined %] $('div#drop-elem-wday-[% tset.id %]-[% p.id %]').trigger('drop', [$('div#drag-elem-wday').draggable().clone(), true, '[% p.wday %]', undefined, undefined]); [% ELSIF p.from_wday.defined AND p.to_wday.defined %] $('div#drop-elem-wday-[% tset.id %]-[% p.id %]').trigger('drop', [$('div#drag-elem-wday-range').draggable().clone(), true, undefined, '[% p.from_wday %]', '[% p.to_wday %]']); [% END %] - createDropZone('drop-elem-hour', [% tset.id %], [% p.id %], false); [% IF p.hour.defined %] $('div#drop-elem-hour-[% tset.id %]-[% p.id %]').trigger('drop', [$('div#drag-elem-hour').draggable().clone(), true, '[% p.hour %]', undefined, undefined]); [% ELSIF p.from_hour.defined AND p.to_hour.defined %] $('div#drop-elem-hour-[% tset.id %]-[% p.id %]').trigger('drop', [$('div#drag-elem-hour-range').draggable().clone(), true, undefined, '[% p.from_hour %]', '[% p.to_hour %]']); [% END %] - createDropZone('drop-elem-minute', [% tset.id %], [% p.id %], false); [% IF p.minute.defined %] $('div#drop-elem-minute-[% tset.id %]-[% p.id %]').trigger('drop', [$('div#drag-elem-minute').draggable().clone(), true, '[% p.minute %]', undefined, undefined]); [% ELSIF p.from_minute.defined AND p.to_minute.defined %] @@ -243,13 +245,11 @@ } function handleDrop(event, ui, manual, param, from_param, to_param) { - if(manual) - ui = ui[0]; var dropped; - if(ui.draggable) - dropped = ui.draggable.clone(); - else + if(manual) dropped = $(ui); + else + dropped = ui.draggable.clone(); var tsetid = $(this).attr('id'); var zonearr = tsetid.match(/^.+\-([0-9]+)\-([0-9]+)$/); @@ -280,8 +280,6 @@ var hours = new Array(24); var minutes = new Array(60); - console.log("param=" + param + ", from_param=" + from_param + ", to_param=" + to_param); - // from-year if(dropped.attr("id") == "drag-elem-year" || dropped.attr("id") == "drag-elem-year-range") { for(var i = 0; i < years.length; ++i) { @@ -366,8 +364,6 @@ $('Remove').click(function(){ removeDrop(dropped.attr("id"), tsetid); }).appendTo($(foot).find('p')); - } else { - // nothing here yet } $(this).replaceWith(dropped).attr('class', 'span-4 ui-state-default dateform-elem'); if(dropped.attr("id") == "drag-elem-wday-range") { @@ -499,6 +495,13 @@ [% pedit = 0 %] [% END %]
  • + [% UNLESS Catalyst.session.admin.read_only %] + [% IF pedit %] +
    + [% ELSE %] + + [% END %] + [% END %]

    Year

    Drop to refine

    @@ -527,12 +530,10 @@ [% UNLESS Catalyst.session.admin.read_only %] [% IF pedit %]
    - -
    Cancel @@ -542,22 +543,23 @@ Edit
    -
    -
    [% END %] [% END %] + [% UNLESS Catalyst.session.admin.read_only %] + + [% END %]
  • [% END %] [% IF seditid == tset.id || !tset.periods || tset.periods.size == 0 %]
  • -
    +