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 %]

    +
    +
    + +
    + +
    +

    Wann

    +

    + + + (hh:mm) + [% IF messages.time %]

    [% messages.time %]

    [% END %] +

    +

    + +

    + +
    + +
    + +
    +

    +

    + +

    + + +

    +
    + +
    +

    + + +

    +
    + +
    + +
    +
    + +

    + [% IF subscriber.reminder.time %] + reminder + Der Weckruf ist aktiv! + [% ELSE %] + reminder + Der Weckruf ist deaktiviert! + [% END %] +

    + +
    + +
    + +