A bit more work in progress on roles.
authorNik Okuntseff <support@anuko.com>
Thu, 22 Feb 2018 19:23:07 +0000 (19:23 +0000)
committerNik Okuntseff <support@anuko.com>
Thu, 22 Feb 2018 19:23:07 +0000 (19:23 +0000)
33 files changed:
WEB-INF/lib/ttTeamHelper.class.php
WEB-INF/resources/ca.lang.php
WEB-INF/resources/cs.lang.php
WEB-INF/resources/da.lang.php
WEB-INF/resources/de.lang.php
WEB-INF/resources/en.lang.php
WEB-INF/resources/es.lang.php
WEB-INF/resources/et.lang.php
WEB-INF/resources/fa.lang.php
WEB-INF/resources/fi.lang.php
WEB-INF/resources/fr.lang.php
WEB-INF/resources/he.lang.php
WEB-INF/resources/hu.lang.php
WEB-INF/resources/it.lang.php
WEB-INF/resources/ja.lang.php
WEB-INF/resources/ko.lang.php
WEB-INF/resources/nl.lang.php
WEB-INF/resources/no.lang.php
WEB-INF/resources/pl.lang.php
WEB-INF/resources/pt-br.lang.php
WEB-INF/resources/pt.lang.php
WEB-INF/resources/ro.lang.php
WEB-INF/resources/ru.lang.php
WEB-INF/resources/sk.lang.php
WEB-INF/resources/sl.lang.php
WEB-INF/resources/sr.lang.php
WEB-INF/resources/sv.lang.php
WEB-INF/resources/tr.lang.php
WEB-INF/resources/zh-cn.lang.php
WEB-INF/resources/zh-tw.lang.php
WEB-INF/templates/footer.tpl
WEB-INF/templates/roles.tpl [new file with mode: 0644]
roles.php [new file with mode: 0644]

index 3b01415..2ae7592 100644 (file)
@@ -263,6 +263,41 @@ class ttTeamHelper {
     return false;
   }
 
