Benutzerkonfiguration um Einstellungen zur Aufgabenliste erweitert.
authorMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 16 Jan 2008 16:26:02 +0000 (16:26 +0000)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Wed, 16 Jan 2008 16:26:02 +0000 (16:26 +0000)
SL/TODO.pm [new file with mode: 0644]
bin/mozilla/am.pl
bin/mozilla/login.pl
bin/mozilla/todo.pl
locale/de/all
menu.ini
sql/Pg-upgrade2/todo_user_config.sql [new file with mode: 0644]
templates/webpages/am/config_de.html
templates/webpages/am/config_master.html

diff --git a/SL/TODO.pm b/SL/TODO.pm
new file mode 100644 (file)
index 0000000..af881b4
--- /dev/null
@@ -0,0 +1,100 @@
+# TODO list helper functions
+
+package TODO;
+
+use SL::DBUtils;
+
+sub get_user_config {
+  $main::lxdebug->enter_sub();
+
+  my $self     = shift;
+  my %params   = @_;
+
+  my $myconfig = \%main::myconfig;
+  my $form     = $main::form;
+
+  my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
+
+  $form->error('Need params: id or login') if (!$params{id} && !$params{login});
+
+  if ($params{login}) {
+    ($params{id}) = selectfirst_array_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $params{login});
+
+    if (!$params{id}) {
+      $main::lxdebug->leave_sub();
+      return ();
+    }
+
+  } else {
+    ($params{login}) = selectfirst_array_query($form, $dbh, qq|SELECT login FROM employee WHERE id = ?|, conv_i($params{id}));
+  }
+
+  my $cfg = selectfirst_hashref_query($form, $dbh, qq|SELECT * FROM todo_user_config WHERE employee_id = ?|, conv_i($params{id}));
+
+  if (!$cfg) {
+    # Standard configuration: enable all
+
+    $cfg = { map { $_ => 1 } qw(show_after_login show_follow_ups show_follow_ups_login show_overdue_sales_quotations show_overdue_sales_quotations_login) };
+  }
+
+  if (! $main::auth->check_right($params{login}, 'sales_quotation_edit')) {
+    map { delete $cfg->{$_} } qw(show_overdue_sales_quotations show_overdue_sales_quotations_login);
+  }
+
+  $main::lxdebug->leave_sub();
+
+  return %{ $cfg };
+}
+
+sub save_user_config {
+  $main::lxdebug->enter_sub();
+
+  my $self     = shift;
+  my %params   = @_;
+
+  Common::check_params(\%params, qw(login));
+
+  my $myconfig = \%main::myconfig;
+  my $form     = $main::form;
+
+  my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
+
+  my $query    = qq|SELECT id FROM employee WHERE login = ?|;
+
+  my ($id)     = selectfirst_array_query($form, $dbh, $query, $params{login});
+
+  if (!$id) {
+    $main::lxdebug->leave_sub();
+    return;
+  }
+
+  $query =
+    qq|SELECT show_after_login
+       FROM todo_user_config
+       WHERE employee_id = ?|;
+
+  if (! selectfirst_hashref_query($form, $dbh, $query, $id)) {
+    do_query($form, $dbh, qq|INSERT INTO todo_user_config (employee_id) VALUES (?)|, $id);
+  }
+
+  $query =
+    qq|UPDATE todo_user_config SET
+         show_after_login = ?,
+         show_follow_ups = ?,
+         show_follow_ups_login = ?,
+         show_overdue_sales_quotations = ?,
+         show_overdue_sales_quotations_login = ?
+
+       WHERE employee_id = ?|;
+
+  my @values = map { $params{$_} ? 't' : 'f' } qw(show_after_login show_follow_ups show_follow_ups_login show_overdue_sales_quotations show_overdue_sales_quotations_login);
+  push @values, $id;
+
+  do_query($form, $dbh, $query, @values);
+
+  $dbh->commit();
+
+  $main::lxdebug->leave_sub();
+}
+
+1;
index 51f8f69..9f7d8f5 100644 (file)
@@ -38,6 +38,7 @@ use SL::Form;
 use SL::User;
 use SL::USTVA;
 use SL::Iconv;
+use SL::TODO;
 use CGI::Ajax;
 use CGI;
 
