From 9d48ab9d8bf332ecb1a5c1b902f4ecb003514ebf Mon Sep 17 00:00:00 2001
From: Daniel Tiefnig
Date: Mon, 29 Mar 2010 21:48:52 +0000
Subject: [PATCH] implemented reminder settings interface added reminder status
to desktop added reminder status icons added "reminder" main_menu config
option
---
etc/csc.conf | 1 +
lib/csc/Controller/desktop.pm | 8 +++
lib/csc/Controller/reminder.pm | 125 +++++++++++++++++++++++++++++++++
root/css/sipwise.css | 31 ++++++++
root/grafik/reminder_off.gif | Bin 0 -> 744 bytes
root/grafik/reminder_on.gif | Bin 0 -> 761 bytes
root/layout/header | 3 +
root/tt/desktop.tt | 20 +++++-
root/tt/reminder.tt | 81 +++++++++++++++++++++
9 files changed, 268 insertions(+), 1 deletion(-)
create mode 100644 lib/csc/Controller/reminder.pm
create mode 100644 root/grafik/reminder_off.gif
create mode 100644 root/grafik/reminder_on.gif
create mode 100644 root/tt/reminder.tt
diff --git a/etc/csc.conf b/etc/csc.conf
index c3da855..47cef8c 100644
--- a/etc/csc.conf
+++ b/etc/csc.conf
@@ -43,6 +43,7 @@
addressbook="1"
callforward="1"
callblock="1"
+ reminder="1"
device="0"
account="1"
/>
diff --git a/lib/csc/Controller/desktop.pm b/lib/csc/Controller/desktop.pm
index c2793f4..99be88c 100644
--- a/lib/csc/Controller/desktop.pm
+++ b/lib/csc/Controller/desktop.pm
@@ -82,6 +82,14 @@ sub index : Private {
and @{$c->stash->{subscriber}{voicemail_list}};
delete $c->session->{user}{voicemail_list} if exists $c->session->{user}{voicemail_list};
+ return 1 unless $c->model('Provisioning')->call_prov($c, 'voip', 'get_subscriber_reminder',
+ { username => $c->session->{user}{username},
+ domain => $c->session->{user}{domain},
+ },
+ \$c->stash->{subscriber}{reminder}
+ );
+
+ return;
}
=head1 BUGS AND LIMITATIONS
diff --git a/lib/csc/Controller/reminder.pm b/lib/csc/Controller/reminder.pm
new file mode 100644
index 0000000..9eadadc
--- /dev/null
+++ b/lib/csc/Controller/reminder.pm
@@ -0,0 +1,125 @@
+package csc::Controller::reminder;
+
+use strict;
+use warnings;
+use base 'Catalyst::Controller';
+
+=head1 NAME
+
+csc::Controller::reminder - Catalyst Controller
+
+=head1 DESCRIPTION
+
+Catalyst Controller.
+
+=head1 METHODS
+
+=cut
+
+
+=head2 index
+
+=cut
+
+sub index : Private {
+ my ( $self, $c, $preferences ) = @_;
+
+ $c->log->debug('***reminder::index called');
+ $c->stash->{template} = 'tt/reminder.tt';
+
+ return 1 unless $c->model('Provisioning')->call_prov($c, 'voip', 'get_subscriber',
+ { username => $c->session->{user}{username},
+ domain => $c->session->{user}{domain},
+ },
+ \$c->session->{user}{data}
+ );
+ return 1 unless $c->model('Provisioning')->call_prov($c, 'voip', 'get_subscriber_preferences',
+ { username => $c->session->{user}{username},
+ domain => $c->session->{user}{domain},
+ },
+ \$c->session->{user}{preferences}
+ );
+
+ if(defined $preferences and ref $preferences eq 'HASH') {
+ for(keys %$preferences) {
+ $c->session->{user}{reminder}{$_} = $$preferences{$_};
+ }
+ } else {
+ unless($c->model('Provisioning')->call_prov($c, 'voip', 'get_subscriber_reminder',
+ { username => $c->session->{user}{username},
+ domain => $c->session->{user}{domain},
+ },
+ \$c->session->{user}{reminder}
+ )) {
+ return 1;
+ }
+ }
+
+ $c->stash->{subscriber} = $c->session->{user};
+
+ $c->stash->{subscriber}{active_number} = '0'. $c->session->{user}{data}{ac} .' '. $c->session->{user}{data}{sn};
+ if($c->session->{user}{extension}) {
+ my $ext = $c->session->{user}{preferences}{extension};
+ $c->stash->{subscriber}{active_number} =~ s/$ext$/ - $ext/;
+ }
+
+}
+
+sub save : Local {
+ my ( $self, $c ) = @_;
+ my (%preferences, %messages);
+
+ $preferences{time} = $c->request->params->{time};
+ if(defined $preferences{time} and $preferences{time} !~ /^\d\d?:\d\d?$/) {
+ $messages{time} = 'Client.Syntax.MalformedReminderTime';
+ }
+ $preferences{recur} = $c->request->params->{recur} || 'never';
+
+ unless(keys %messages) {
+ if($c->model('Provisioning')->call_prov($c, 'voip', 'set_subscriber_reminder',
+ { username => $c->session->{user}{username},
+ domain => $c->session->{user}{domain},
+ data => \%preferences
+ },
+ undef
+ ))
+ {
+ $messages{topmsg} = 'Server.Voip.SavedSettings';
+ $c->session->{messages} = \%messages;
+ $c->response->redirect('/reminder');
+ return;
+ }
+ } else {
+ $messages{toperr} = 'Client.Voip.InputErrorFound';
+ }
+
+ $c->session->{messages} = \%messages;
+ $self->index($c, \%preferences);
+}
+
+
+=head1 BUGS AND LIMITATIONS
+
+=over
+
+=item none.
+
+=back
+
+=head1 SEE ALSO
+
+Provisioning model, Catalyst
+
+=head1 AUTHORS
+
+Daniel Tiefnig
+
+=head1 COPYRIGHT
+
+The reminder controller is Copyright (c) 2010 Sipwise GmbH,
+Austria. All rights reserved.
+
+=cut
+
+# over and out
+1;
diff --git a/root/css/sipwise.css b/root/css/sipwise.css
index 21c20ed..114691f 100644
--- a/root/css/sipwise.css
+++ b/root/css/sipwise.css
@@ -654,6 +654,37 @@
border: 1px solid #8D9FAA;
}
+/* text fields for reminder config */
+#reminder input,
+#reminder textarea,
+#reminder select {
+ margin: 3px 0 0px 0;
+ border: 1px solid #8D9FAA;
+}
+
+#reminder .input5 {
+ padding-left: 3px;
+ padding-right: 0px;
+ margin-top: -1px;
+ width: 50px; /* falsch für ie */
+ voice-family: "\"}\"";
+ voice-family:inherit;
+ width: 45px; /* richtig */
+}
+
+#reminder p {
+ margin-top: 8px;
+}
+
+#reminder .recur {
+ margin-left: 100px;
+}
+
+#reminder .lleft {
+ float: left;
+ width: 100px !important;
+}
+
/* add to cart link next to product images */
#main .produktwahlshop .produktwahl span.add_to_cart {
float: left;
diff --git a/root/grafik/reminder_off.gif b/root/grafik/reminder_off.gif
new file mode 100644
index 0000000000000000000000000000000000000000..de2036814ef10854d3706f8f6d212de815dcc736
GIT binary patch
literal 744
zcmcK1>q}E{9LMn^$|^10)Z8-5OSfr~MrlTrE2Cziq6`y;%uzikda$0y3g=3aSW^fg
z6vGYlfmuRE1#Ro%!bP^JZOfUL9i4jI+0Jd}va_w9^f&b8_5J(<-^;a^s!pqmprg=)
z3bJ~FRu5|P1Z`lwL7Nx->_xxKg}(Yi6TXmR0sFp){a6Ci0S|w@&$h4InbVLCqsTAKq8Bq
z^wMTzDM&8^DD6jS7-jq+8V=DbA!aqq1j5YP7B+w}0gPS4*maEAz*z+65Q5z#xFE@)
zBp0H9Xqbv(kto3cJjw7B!$(*kMsqyP#TbrfqA@la<9Hw*1!8eN7LNh(ex7vWp^QKDmrEl76
znndLa3=io)Y%dwp7~Lz5PQy8=7HhLL3l3$EYM5CyTrJHNOty8F)e4j@#eTKEF}dO1
z`8#K=FYq+O^=AV^zNX}o9i^2CDy$!tPnRh!w2jGNq)J+!^5ppyDdK)xuQ^iZRJW(3
z77B`Q-?}>>OM<@m%Sn#PNsh}(j><}o%TAHaQIpMAmd{t0
z&smtyXrj|>qt$Sx)^VrSc&pfkwA_@v;FrGPnZV+X#OR#CYMZ#p#g6>5#_h
zk;dtt!{d_2>66Fll*j6m$mx{G>XpdqmdWau$?BKM>zK;wrN`x&%Il}d<(tdvoXqQ;
z%-XF2_}=dL
z{`~#^{r>*`{{H^{|Nj5~|Ns8~|NsC0|NsC0|NsC0|NsC0|NsC0EC2ui03rY@000O6
zfO&$0goSl^bzVg^EHp@Hg^`klcY;D693CGY8!ly&poV!rnj)qmm_4DZf?Fl0upc6<
zp>;;Gu%;j(w4iS{xVauPy^?imCc&^9N5zt370RX`7+ubhR~Na{GHus|PZ`@H9zb;8
zghU(TBU0#uIUM6FWAB469@`%__JbPIA~-PA;?8sE)F;l^`o*bRt72r
z^DL1Ut3;ZNKJvxV5$Di5Jb7$L``{#Fo);i;oxqaOO^a
zm#NvicqQ2Z!-IkZ3q#nrgo6SB0RjUKKQKdZ&V<7S4jVY!fnXB?lMibq(10KW0FgHn
r2;hKV0@0EKs36DyGwKCr2=0)K*}wn=Oft%Wap1530ui)a3j_c=nUm8S
literal 0
HcmV?d00001
diff --git a/root/layout/header b/root/layout/header
index d022a39..52c1c4e 100644
--- a/root/layout/header
+++ b/root/layout/header
@@ -34,6 +34,9 @@
[% IF Catalyst.config.main_menu.callblock %]
Rufnummernsperre
[% END %]
+ [% IF Catalyst.config.main_menu.reminder %]
+ Weckruf
+ [% END %]
[% IF Catalyst.config.main_menu.device && Catalyst.session.user.admin %]
Endgeräte
[% END %]
diff --git a/root/tt/desktop.tt b/root/tt/desktop.tt
index 94029d9..f6a471b 100644
--- a/root/tt/desktop.tt
+++ b/root/tt/desktop.tt
@@ -138,7 +138,25 @@
[% END %]
- Einstellungen ändern
+ Einstellungen ansehen
+
+
+ [% END %]
+
+ [% IF Catalyst.config.main_menu.reminder %]
+ Weckruf
+
+
+ [% IF subscriber.reminder.time %]
+
+ Weckruf aktiv
+ [% ELSE %]
+
+ Weckruf deaktiviert
+ [% END %]
+
+
+ Einstellungen ansehen
[% END %]
diff --git a/root/tt/reminder.tt b/root/tt/reminder.tt
new file mode 100644
index 0000000..88727ec
--- /dev/null
+++ b/root/tt/reminder.tt
@@ -0,0 +1,81 @@
+[% META title = 'reminder' %]
+
+
+

+
+ Stellen Sie Ihren persönlichen Wecker.
+
+
+
+
+
[% messages.topmsg %]
+
+
+
[% messages.toperr %]
+
[% messages.prov_error %]
+
+
+
+
Weckruf
+ Einstellungen für [% subscriber.active_number %]
+
+
+
+
+
+
+
+ [% IF subscriber.reminder.time %]
+
+ Der Weckruf ist aktiv!
+ [% ELSE %]
+
+ Der Weckruf ist deaktiviert!
+ [% END %]
+
+
+
+
+
+
+