+  // getActiveRoles - returns an array of active roles for team.
+  static function getActiveRoles($team_id)
+  {
+    $result = array();
+    $mdb2 = getConnection();
+
+    $sql = "select id, name, rights from tt_roles where team_id = $team_id and status = 1 order by upper(name)";
+    $res = $mdb2->query($sql);
+    $result = array();
+    if (!is_a($res, 'PEAR_Error')) {
+      while ($val = $res->fetchRow()) {
+        $result[] = $val;
+      }
+    }
+    return $result;
+  }
+
+  // getInactiveRoles - returns an array of inactive roles for team.
+  static function getInactiveRoles($team_id)
+  {
+    $result = array();
+    $mdb2 = getConnection();
+
+    $sql = "select id, name, rights from tt_roles
+      where team_id = $team_id and status = 0 order by upper(name)";
+    $res = $mdb2->query($sql);
+    $result = array();
+    if (!is_a($res, 'PEAR_Error')) {
+      while ($val = $res->fetchRow()) {
+        $result[] = $val;
+      }
+    }
+    return $result;
+  }
+
   // The getActiveClients returns an array of active clients for team.
   static function getActiveClients($team_id, $all_fields = false)
   {
index 7dcf0e0..88d59a5 100644 (file)
@@ -453,6 +453,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 // TODO: translate the following.
index 4e8d686..7cd07f5 100644 (file)
@@ -466,6 +466,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 // TODO: translate the following.
index 5514900..5994d7f 100644 (file)
@@ -403,6 +403,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 'form.clients.active_clients' => 'Aktive Klienter',
index 84d3a53..872a543 100644 (file)
@@ -401,6 +401,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 'form.clients.active_clients' => 'Aktive Kunden',
index 2315da1..21a3fdf 100644 (file)
@@ -396,6 +396,7 @@ $i18n_key_words = array(
  // Roles form. See example at https://timetracker.anuko.com/roles.php
 'form.roles.active_roles' => 'Active Roles',
 'form.roles.inactive_roles' => 'Inactive Roles',
+'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 'form.clients.active_clients' => 'Active Clients',
index b7085dc..6c9d502 100644 (file)
@@ -464,6 +464,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 // TODO: translate the following.
index f16823c..2011aae 100644 (file)
@@ -463,6 +463,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 // TODO: translate the following.
index b68518e..40536a4 100644 (file)
@@ -430,6 +430,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 'form.clients.active_clients' => 'مشتری های فعال',
index c88cd45..58a3340 100644 (file)
@@ -410,6 +410,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 'form.clients.active_clients' => 'Aktiiviset asiakkaat',
index 3608748..027fec2 100644 (file)
@@ -400,6 +400,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 'form.clients.active_clients' => 'Clients actifs',
index 2cd8b80..3341f03 100644 (file)
@@ -436,6 +436,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 'form.clients.active_clients' => 'לקוחות פעילים',
index b830ba7..f17db39 100644 (file)
@@ -457,6 +457,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 // TODO: translate the following.
index dcd1b37..3b04c35 100644 (file)
@@ -403,6 +403,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 'form.clients.active_clients' => 'Clienti attivi',
index aad7ff3..956fd56 100644 (file)
@@ -454,6 +454,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 // TODO: translate the following.
index cd39cb1..bfa326b 100644 (file)
@@ -456,6 +456,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 // TODO: translate the following.
index b089054..8149366 100644 (file)
@@ -399,6 +399,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 'form.clients.active_clients' => 'Actieve klanten',
index 3778d69..79d24e0 100644 (file)
@@ -452,6 +452,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 // TODO: translate the following.
index 9c9c297..39f37e3 100644 (file)
@@ -413,6 +413,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.phpp
 'form.clients.active_clients' => 'Aktywni klienci',
index b8e4a91..2a17b26 100644 (file)
@@ -408,6 +408,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 'form.clients.active_clients' => 'Clientes ativos',
index 2aa049f..cab935d 100644 (file)
@@ -441,6 +441,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 // TODO: translate the following.
index ee1673c..3a4d70a 100644 (file)
@@ -460,6 +460,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 // TODO: translate the following.
index aee9df7..42e0a8b 100644 (file)
@@ -394,6 +394,7 @@ $i18n_key_words = array(
 // Roles form. See example at https://timetracker.anuko.com/roles.php
 'form.roles.active_roles' => 'Активные роли',
 'form.roles.inactive_roles' => 'Неактивные роли',
+'form.roles.rights' => 'Права',
 
 // Deleting Client form. See example at https://timetracker.anuko.com/client_delete.php
 'form.client.client_to_delete' => 'Клиент для удаления',
index df06ddf..67b2bea 100644 (file)
@@ -428,6 +428,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 'form.clients.active_clients' => 'Aktívny klienti',
index ed72815..08b3d29 100644 (file)
@@ -437,6 +437,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 // TODO: translate the following.
index 14df209..783093e 100644 (file)
@@ -411,6 +411,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Forma klijenata. Pogledajte primer na https://timetracker.anuko.com/clients.php
 'form.clients.active_clients' => 'Aktivni klijent',
index 6529f6d..7500d44 100644 (file)
@@ -408,6 +408,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 'form.clients.active_clients' => 'Aktiva kunder',
index 37c2254..ab9251b 100644 (file)
@@ -471,6 +471,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 // TODO: translate the following.
index a0ef26b..6393163 100644 (file)
@@ -441,6 +441,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 // TODO: translate the following.
index 9e3944f..2fd2406 100644 (file)
@@ -450,6 +450,7 @@ $i18n_key_words = array(
 // TODO: translate the following.
 // 'form.roles.active_roles' => 'Active Roles',
 // 'form.roles.inactive_roles' => 'Inactive Roles',
+// 'form.roles.rights' => 'Rights',
 
 // Clients form. See example at https://timetracker.anuko.com/clients.php
 // TODO: translate the following.
index 069beb9..1acdad9 100644 (file)
@@ -12,7 +12,7 @@
       <br>
       <table cellspacing="0" cellpadding="4" width="100%" border="0">
         <tr>
-          <td align="center">&nbsp;Anuko Time Tracker 1.17.29.4013 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+          <td align="center">&nbsp;Anuko Time Tracker 1.17.29.4014 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
             <a href="https://www.anuko.com/lp/tt_4.htm" target="_blank">{$i18n.footer.credits}</a> |
             <a href="https://www.anuko.com/lp/tt_5.htm" target="_blank">{$i18n.footer.license}</a> |
             <a href="https://www.anuko.com/lp/tt_7.htm" target="_blank">{$i18n.footer.improve}</a>
diff --git a/WEB-INF/templates/roles.tpl b/WEB-INF/templates/roles.tpl
new file mode 100644 (file)
index 0000000..d703fef
--- /dev/null
@@ -0,0 +1,67 @@
+<script>
+  function chLocation(newLocation) { document.location = newLocation; }
+</script>
+
+<table cellspacing="0" cellpadding="7" border="0" width="720">
+  <tr>
+    <td valign="top">
+      <table cellspacing="1" cellpadding="3" border="0" width="100%">
+  {if $inactive_roles}
+        <tr><td class="sectionHeaderNoBorder">{$i18n.form.roles.active_roles}</td></tr>
+  {/if}
+        <tr>
+          <td width="35%" class="tableHeader">{$i18n.label.thing_name}</td>
+          <td width="35%" class="tableHeader">{$i18n.form.roles.rights}</td>
+          <td class="tableHeader">{$i18n.label.edit}</td>
+          <td class="tableHeader">{$i18n.label.delete}</td>
+        </tr>
+  {if $active_roles}
+    {foreach $active_roles as $role}
+        <tr bgcolor="{cycle values="#f5f5f5,#ffffff"}">
+          <td>{$role.name|escape}</td>
+          <td>{$role.rights|escape}</td>
+          <td><a href="task_edit.php?id={$task.id}">{$i18n.label.edit}</a></td>
+          <td><a href="task_delete.php?id={$task.id}">{$i18n.label.delete}</a></td>
+        </tr>
+    {/foreach}
+  {/if}
+      </table>
+
+      <table width="100%">
+        <tr>
+          <td align="center"><br>
+            <form><input type="button" onclick="chLocation('role_add.php');" value="{$i18n.button.add_role}"></form>
+          </td>
+        </tr>
+      </table>
+
+  {if $inactive_roles}
+      <table cellspacing="1" cellpadding="3" border="0" width="100%">
+        <tr><td class="sectionHeaderNoBorder">{$i18n.form.roles.inactive_roles}</td></tr>
+        <tr>
+          <td width="35%" class="tableHeader">{$i18n.label.thing_name}</td>
+          <td width="35%" class="tableHeader">{$i18n.form.roles.rights}</td>
+          <td class="tableHeader">{$i18n.label.edit}</td>
+          <td class="tableHeader">{$i18n.label.delete}</td>
+        </tr>
+    {foreach $inactive_roles as $role}
+        <tr bgcolor="{cycle values="#f5f5f5,#ffffff"}">
+          <td>{$role.name|escape}</td>
+          <td>{$role.rights|escape}</td>
+          <td><a href="task_edit.php?id={$task.id}">{$i18n.label.edit}</a></td>
+          <td><a href="task_delete.php?id={$task.id}">{$i18n.label.delete}</a></td>
+        </tr>
+    {/foreach}
+      </table>
+
+      <table width="100%">
+        <tr>
+          <td align="center"><br>
+            <form><input type="button" onclick="chLocation('role_add.php');" value="{$i18n.button.add_role}"></form>
+          </td>
+        </tr>
+      </table>
+  {/if}
+    </td>
+  </tr>
+</table>
diff --git a/roles.php b/roles.php
new file mode 100644 (file)
index 0000000..4425581
--- /dev/null
+++ b/roles.php
@@ -0,0 +1,43 @@
+<?php
+// +----------------------------------------------------------------------+
+// | Anuko Time Tracker
+// +----------------------------------------------------------------------+
+// | Copyright (c) Anuko International Ltd. (https://www.anuko.com)
+// +----------------------------------------------------------------------+
+// | LIBERAL FREEWARE LICENSE: This source code document may be used
+// | by anyone for any purpose, and freely redistributed alone or in
+// | combination with other software, provided that the license is obeyed.
+// |
+// | There are only two ways to violate the license:
+// |
+// | 1. To redistribute this code in source form, with the copyright
+// |    notice or license removed or altered. (Distributing in compiled
+// |    forms without embedded copyright notices is permitted).
+// |
+// | 2. To redistribute modified versions of this code in *any* form
+// |    that bears insufficient indications that the modifications are
+// |    not the work of the original author(s).
+// |
+// | This license applies to this document only, not any other software
+// | that it may be combined with.
+// |
+// +----------------------------------------------------------------------+
+// | Contributors:
+// | https://www.anuko.com/time_tracker/credits.htm
+// +----------------------------------------------------------------------+
+
+require_once('initialize.php');
+import('form.Form');
+import('ttTeamHelper');
+
+// Access check.
+if (!ttAccessCheck(right_manage_team)) {
+  header('Location: access_denied.php');
+  exit();
+}
+
+$smarty->assign('active_roles', ttTeamHelper::getActiveRoles($user->team_id));
+$smarty->assign('inactive_roles', ttTeamHelper::getInactiveRoles($user->team_id));
+$smarty->assign('title', $i18n->getKey('label.roles'));
+$smarty->assign('content_page_name', 'roles.tpl');
+$smarty->display('index.tpl');