@@ -2491,6 +2492,7 @@ sub config {
   $myconfig{show_form_details}              = 1 unless (defined($myconfig{show_form_details}));
   $form->{"menustyle_$myconfig{menustyle}"} = 1;
   $form->{CAN_CHANGE_PASSWORD}              = $auth->can_change_password();
+  $form->{todo_cfg}                         = { TODO->get_user_config('login' => $form->{login}) };
 
   $form->{title}                            = $locale->text('Edit Preferences for #1', $form->{login});
 
@@ -2505,6 +2507,8 @@ sub save_preferences {
 
   $form->{stylesheet} = $form->{usestylesheet};
 
+  TODO->save_user_config('login' => $form->{login}, %{ $form->{todo_cfg} || { } });
+
   $form->redirect($locale->text('Preferences saved!')) if (AM->save_preferences(\%myconfig, \%$form, $webdav));
   $form->error($locale->text('Cannot save preferences!'));
 
index 309b3d1..7a4df5c 100644 (file)
@@ -164,7 +164,7 @@ sub company_logo {
 
   $locale             =  new Locale $myconfig{countrycode}, "login" if ($language ne $myconfig{countrycode});
 
-  $form->{todo_list}  = create_todo_list();
+  $form->{todo_list}  =  create_todo_list('login_screen' => 1) if (!$form->{no_todo_list});
 
   $form->{stylesheet} =  $myconfig{stylesheet};
   $form->{title}      =  $locale->text('About');
index 0f8cf3d..8f09fee 100644 (file)
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 #######################################################################
 
+use SL::TODO;
+
 sub create_todo_list {
   $lxdebug->enter_sub();
 
+  my %params   = @_;
+  my $postfix  = '_login' if ($params{login_screen});
+
+  my %todo_cfg = TODO->get_user_config('login' => $form->{login});
+
+  if ($params{login_screen} && !$todo_cfg{show_after_login}) {
+    $lxdebug->leave_sub();
+    return '';
+  }
+
   my (@todo_items, $todo_list);
 
-  push @todo_items, todo_list_follow_ups();
-  push @todo_items, todo_list_overdue_sales_quotations();
+  push @todo_items, todo_list_follow_ups()               if ($todo_cfg{"show_follow_ups${postfix}"});
+  push @todo_items, todo_list_overdue_sales_quotations() if ($todo_cfg{"show_overdue_sales_quotations${postfix}"});
 
   @todo_items = grep { $_ } @todo_items;
   $todo_list  = join("", @todo_items);
index cb8c6be..ad5e85d 100644 (file)
@@ -20,7 +20,9 @@ $self->{texts} = {
   '&lt;%total%&gt; -- Amount payable' => '&lt;%total%&gt; -- Noch zu bezahlender Betrag',
   '&lt;%total_wo_skonto%&gt; -- Amount payable less discount' => '&lt;%total_wo_skonto%&gt; -- Noch zu bezahlender Betrag abz&uuml;glich Skonto',
   '*/'                          => '*/',
+  '...after loggin in'          => '...nach dem Anmelden',
   '...done'                     => '...fertig',
+  '...on the TODO list'         => '...auf der Aufgabenliste',
   '1. Quarter'                  => '1. Quartal',
   '2. Quarter'                  => '2. Quartal',
   '3. Quarter'                  => '3. Quartal',
@@ -291,6 +293,7 @@ aktualisieren wollen?',
   'Company'                     => 'Firma',
   'Company Name'                => 'Firmenname',
   'Compare to'                  => 'Gegenüberstellen zu',
+  'Configuration of individual TODO items' => 'Konfiguration f&uuml;r die einzelnen Aufgabenlistenpunkte',
   'Confirm!'                    => 'Bestätigen Sie!',
   'Confirmation'                => 'Auftragsbestätigung',
   'Contact'                     => 'Kontakt',
@@ -1165,7 +1168,10 @@ aktualisieren wollen?',
   'Show TODO list'              => 'Aufgabenliste anzeigen',
   'Show by default'             => 'Standardm&auml;&szlig;ig anzeigen',
   'Show details'                => 'Details anzeigen',
+  'Show follow ups...'          => 'Zeige Wiedervorlagen...',
   'Show old dunnings'           => 'Alte Mahnungen anzeigen',
+  'Show overdue sales quotations...' => 'Zeige &uuml;berf&auml;llige Angebote...',
+  'Show your TODO list after loggin in' => 'Aufgabenliste nach dem Anmelden anzeigen',
   'Signature'                   => 'Unterschrift',
   'Skip'                        => 'Überspringen',
   'Skonto'                      => 'Skonto',
@@ -1197,6 +1203,7 @@ aktualisieren wollen?',
   'Superuser name'              => 'Datenbankadministrator',
   'System'                      => 'System',
   'TODO list'                   => 'Aufgabenliste',
+  'TODO list options'           => 'Aufgabenlistenoptionen',
   'TOP100'                      => 'Top 100',
   'Tax'                         => 'Steuer',
   'Tax Consultant'              => 'Steuerberater/-in',
index 186216d..1522221 100644 (file)
--- a/menu.ini
+++ b/menu.ini
@@ -729,6 +729,7 @@ target=_top
 [Programm--Version]
 module=login.pl
 action=company_logo
+no_todo_list=1
 
 
 #################################
diff --git a/sql/Pg-upgrade2/todo_user_config.sql b/sql/Pg-upgrade2/todo_user_config.sql
new file mode 100644 (file)
index 0000000..add7c02
--- /dev/null
@@ -0,0 +1,14 @@
+-- @tag: todo_config
+-- @description: Benutzerkonfiguration zur Aufgabenliste
+-- @depends: release_2_4_3
+
+CREATE TABLE todo_user_config (
+       employee_id                         integer NOT NULL,
+       show_after_login                    boolean DEFAULT TRUE,
+       show_follow_ups                     boolean DEFAULT TRUE,
+       show_follow_ups_login               boolean DEFAULT TRUE,
+       show_overdue_sales_quotations       boolean DEFAULT TRUE,
+       show_overdue_sales_quotations_login boolean DEFAULT TRUE,
+
+       FOREIGN KEY (employee_id) REFERENCES employee (id)
+);
index 0276947..167f0b9 100644 (file)
@@ -8,6 +8,7 @@
    <li class="selected"><a href="#" rel="page_personal_settings">Pers&ouml;nliche Einstellungen</a></li>
    <li><a href="#" rel="page_display_options">Anzeigeoptionen</a></li>
    <li><a href="#" rel="page_print_options">Druckoptionen</a></li>
+   <li><a href="#" rel="page_todo_list_options">Aufgabenlistenoptionen</a></li>
   </ul>
 
   <input type="hidden" name="type" value="preferences">
 
     <br style="clear: left" />
    </div>
+
+   <div id="page_todo_list_options" class="tabcontent">
+
+    <table>
+     <tr>
+      <th align="right">Aufgabenliste nach dem Anmelden anzeigen</th>
+      <td colspan="2">
+       <input type="radio" name="todo_cfg.show_after_login" id="todo_cfg_show_after_login_1" value="1"[% IF todo_cfg.show_after_login %] checked[% END %]>
+       <label for="todo_cfg_show_after_login_1">Ja</label>
+       <input type="radio" name="todo_cfg.show_after_login" id="todo_cfg_show_after_login_0" value="0"[% IF !todo_cfg.show_after_login %] checked[% END %]>
+       <label for="todo_cfg_show_after_login_0">Nein</label>
+      </td>
+     </tr>
+
+     <tr class="listheading">
+      <th colspan="3">Konfiguration f&uuml;r die einzelnen Aufgabenlistenpunkte</th>
+     </tr>
+
+     <tr>
+      <th align="right">Zeige Wiedervorlagen...</th>
+      <td>
+       <input type="checkbox" name="todo_cfg.show_follow_ups" id="todo_cfg_show_follow_ups" value="1"[% IF todo_cfg.show_follow_ups %] checked[% END %]>
+       <label for="todo_cfg_show_follow_ups">...auf der Aufgabenliste</label>
+      </td>
+      <td>
+       <input type="checkbox" name="todo_cfg.show_follow_ups_login" id="todo_cfg_show_follow_ups_login" value="1"[% IF todo_cfg.show_follow_ups_login %] checked[% END %]>
+       <label for="todo_cfg_show_follow_ups_login">...nach dem Anmelden</label>
+      </td>
+     </tr>
+
+     [%- IF AUTH_RIGHTS_SALES_QUOTATION_EDIT %]
+     <tr>
+      <th align="right">Zeige &uuml;berf&auml;llige Angebote...</th>
+      <td>
+       <input type="checkbox" name="todo_cfg.show_overdue_sales_quotations" id="todo_cfg_show_overdue_sales_quotations" value="1"[% IF todo_cfg.show_overdue_sales_quotations %] checked[% END %]>
+       <label for="todo_cfg_show_overdue_sales_quotations">...auf der Aufgabenliste</label>
+      </td>
+      <td>
+       <input type="checkbox" name="todo_cfg.show_overdue_sales_quotations_login" id="todo_cfg_show_overdue_sales_quotations_login" value="1"[% IF todo_cfg.show_overdue_sales_quotations_login %] checked[% END %]>
+       <label for="todo_cfg_show_overdue_sales_quotations_login">...nach dem Anmelden</label>
+      </td>
+     </tr>
+     [%- END %]
+    </table>
+
+    <br style="clear: left" />
+   </div>
   </div>
 
   <p><input type="submit" class="submit" name="action" value="Speichern"></p>
index 2bda248..7e0e9f3 100644 (file)
@@ -8,6 +8,7 @@
    <li class="selected"><a href="#" rel="page_personal_settings"><translate>Personal settings</translate></a></li>
    <li><a href="#" rel="page_display_options"><translate>Display options</translate></a></li>
    <li><a href="#" rel="page_print_options"><translate>Print options</translate></a></li>
+   <li><a href="#" rel="page_todo_list_options"><translate>TODO list options</translate></a></li>
   </ul>
 
   <input type="hidden" name="type" value="preferences">
 
     <br style="clear: left" />
    </div>
+
+   <div id="page_todo_list_options" class="tabcontent">
+
+    <table>
+     <tr>
+      <th align="right"><translate>Show your TODO list after loggin in</translate></th>
+      <td colspan="2">
+       <input type="radio" name="todo_cfg.show_after_login" id="todo_cfg_show_after_login_1" value="1"[% IF todo_cfg.show_after_login %] checked[% END %]>
+       <label for="todo_cfg_show_after_login_1"><translate>Yes</translate></label>
+       <input type="radio" name="todo_cfg.show_after_login" id="todo_cfg_show_after_login_0" value="0"[% IF !todo_cfg.show_after_login %] checked[% END %]>
+       <label for="todo_cfg_show_after_login_0"><translate>No</translate></label>
+      </td>
+     </tr>
+
+     <tr class="listheading">
+      <th colspan="3"><translate>Configuration of individual TODO items</translate></th>
+     </tr>
+
+     <tr>
+      <th align="right"><translate>Show follow ups...</translate></th>
+      <td>
+       <input type="checkbox" name="todo_cfg.show_follow_ups" id="todo_cfg_show_follow_ups" value="1"[% IF todo_cfg.show_follow_ups %] checked[% END %]>
+       <label for="todo_cfg_show_follow_ups"><translate>...on the TODO list</translate></label>
+      </td>
+      <td>
+       <input type="checkbox" name="todo_cfg.show_follow_ups_login" id="todo_cfg_show_follow_ups_login" value="1"[% IF todo_cfg.show_follow_ups_login %] checked[% END %]>
+       <label for="todo_cfg_show_follow_ups_login"><translate>...after loggin in</translate></label>
+      </td>
+     </tr>
+
+     [%- IF AUTH_RIGHTS_SALES_QUOTATION_EDIT %]
+     <tr>
+      <th align="right"><translate>Show overdue sales quotations...</translate></th>
+      <td>
+       <input type="checkbox" name="todo_cfg.show_overdue_sales_quotations" id="todo_cfg_show_overdue_sales_quotations" value="1"[% IF todo_cfg.show_overdue_sales_quotations %] checked[% END %]>
+       <label for="todo_cfg_show_overdue_sales_quotations"><translate>...on the TODO list</translate></label>
+      </td>
+      <td>
+       <input type="checkbox" name="todo_cfg.show_overdue_sales_quotations_login" id="todo_cfg_show_overdue_sales_quotations_login" value="1"[% IF todo_cfg.show_overdue_sales_quotations_login %] checked[% END %]>
+       <label for="todo_cfg_show_overdue_sales_quotations_login"><translate>...after loggin in</translate></label>
+      </td>
+     </tr>
+     [%- END %]
+    </table>
+
+    <br style="clear: left" />
+   </div>
   </div>
 
   <p><input type="submit" class="submit" name="action" value="<translate>Save</translate>"></p>