diff --git a/lib/admin/Controller/subscriber.pm b/lib/admin/Controller/subscriber.pm index 5675d22..d535e21 100644 --- a/lib/admin/Controller/subscriber.pm +++ b/lib/admin/Controller/subscriber.pm @@ -468,6 +468,13 @@ sub preferences : Local { $c->session->{subscriber}{audio_files} = $audio_files if eval { @$audio_files }; } + return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_reminder', + { username => $c->session->{subscriber}{username}, + domain => $c->session->{subscriber}{domain}, + }, + \$c->session->{subscriber}{reminder} + ); + $c->stash->{subscriber} = $c->session->{subscriber}; $c->stash->{subscriber}{subscriber_id} = $subscriber_id; $c->stash->{subscriber}{is_locked} = $c->model('Provisioning')->localize($c->view($c->config->{view})-> @@ -509,6 +516,15 @@ sub preferences : Local { } delete $c->session->{restore_faxprefs_input}; } + if(ref $c->session->{restore_reminder_input} eq 'HASH') { + if(ref $c->stash->{subscriber}{reminder} eq 'HASH') { + $c->stash->{subscriber}{reminder} = { %{$c->stash->{subscriber}{reminder}}, + %{$c->session->{restore_reminder_input}} }; + } else { + $c->stash->{subscriber}{reminder} = $c->session->{restore_reminder_input}; + } + delete $c->session->{restore_reminder_input}; + } ### build preference array for TT ### @@ -621,6 +637,7 @@ sub preferences : Local { $c->stash->{edit_preferences} = $c->request->params->{edit_preferences}; $c->stash->{edit_voicebox} = $c->request->params->{edit_voicebox}; $c->stash->{edit_fax} = $c->request->params->{edit_fax}; + $c->stash->{edit_reminder} = $c->request->params->{edit_reminder}; return 1; } @@ -811,6 +828,46 @@ sub update_preferences : Local { } +sub update_reminder : Local { + my ( $self, $c ) = @_; + + my %messages; + + my $subscriber_id = $c->request->params->{subscriber_id}; + return unless $c->model('Provisioning')->call_prov( $c, 'voip', 'get_subscriber_byid', + { subscriber_id => $subscriber_id }, + \$c->session->{subscriber} + ); + my $reminder; + $$reminder{time} = $c->request->params->{time}; + $$reminder{recur} = $c->request->params->{recur} || 'never'; + + ### save settings ### + + unless(keys %messages) { + if($c->model('Provisioning')->call_prov( $c, 'voip', 'set_subscriber_reminder', + { username => $c->session->{subscriber}{username}, + domain => $c->session->{subscriber}{domain}, + data => $reminder, + }, + undef + )) + { + $messages{remmsg} = 'Server.Voip.SavedSettings'; + $c->session->{messages} = \%messages; + $c->response->redirect("/subscriber/preferences?subscriber_id=$subscriber_id#reminder"); + return; + } + } else { + $messages{faxerr} = 'Client.Voip.InputErrorFound'; + } + + $c->session->{messages} = \%messages; + $c->session->{restore_reminder_input} = $reminder; + $c->response->redirect("/subscriber/preferences?subscriber_id=$subscriber_id&edit_reminder=1#reminder"); + return; +} + sub update_voicebox : Local { my ( $self, $c ) = @_; diff --git a/root/tt/subscriber_preferences.tt b/root/tt/subscriber_preferences.tt index 8b7de19..9196c40 100644 --- a/root/tt/subscriber_preferences.tt +++ b/root/tt/subscriber_preferences.tt @@ -212,6 +212,49 @@ +