'menu.help' => 'Help',
'menu.create_team' => 'Create Team',
'menu.profile' => 'Profile',
+'menu.group' => 'Group',
'menu.time' => 'Time',
'menu.expenses' => 'Expenses',
'menu.reports' => 'Reports',
'title.import' => 'Importing Team Data',
'title.options' => 'Options',
'title.profile' => 'Profile',
+'title.group' => 'Group Settings',
'title.cf_custom_fields' => 'Custom Fields',
'title.cf_add_custom_field' => 'Adding Custom Field',
'title.cf_edit_custom_field' => 'Editing Custom Field',
<br>
<table cellspacing="0" cellpadding="4" width="100%" border="0">
<tr>
- <td align="center"> Anuko Time Tracker 1.17.79.4192 | Copyright © <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+ <td align="center"> Anuko Time Tracker 1.17.80.4193 | Copyright © <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>
--- /dev/null
+<script>
+// handleTaskRequiredCheckbox - controls visibility of the Task Required checkbox.
+function handleTaskRequiredCheckbox() {
+ var taskRequiredCheckbox = document.getElementById("task_required");
+ var taskRequiredLabel = document.getElementById("task_required_label");
+ var trackingModeDropdown = document.getElementById("tracking_mode");
+ if (trackingModeDropdown.value == 2) {
+ taskRequiredCheckbox.style.visibility = "visible";
+ taskRequiredLabel.style.visibility = "visible";
+ } else {
+ taskRequiredCheckbox.style.visibility = "hidden";
+ taskRequiredLabel.style.visibility = "hidden";
+ }
+}
+
+
+// handleControls - controls visibility of controls.
+function handlePluginCheckboxes() {
+ var clientsCheckbox = document.getElementById("clients");
+ var invoicesCheckbox = document.getElementById("invoices");
+ var requiredCheckbox = document.getElementById("client_required");
+ var requiredLabel = document.getElementById("client_required_label");
+ if (clientsCheckbox.checked) {
+ requiredCheckbox.style.visibility = "visible";
+ requiredLabel.style.visibility = "visible";
+ invoicesCheckbox.disabled = false;
+ } else {
+ requiredCheckbox.checked = false;
+ requiredCheckbox.style.visibility = "hidden";
+ requiredLabel.style.visibility = "hidden";
+ invoicesCheckbox.checked = false;
+ invoicesCheckbox.disabled = true;
+ }
+
+ var expensesCheckbox = document.getElementById("expenses");
+ var taxCheckbox = document.getElementById("tax_expenses");
+ var taxLabel = document.getElementById("tax_label");
+ if (expensesCheckbox.checked) {
+ taxCheckbox.style.visibility = "visible";
+ taxLabel.style.visibility = "visible";
+ } else {
+ taxCheckbox.checked = false;
+ taxCheckbox.style.visibility = "hidden";
+ taxLabel.style.visibility = "hidden";
+ }
+ var configureLabel = document.getElementById("expenses_config");
+ if (expensesCheckbox.checked) {
+ configureLabel.style.visibility = "visible";
+ } else {
+ configureLabel.style.visibility = "hidden";
+ }
+
+ var customFieldsCheckbox = document.getElementById("custom_fields");
+ configureLabel = document.getElementById("cf_config");
+ if (customFieldsCheckbox.checked) {
+ configureLabel.style.visibility = "visible";
+ } else {
+ configureLabel.style.visibility = "hidden";
+ }
+
+ var notificationsCheckbox = document.getElementById("notifications");
+ configureLabel = document.getElementById("notifications_config");
+ if (notificationsCheckbox.checked) {
+ configureLabel.style.visibility = "visible";
+ } else {
+ configureLabel.style.visibility = "hidden";
+ }
+
+ var lockingCheckbox = document.getElementById("locking");
+ configureLabel = document.getElementById("locking_config");
+ if (lockingCheckbox.checked) {
+ configureLabel.style.visibility = "visible";
+ } else {
+ configureLabel.style.visibility = "hidden";
+ }
+
+ var quotasCheckbox = document.getElementById("quotas");
+ configureLabel = document.getElementById("quotas_config");
+ if (quotasCheckbox.checked){
+ configureLabel.style.visibility = "visible";
+ } else {
+ configureLabel.style.visibility = "hidden";
+ }
+
+ var weekViewCheckbox = document.getElementById("week_view");
+ configureLabel = document.getElementById("week_view_config");
+ if (weekViewCheckbox.checked){
+ configureLabel.style.visibility = "visible";
+ } else {
+ configureLabel.style.visibility = "hidden";
+ }
+}
+</script>
+
+{$forms.groupForm.open}
+
+{if $user->canManageTeam()}
+{include file="datetime_format_preview.tpl"}
+{/if}
+
+<table cellspacing="4" cellpadding="7" border="0">
+ <tr>
+ <td>
+ <table cellspacing="1" cellpadding="2" border="0">
+{if $user->isManager() || ($user->canManageTeam() && !defined(MANAGER_ONLY_TEAM_SETTINGS))}
+ <tr>
+ <td align="right" nowrap>{$i18n.label.team_name}:</td>
+ <td>{$forms.groupForm.team_name.control}</td>
+ </tr>
+ <tr>
+ <td align="right">{$i18n.label.currency}:</td>
+ <td>{$forms.groupForm.currency.control}</td>
+ </tr>
+ {if $user->can('manage_roles')}
+ <tr>
+ <td align="right" nowrap>{$i18n.label.roles}:</td>
+ <td><a href="roles.php">{$i18n.label.configure}</a></td>
+ </tr>
+ {/if}
+ <tr>
+ <td align="right" nowrap>{$i18n.label.language}:</td>
+ <td>{$forms.groupForm.lang.control}</td>
+ </tr>
+ <tr>
+ <td align="right">{$i18n.label.decimal_mark}:</td>
+ <td>{$forms.groupForm.decimal_mark.control} <font id="decimal_preview" color="#777777"> </font></td>
+ <tr>
+ <td align="right" nowrap>{$i18n.label.date_format}:</td>
+ <td>{$forms.groupForm.date_format.control} <font id="date_format_preview" color="#777777"> </font></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$i18n.label.time_format}:</td>
+ <td>{$forms.groupForm.time_format.control} <font id="time_format_preview" color="#777777"> </font></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$i18n.label.week_start}:</td>
+ <td>{$forms.groupForm.start_week.control}</td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$i18n.form.profile.show_holidays}:</td>
+ <td>{$forms.groupForm.show_holidays.control} <a href="https://www.anuko.com/lp/tt_14.htm" target="_blank">{$i18n.label.what_is_it}</a></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$i18n.form.profile.tracking_mode}:</td>
+ <td>{$forms.groupForm.tracking_mode.control} {$forms.profileForm.task_required.control} <span id="task_required_label"><label for="task_required">{$i18n.label.required}</label></span></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$i18n.form.profile.record_type}:</td>
+ <td>{$forms.groupForm.record_type.control}</td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$i18n.form.profile.punch_mode}:</td>
+ <td>{$forms.groupForm.punch_mode.control} <a href="https://www.anuko.com/lp/tt_18.htm" target="_blank">{$i18n.label.what_is_it}</a></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$i18n.form.profile.allow_overlap}:</td>
+ <td>{$forms.groupForm.allow_overlap.control} <a href="https://www.anuko.com/lp/tt_16.htm" target="_blank">{$i18n.label.what_is_it}</a></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$i18n.form.profile.future_entries}:</td>
+ <td>{$forms.groupForm.future_entries.control} <a href="https://www.anuko.com/lp/tt_17.htm" target="_blank">{$i18n.label.what_is_it}</a></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$i18n.form.profile.uncompleted_indicators}:</td>
+ <td>{$forms.groupForm.uncompleted_indicators.control} <a href="https://www.anuko.com/lp/tt_15.htm" target="_blank">{$i18n.label.what_is_it}</a></td>
+ </tr>
+{if $user->isManager()}
+ <tr>
+ <td align="right" nowrap>{$i18n.label.bcc}:</td>
+ <td>{$forms.groupForm.bcc_email.control} <a href="https://www.anuko.com/lp/tt_10.htm" target="_blank">{$i18n.label.what_is_it}</a></td>
+ </tr>
+{/if}
+ {* initialize preview text *}
+ <script>
+ MakeFormatPreview("date_format_preview", document.getElementById("date_format"));
+ MakeFormatPreview("time_format_preview", document.getElementById("time_format"));
+
+ function adjustDecimalPreview()
+ {
+ var mark = document.getElementById("decimal_mark").value;
+ var example = document.getElementById("decimal_preview");
+ example.innerHTML = "<i>3"+mark+"14</i>";
+ }
+ adjustDecimalPreview();
+ </script>
+
+ <tr>
+ <td> </td>
+ <td> </td>
+ </tr>
+
+ <tr>
+ <td colspan="2" class="sectionHeader">{$i18n.form.profile.plugins}</td>
+ </tr>
+ <tr><td> </td></tr>
+ <tr>
+ <td align="right" nowrap>{$forms.groupForm.charts.control}</td>
+ <td><label for="charts">{$i18n.title.charts}</label></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$forms.groupForm.clients.control}</td>
+ <td><label for="clients">{$i18n.title.clients}</label> {$forms.profileForm.client_required.control} <span id="client_required_label"><label for="client_required">{$i18n.label.required}</label></span></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$forms.groupForm.invoices.control}</td>
+ <td><label for="invoices">{$i18n.title.invoices}</label></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$forms.groupForm.paid_status.control}</td>
+ <td><label for="paid_status">{$i18n.label.paid_status}</label></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$forms.groupForm.custom_fields.control}</td>
+ <td><label for="custom_fields">{$i18n.label.custom_fields}</label> <span id="cf_config"><a href="cf_custom_fields.php">{$i18n.label.configure}</a></span></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$forms.groupForm.expenses.control}</td>
+ <td><label for="expenses">{$i18n.title.expenses}</label> {$forms.profileForm.tax_expenses.control} <span id="tax_label"><label for="tax_expenses">{$i18n.label.tax}</label></span> <span id="expenses_config"><a href="predefined_expenses.php">{$i18n.label.configure}</a></span></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$forms.groupForm.notifications.control}</td>
+ <td><label for="notifications">{$i18n.title.notifications}</label> <span id="notifications_config"><a href="notifications.php">{$i18n.label.configure}</a></span></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$forms.groupForm.locking.control}</td>
+ <td><label for="locking">{$i18n.title.locking}</label> <span id="locking_config"><a href="locking.php">{$i18n.label.configure}</a></span></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$forms.groupForm.quotas.control}</td>
+ <td><label for="quotas">{$i18n.label.monthly_quotas}</label> <span id="quotas_config"><a href="quotas.php">{$i18n.label.configure}</a></span></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap>{$forms.groupForm.week_view.control}</td>
+ <td><label for="week_view">{$i18n.label.week_view}</label> <span id="week_view_config"><a href="week_view.php">{$i18n.label.configure}</a></span></td>
+ </tr>
+{/if}
+
+ <tr>
+ <td colspan="2"> </td>
+ </tr>
+ <tr>
+ <td colspan="2" height="50" align="center">{$forms.groupForm.btn_save.control}</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+{$forms.groupForm.close}
<a class="systemMenu" href="logout.php">{$i18n.menu.logout}</a> ·
{if $user->can('manage_own_settings')}
<a class="systemMenu" href="profile_edit.php">{$i18n.menu.profile}</a> ·
+ {/if}
+ {if $user->can('manage_basic_settings')}
+ <a class="systemMenu" href="group_edit.php">{$i18n.menu.group}</a> ·
{/if}
<a class="systemMenu" href="{$smarty.const.FORUM_LINK}" target="_blank">{$i18n.menu.forum}</a> ·
<a class="systemMenu" href="{$smarty.const.HELP_LINK}" target="_blank">{$i18n.menu.help}</a>
-<script>
-// handleTaskRequiredCheckbox - controls visibility of the Task Required checkbox.
-function handleTaskRequiredCheckbox() {
- var taskRequiredCheckbox = document.getElementById("task_required");
- var taskRequiredLabel = document.getElementById("task_required_label");
- var trackingModeDropdown = document.getElementById("tracking_mode");
- if (trackingModeDropdown.value == 2) {
- taskRequiredCheckbox.style.visibility = "visible";
- taskRequiredLabel.style.visibility = "visible";
- } else {
- taskRequiredCheckbox.style.visibility = "hidden";
- taskRequiredLabel.style.visibility = "hidden";
- }
-}
-
-
-// handleControls - controls visibility of controls.
-function handlePluginCheckboxes() {
- var clientsCheckbox = document.getElementById("clients");
- var invoicesCheckbox = document.getElementById("invoices");
- var requiredCheckbox = document.getElementById("client_required");
- var requiredLabel = document.getElementById("client_required_label");
- if (clientsCheckbox.checked) {
- requiredCheckbox.style.visibility = "visible";
- requiredLabel.style.visibility = "visible";
- invoicesCheckbox.disabled = false;
- } else {
- requiredCheckbox.checked = false;
- requiredCheckbox.style.visibility = "hidden";
- requiredLabel.style.visibility = "hidden";
- invoicesCheckbox.checked = false;
- invoicesCheckbox.disabled = true;
- }
-
- var expensesCheckbox = document.getElementById("expenses");
- var taxCheckbox = document.getElementById("tax_expenses");
- var taxLabel = document.getElementById("tax_label");
- if (expensesCheckbox.checked) {
- taxCheckbox.style.visibility = "visible";
- taxLabel.style.visibility = "visible";
- } else {
- taxCheckbox.checked = false;
- taxCheckbox.style.visibility = "hidden";
- taxLabel.style.visibility = "hidden";
- }
- var configureLabel = document.getElementById("expenses_config");
- if (expensesCheckbox.checked) {
- configureLabel.style.visibility = "visible";
- } else {
- configureLabel.style.visibility = "hidden";
- }
-
- var customFieldsCheckbox = document.getElementById("custom_fields");
- configureLabel = document.getElementById("cf_config");
- if (customFieldsCheckbox.checked) {
- configureLabel.style.visibility = "visible";
- } else {
- configureLabel.style.visibility = "hidden";
- }
-
- var notificationsCheckbox = document.getElementById("notifications");
- configureLabel = document.getElementById("notifications_config");
- if (notificationsCheckbox.checked) {
- configureLabel.style.visibility = "visible";
- } else {
- configureLabel.style.visibility = "hidden";
- }
-
- var lockingCheckbox = document.getElementById("locking");
- configureLabel = document.getElementById("locking_config");
- if (lockingCheckbox.checked) {
- configureLabel.style.visibility = "visible";
- } else {
- configureLabel.style.visibility = "hidden";
- }
-
- var quotasCheckbox = document.getElementById("quotas");
- configureLabel = document.getElementById("quotas_config");
- if (quotasCheckbox.checked){
- configureLabel.style.visibility = "visible";
- } else {
- configureLabel.style.visibility = "hidden";
- }
-
- var weekViewCheckbox = document.getElementById("week_view");
- configureLabel = document.getElementById("week_view_config");
- if (weekViewCheckbox.checked){
- configureLabel.style.visibility = "visible";
- } else {
- configureLabel.style.visibility = "hidden";
- }
-}
-</script>
-
{$forms.profileForm.open}
-{if $user->canManageTeam()}
-{include file="datetime_format_preview.tpl"}
-{/if}
-
<table cellspacing="4" cellpadding="7" border="0">
<tr>
<td>
<td></td>
<td>{$i18n.label.required_fields}</td>
</tr>
-
-{if $user->isManager() || ($user->canManageTeam() && !defined(MANAGER_ONLY_TEAM_SETTINGS))}
- <tr>
- <td colspan="2"> </td>
- </tr>
- <tr>
- <td align="right" nowrap>{$i18n.label.team_name}:</td>
- <td>{$forms.profileForm.team_name.control}</td>
- </tr>
- <tr>
- <td align="right">{$i18n.label.currency}:</td>
- <td>{$forms.profileForm.currency.control}</td>
- </tr>
- {if $user->can('manage_roles')}
- <tr>
- <td align="right" nowrap>{$i18n.label.roles}:</td>
- <td><a href="roles.php">{$i18n.label.configure}</a></td>
- </tr>
- {/if}
- <tr>
- <td align="right" nowrap>{$i18n.label.language}:</td>
- <td>{$forms.profileForm.lang.control}</td>
- </tr>
- <tr>
- <td align="right">{$i18n.label.decimal_mark}:</td>
- <td>{$forms.profileForm.decimal_mark.control} <font id="decimal_preview" color="#777777"> </font></td>
- <tr>
- <td align="right" nowrap>{$i18n.label.date_format}:</td>
- <td>{$forms.profileForm.date_format.control} <font id="date_format_preview" color="#777777"> </font></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$i18n.label.time_format}:</td>
- <td>{$forms.profileForm.time_format.control} <font id="time_format_preview" color="#777777"> </font></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$i18n.label.week_start}:</td>
- <td>{$forms.profileForm.start_week.control}</td>
- </tr>
- <tr>
- <td align="right" nowrap>{$i18n.form.profile.show_holidays}:</td>
- <td>{$forms.profileForm.show_holidays.control} <a href="https://www.anuko.com/lp/tt_14.htm" target="_blank">{$i18n.label.what_is_it}</a></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$i18n.form.profile.tracking_mode}:</td>
- <td>{$forms.profileForm.tracking_mode.control} {$forms.profileForm.task_required.control} <span id="task_required_label"><label for="task_required">{$i18n.label.required}</label></span></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$i18n.form.profile.record_type}:</td>
- <td>{$forms.profileForm.record_type.control}</td>
- </tr>
- <tr>
- <td align="right" nowrap>{$i18n.form.profile.punch_mode}:</td>
- <td>{$forms.profileForm.punch_mode.control} <a href="https://www.anuko.com/lp/tt_18.htm" target="_blank">{$i18n.label.what_is_it}</a></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$i18n.form.profile.allow_overlap}:</td>
- <td>{$forms.profileForm.allow_overlap.control} <a href="https://www.anuko.com/lp/tt_16.htm" target="_blank">{$i18n.label.what_is_it}</a></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$i18n.form.profile.future_entries}:</td>
- <td>{$forms.profileForm.future_entries.control} <a href="https://www.anuko.com/lp/tt_17.htm" target="_blank">{$i18n.label.what_is_it}</a></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$i18n.form.profile.uncompleted_indicators}:</td>
- <td>{$forms.profileForm.uncompleted_indicators.control} <a href="https://www.anuko.com/lp/tt_15.htm" target="_blank">{$i18n.label.what_is_it}</a></td>
- </tr>
-{if $user->isManager()}
- <tr>
- <td align="right" nowrap>{$i18n.label.bcc}:</td>
- <td>{$forms.profileForm.bcc_email.control} <a href="https://www.anuko.com/lp/tt_10.htm" target="_blank">{$i18n.label.what_is_it}</a></td>
- </tr>
-{/if}
- {* initialize preview text *}
- <script>
- MakeFormatPreview("date_format_preview", document.getElementById("date_format"));
- MakeFormatPreview("time_format_preview", document.getElementById("time_format"));
-
- function adjustDecimalPreview()
- {
- var mark = document.getElementById("decimal_mark").value;
- var example = document.getElementById("decimal_preview");
- example.innerHTML = "<i>3"+mark+"14</i>";
- }
- adjustDecimalPreview();
- </script>
-
- <tr>
- <td> </td>
- <td> </td>
- </tr>
-
- <tr>
- <td colspan="2" class="sectionHeader">{$i18n.form.profile.plugins}</td>
- </tr>
- <tr><td> </td></tr>
- <tr>
- <td align="right" nowrap>{$forms.profileForm.charts.control}</td>
- <td><label for="charts">{$i18n.title.charts}</label></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$forms.profileForm.clients.control}</td>
- <td><label for="clients">{$i18n.title.clients}</label> {$forms.profileForm.client_required.control} <span id="client_required_label"><label for="client_required">{$i18n.label.required}</label></span></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$forms.profileForm.invoices.control}</td>
- <td><label for="invoices">{$i18n.title.invoices}</label></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$forms.profileForm.paid_status.control}</td>
- <td><label for="paid_status">{$i18n.label.paid_status}</label></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$forms.profileForm.custom_fields.control}</td>
- <td><label for="custom_fields">{$i18n.label.custom_fields}</label> <span id="cf_config"><a href="cf_custom_fields.php">{$i18n.label.configure}</a></span></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$forms.profileForm.expenses.control}</td>
- <td><label for="expenses">{$i18n.title.expenses}</label> {$forms.profileForm.tax_expenses.control} <span id="tax_label"><label for="tax_expenses">{$i18n.label.tax}</label></span> <span id="expenses_config"><a href="predefined_expenses.php">{$i18n.label.configure}</a></span></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$forms.profileForm.notifications.control}</td>
- <td><label for="notifications">{$i18n.title.notifications}</label> <span id="notifications_config"><a href="notifications.php">{$i18n.label.configure}</a></span></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$forms.profileForm.locking.control}</td>
- <td><label for="locking">{$i18n.title.locking}</label> <span id="locking_config"><a href="locking.php">{$i18n.label.configure}</a></span></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$forms.profileForm.quotas.control}</td>
- <td><label for="quotas">{$i18n.label.monthly_quotas}</label> <span id="quotas_config"><a href="quotas.php">{$i18n.label.configure}</a></span></td>
- </tr>
- <tr>
- <td align="right" nowrap>{$forms.profileForm.week_view.control}</td>
- <td><label for="week_view">{$i18n.label.week_view}</label> <span id="week_view_config"><a href="week_view.php">{$i18n.label.configure}</a></span></td>
- </tr>
-{/if}
-
<tr>
<td colspan="2"> </td>
</tr>
--- /dev/null
+<?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('ttUserHelper');
+import('ttRoleHelper');
+
+// Access checks.
+if (!ttAccessAllowed('manage_basic_settings')) {
+ header('Location: access_denied.php');
+ exit();
+}
+// End of access checks.
+
+if (!defined('CURRENCY_DEFAULT')) define('CURRENCY_DEFAULT', '$');
+
+if ($request->isPost()) {
+ $cl_team = trim($request->getParameter('team_name'));
+ $cl_currency = trim($request->getParameter('currency'));
+ if (!$cl_currency) $cl_currency = CURRENCY_DEFAULT;
+ $cl_lang = $request->getParameter('lang');
+ $cl_decimal_mark = $request->getParameter('decimal_mark');
+ $cl_date_format = $request->getParameter('date_format');
+ $cl_time_format = $request->getParameter('time_format');
+ $cl_start_week = $request->getParameter('start_week');
+ $cl_show_holidays = $request->getParameter('show_holidays');
+ $cl_tracking_mode = $request->getParameter('tracking_mode');
+ $cl_project_required = $request->getParameter('project_required');
+ $cl_task_required = $request->getParameter('task_required');
+ $cl_record_type = $request->getParameter('record_type');
+ $cl_punch_mode = $request->getParameter('punch_mode');
+ $cl_allow_overlap = $request->getParameter('allow_overlap');
+ $cl_future_entries = $request->getParameter('future_entries');
+ $cl_uncompleted_indicators = $request->getParameter('uncompleted_indicators');
+ $cl_bcc_email = trim($request->getParameter('bcc_email'));
+
+ // Plugin checkboxes.
+ $cl_charts = $request->getParameter('charts');
+ $cl_clients = $request->getParameter('clients');
+ $cl_client_required = $request->getParameter('client_required');
+ $cl_invoices = $request->getParameter('invoices');
+ $cl_paid_status = $request->getParameter('paid_status');
+ $cl_custom_fields = $request->getParameter('custom_fields');
+ $cl_expenses = $request->getParameter('expenses');
+ $cl_tax_expenses = $request->getParameter('tax_expenses');
+ $cl_notifications = $request->getParameter('notifications');
+ $cl_locking = $request->getParameter('locking');
+ $cl_quotas = $request->getParameter('quotas');
+ $cl_week_view = $request->getParameter('week_view');
+} else {
+ $cl_team = $user->team;
+ $cl_currency = ($user->currency == ''? CURRENCY_DEFAULT : $user->currency);
+ $cl_lang = $user->lang;
+ $cl_decimal_mark = $user->decimal_mark;
+ $cl_date_format = $user->date_format;
+ $cl_time_format = $user->time_format;
+ $cl_start_week = $user->week_start;
+ $cl_show_holidays = $user->show_holidays;
+ $cl_tracking_mode = $user->tracking_mode;
+ $cl_project_required = $user->project_required;
+ $cl_task_required = $user->task_required;
+ $cl_record_type = $user->record_type;
+ $cl_punch_mode = $user->punch_mode;
+ $cl_allow_overlap = $user->allow_overlap;
+ $cl_future_entries = $user->future_entries;
+ $cl_uncompleted_indicators = $user->uncompleted_indicators;
+ $cl_bcc_email = $user->bcc_email;
+
+ // Which plugins do we have enabled?
+ $plugins = explode(',', $user->plugins);
+ $cl_charts = in_array('ch', $plugins);
+ $cl_clients = in_array('cl', $plugins);
+ $cl_client_required = in_array('cm', $plugins);
+ $cl_invoices = in_array('iv', $plugins);
+ $cl_paid_status = in_array('ps', $plugins);
+ $cl_custom_fields = in_array('cf', $plugins);
+ $cl_expenses = in_array('ex', $plugins);
+ $cl_tax_expenses = in_array('et', $plugins);
+ $cl_notifications = in_array('no', $plugins);
+ $cl_locking = in_array('lk', $plugins);
+ $cl_quotas = in_array('mq', $plugins);
+ $cl_week_view = in_array('wv', $plugins);
+}
+
+$form = new Form('groupForm');
+$form->addInput(array('type'=>'text','maxlength'=>'200','name'=>'team_name','value'=>$cl_team));
+$form->addInput(array('type'=>'text','maxlength'=>'7','name'=>'currency','value'=>$cl_currency));
+
+// Prepare an array of available languages.
+$lang_files = I18n::getLangFileList();
+foreach ($lang_files as $lfile) {
+ $content = file(RESOURCE_DIR."/".$lfile);
+ $lname = '';
+ foreach ($content as $line) {
+ if (strstr($line, 'i18n_language')) {
+ $a = explode('=', $line);
+ $lname = trim(str_replace(';','',str_replace("'","",$a[1])));
+ break;
+ }
+ }
+ unset($content);
+ $longname_lang[] = array('id'=>I18n::getLangFromFilename($lfile),'name'=>$lname);
+}
+$longname_lang = mu_sort($longname_lang, 'name');
+$form->addInput(array('type'=>'combobox','name'=>'lang','style'=>'width: 200px','data'=>$longname_lang,'datakeys'=>array('id','name'),'value'=>$cl_lang));
+
+$DECIMAL_MARK_OPTIONS = array(array('id'=>'.','name'=>'.'),array('id'=>',','name'=>','));
+$form->addInput(array('type'=>'combobox','name'=>'decimal_mark','style'=>'width: 150px','data'=>$DECIMAL_MARK_OPTIONS,'datakeys'=>array('id','name'),'value'=>$cl_decimal_mark,
+ 'onchange'=>'adjustDecimalPreview()'));
+
+$DATE_FORMAT_OPTIONS = array(
+ array('id'=>'%Y-%m-%d','name'=>'Y-m-d'),
+ array('id'=>'%m/%d/%Y','name'=>'m/d/Y'),
+ array('id'=>'%d.%m.%Y','name'=>'d.m.Y'),
+ array('id'=>'%d.%m.%Y %a','name'=>'d.m.Y a'));
+$form->addInput(array('type'=>'combobox','name'=>'date_format','style'=>'width: 150px;','data'=>$DATE_FORMAT_OPTIONS,'datakeys'=>array('id','name'),'value'=>$cl_date_format,
+ 'onchange'=>'MakeFormatPreview("date_format_preview", this);'));
+$TIME_FORMAT_OPTIONS = array(
+ array('id'=>'%H:%M','name'=>$i18n->get('form.profile.24_hours')),
+ array('id'=>'%I:%M %p','name'=>$i18n->get('form.profile.12_hours')));
+$form->addInput(array('type'=>'combobox','name'=>'time_format','style'=>'width: 150px;','data'=>$TIME_FORMAT_OPTIONS,'datakeys'=>array('id','name'),'value'=>$cl_time_format,
+ 'onchange'=>'MakeFormatPreview("time_format_preview", this);'));
+
+// Prepare week start choices.
+$week_start_options = array();
+foreach ($i18n->weekdayNames as $id => $week_dn) {
+ $week_start_options[] = array('id' => $id, 'name' => $week_dn);
+}
+$form->addInput(array('type'=>'combobox','name'=>'start_week','style'=>'width: 150px;','data'=>$week_start_options,'datakeys'=>array('id','name'),'value'=>$cl_start_week));
+
+// Show holidays checkbox.
+$form->addInput(array('type'=>'checkbox','name'=>'show_holidays','value'=>$cl_show_holidays));
+
+// Prepare tracking mode choices.
+$tracking_mode_options = array();
+$tracking_mode_options[MODE_TIME] = $i18n->get('form.profile.mode_time');
+$tracking_mode_options[MODE_PROJECTS] = $i18n->get('form.profile.mode_projects');
+$tracking_mode_options[MODE_PROJECTS_AND_TASKS] = $i18n->get('form.profile.mode_projects_and_tasks');
+$form->addInput(array('type'=>'combobox','name'=>'tracking_mode','style'=>'width: 150px;','data'=>$tracking_mode_options,'value'=>$cl_tracking_mode,'onchange'=>'handleTaskRequiredCheckbox()'));
+$form->addInput(array('type'=>'checkbox','name'=>'project_required','value'=>$cl_project_required));
+$form->addInput(array('type'=>'checkbox','name'=>'task_required','value'=>$cl_task_required));
+
+// Prepare record type choices.
+$record_type_options = array();
+$record_type_options[TYPE_ALL] = $i18n->get('form.profile.type_all');
+$record_type_options[TYPE_START_FINISH] = $i18n->get('form.profile.type_start_finish');
+$record_type_options[TYPE_DURATION] = $i18n->get('form.profile.type_duration');
+$form->addInput(array('type'=>'combobox','name'=>'record_type','style'=>'width: 150px;','data'=>$record_type_options,'value'=>$cl_record_type));
+
+// Punch mode checkbox.
+$form->addInput(array('type'=>'checkbox','name'=>'punch_mode','value'=>$cl_punch_mode));
+
+// Allow overlap checkbox.
+$form->addInput(array('type'=>'checkbox','name'=>'allow_overlap','value'=>$cl_allow_overlap));
+
+// Future entries checkbox.
+$form->addInput(array('type'=>'checkbox','name'=>'future_entries','value'=>$cl_future_entries));
+
+// Uncompleted indicators checkbox.
+$form->addInput(array('type'=>'checkbox','name'=>'uncompleted_indicators','value'=>$cl_uncompleted_indicators));
+
+// Add bcc email control, for manager only.
+if ($user->can('manage_advanced_settings')) {
+ $form->addInput(array('type'=>'text','maxlength'=>'100','name'=>'bcc_email','value'=>$cl_bcc_email));
+}
+
+// Plugin checkboxes.
+$form->addInput(array('type'=>'checkbox','name'=>'charts','value'=>$cl_charts));
+$form->addInput(array('type'=>'checkbox','name'=>'clients','value'=>$cl_clients,'onchange'=>'handlePluginCheckboxes()'));
+$form->addInput(array('type'=>'checkbox','name'=>'client_required','value'=>$cl_client_required));
+$form->addInput(array('type'=>'checkbox','name'=>'invoices','value'=>$cl_invoices));
+$form->addInput(array('type'=>'checkbox','name'=>'paid_status','value'=>$cl_paid_status));
+$form->addInput(array('type'=>'checkbox','name'=>'custom_fields','value'=>$cl_custom_fields,'onchange'=>'handlePluginCheckboxes()'));
+$form->addInput(array('type'=>'checkbox','name'=>'expenses','value'=>$cl_expenses,'onchange'=>'handlePluginCheckboxes()'));
+$form->addInput(array('type'=>'checkbox','name'=>'tax_expenses','value'=>$cl_tax_expenses));
+$form->addInput(array('type'=>'checkbox','name'=>'notifications','value'=>$cl_notifications,'onchange'=>'handlePluginCheckboxes()'));
+$form->addInput(array('type'=>'checkbox','name'=>'locking','value'=>$cl_locking,'onchange'=>'handlePluginCheckboxes()'));
+$form->addInput(array('type'=>'checkbox','name'=>'quotas','value'=>$cl_quotas,'onchange'=>'handlePluginCheckboxes()'));
+$form->addInput(array('type'=>'checkbox','name'=>'week_view','value'=>$cl_week_view,'onchange'=>'handlePluginCheckboxes()'));
+$form->addInput(array('type'=>'submit','name'=>'btn_save','value'=>$i18n->get('button.save')));
+
+if ($request->isPost()) {
+ // Validate user input.
+ if (!ttValidString($cl_team, true)) $err->add($i18n->get('error.field'), $i18n->get('label.team_name'));
+ if (!ttValidString($cl_currency, true)) $err->add($i18n->get('error.field'), $i18n->get('label.currency'));
+ if ($user->can('manage_advanced_settings')) {
+ if (!ttValidEmail($cl_bcc_email, true)) $err->add($i18n->get('error.field'), $i18n->get('label.bcc'));
+ }
+ // Finished validating user input.
+
+ if ($err->no()) {
+ $update_result = true;
+ if ($user->canManageTeam()) {
+
+ // Prepare plugins string.
+ if ($cl_charts)
+ $plugins .= ',ch';
+ if ($cl_clients)
+ $plugins .= ',cl';
+ if ($cl_client_required)
+ $plugins .= ',cm';
+ if ($cl_invoices)
+ $plugins .= ',iv';
+ if ($cl_paid_status)
+ $plugins .= ',ps';
+ if ($cl_custom_fields)
+ $plugins .= ',cf';
+ if ($cl_expenses)
+ $plugins .= ',ex';
+ if ($cl_tax_expenses)
+ $plugins .= ',et';
+ if ($cl_notifications)
+ $plugins .= ',no';
+ if ($cl_locking)
+ $plugins .= ',lk';
+ if ($cl_quotas)
+ $plugins .= ',mq';
+ if ($cl_week_view)
+ $plugins .= ',wv';
+
+ // Recycle week view plugin options as they are not configured on this page.
+ $existing_plugins = explode(',', $user->plugins);
+ if (in_array('wvn', $existing_plugins))
+ $plugins .= ',wvn';
+ if (in_array('wvl', $existing_plugins))
+ $plugins .= ',wvl';
+ if (in_array('wvns', $existing_plugins))
+ $plugins .= ',wvns';
+
+ $plugins = trim($plugins, ',');
+
+ // Prepare config string.
+ if ($cl_show_holidays)
+ $config .= ',show_holidays';
+ if ($cl_punch_mode)
+ $config .= ',punch_mode';
+ if ($cl_allow_overlap)
+ $config .= ',allow_overlap';
+ if ($cl_future_entries)
+ $config .= ',future_entries';
+ if ($cl_uncompleted_indicators)
+ $config .= ',uncompleted_indicators';
+ $config = trim($config, ',');
+
+ $update_result = ttTeamHelper::update($user->team_id, array(
+ 'name' => $cl_team,
+ 'currency' => $cl_currency,
+ 'lang' => $cl_lang,
+ 'decimal_mark' => $cl_decimal_mark,
+ 'date_format' => $cl_date_format,
+ 'time_format' => $cl_time_format,
+ 'week_start' => $cl_start_week,
+ 'tracking_mode' => $cl_tracking_mode,
+ 'project_required' => $cl_project_required,
+ 'task_required' => $cl_task_required,
+ 'record_type' => $cl_record_type,
+ 'uncompleted_indicators' => $cl_uncompleted_indicators,
+ 'bcc_email' => $cl_bcc_email,
+ 'plugins' => $plugins,
+ 'config' => $config));
+ }
+ if ($update_result) {
+ header('Location: time.php');
+ exit();
+ } else
+ $err->add($i18n->get('error.db'));
+ }
+} // isPost
+
+$smarty->assign('auth_external', $auth->isPasswordExternal());
+$smarty->assign('forms', array($form->getName()=>$form->toArray()));
+$smarty->assign('onload', 'onLoad="handleTaskRequiredCheckbox(); handlePluginCheckboxes();"');
+$smarty->assign('title', $i18n->get('title.group'));
+$smarty->assign('content_page_name', 'group_edit.tpl');
+$smarty->display('index.tpl');
}
// End of access checks.
-if (!defined('CURRENCY_DEFAULT')) define('CURRENCY_DEFAULT', '$');
$can_manage_account = $user->can('manage_own_account');
if ($request->isPost()) {
$cl_password2 = $request->getParameter('password2');
}
$cl_email = trim($request->getParameter('email'));
-
- if ($user->canManageTeam()) {
- $cl_team = trim($request->getParameter('team_name'));
- $cl_currency = trim($request->getParameter('currency'));
- if (!$cl_currency) $cl_currency = CURRENCY_DEFAULT;
- $cl_lang = $request->getParameter('lang');
- $cl_decimal_mark = $request->getParameter('decimal_mark');
- $cl_date_format = $request->getParameter('date_format');
- $cl_time_format = $request->getParameter('time_format');
- $cl_start_week = $request->getParameter('start_week');
- $cl_show_holidays = $request->getParameter('show_holidays');
- $cl_tracking_mode = $request->getParameter('tracking_mode');
- $cl_project_required = $request->getParameter('project_required');
- $cl_task_required = $request->getParameter('task_required');
- $cl_record_type = $request->getParameter('record_type');
- $cl_punch_mode = $request->getParameter('punch_mode');
- $cl_allow_overlap = $request->getParameter('allow_overlap');
- $cl_future_entries = $request->getParameter('future_entries');
- $cl_uncompleted_indicators = $request->getParameter('uncompleted_indicators');
- $cl_bcc_email = trim($request->getParameter('bcc_email'));
-
- // Plugin checkboxes.
- $cl_charts = $request->getParameter('charts');
- $cl_clients = $request->getParameter('clients');
- $cl_client_required = $request->getParameter('client_required');
- $cl_invoices = $request->getParameter('invoices');
- $cl_paid_status = $request->getParameter('paid_status');
- $cl_custom_fields = $request->getParameter('custom_fields');
- $cl_expenses = $request->getParameter('expenses');
- $cl_tax_expenses = $request->getParameter('tax_expenses');
- $cl_notifications = $request->getParameter('notifications');
- $cl_locking = $request->getParameter('locking');
- $cl_quotas = $request->getParameter('quotas');
- $cl_week_view = $request->getParameter('week_view');
- }
} else {
$cl_name = $user->name;
$cl_login = $user->login;
$cl_email = $user->email;
- if ($user->canManageTeam()) {
- $cl_team = $user->team;
- $cl_currency = ($user->currency == ''? CURRENCY_DEFAULT : $user->currency);
- $cl_lang = $user->lang;
- $cl_decimal_mark = $user->decimal_mark;
- $cl_date_format = $user->date_format;
- $cl_time_format = $user->time_format;
- $cl_start_week = $user->week_start;
- $cl_show_holidays = $user->show_holidays;
- $cl_tracking_mode = $user->tracking_mode;
- $cl_project_required = $user->project_required;
- $cl_task_required = $user->task_required;
- $cl_record_type = $user->record_type;
- $cl_punch_mode = $user->punch_mode;
- $cl_allow_overlap = $user->allow_overlap;
- $cl_future_entries = $user->future_entries;
- $cl_uncompleted_indicators = $user->uncompleted_indicators;
- $cl_bcc_email = $user->bcc_email;
-
- // Which plugins do we have enabled?
- $plugins = explode(',', $user->plugins);
- $cl_charts = in_array('ch', $plugins);
- $cl_clients = in_array('cl', $plugins);
- $cl_client_required = in_array('cm', $plugins);
- $cl_invoices = in_array('iv', $plugins);
- $cl_paid_status = in_array('ps', $plugins);
- $cl_custom_fields = in_array('cf', $plugins);
- $cl_expenses = in_array('ex', $plugins);
- $cl_tax_expenses = in_array('et', $plugins);
- $cl_notifications = in_array('no', $plugins);
- $cl_locking = in_array('lk', $plugins);
- $cl_quotas = in_array('mq', $plugins);
- $cl_week_view = in_array('wv', $plugins);
- }
}
$form = new Form('profileForm');
$form->addInput(array('type'=>'password','maxlength'=>'30','name'=>'password2','value'=>$cl_password2));
}
$form->addInput(array('type'=>'text','maxlength'=>'100','name'=>'email','value'=>$cl_email,'enable'=>$can_manage_account));
-if ($user->canManageTeam()) {
- $form->addInput(array('type'=>'text','maxlength'=>'200','name'=>'team_name','value'=>$cl_team));
- $form->addInput(array('type'=>'text','maxlength'=>'7','name'=>'currency','value'=>$cl_currency));
-
- // Prepare an array of available languages.
- $lang_files = I18n::getLangFileList();
- foreach ($lang_files as $lfile) {
- $content = file(RESOURCE_DIR."/".$lfile);
- $lname = '';
- foreach ($content as $line) {
- if (strstr($line, 'i18n_language')) {
- $a = explode('=', $line);
- $lname = trim(str_replace(';','',str_replace("'","",$a[1])));
- break;
- }
- }
- unset($content);
- $longname_lang[] = array('id'=>I18n::getLangFromFilename($lfile),'name'=>$lname);
- }
- $longname_lang = mu_sort($longname_lang, 'name');
- $form->addInput(array('type'=>'combobox','name'=>'lang','style'=>'width: 200px','data'=>$longname_lang,'datakeys'=>array('id','name'),'value'=>$cl_lang));
-
- $DECIMAL_MARK_OPTIONS = array(array('id'=>'.','name'=>'.'),array('id'=>',','name'=>','));
- $form->addInput(array('type'=>'combobox','name'=>'decimal_mark','style'=>'width: 150px','data'=>$DECIMAL_MARK_OPTIONS,'datakeys'=>array('id','name'),'value'=>$cl_decimal_mark,
- 'onchange'=>'adjustDecimalPreview()'));
-
- $DATE_FORMAT_OPTIONS = array(
- array('id'=>'%Y-%m-%d','name'=>'Y-m-d'),
- array('id'=>'%m/%d/%Y','name'=>'m/d/Y'),
- array('id'=>'%d.%m.%Y','name'=>'d.m.Y'),
- array('id'=>'%d.%m.%Y %a','name'=>'d.m.Y a'));
- $form->addInput(array('type'=>'combobox','name'=>'date_format','style'=>'width: 150px;','data'=>$DATE_FORMAT_OPTIONS,'datakeys'=>array('id','name'),'value'=>$cl_date_format,
- 'onchange'=>'MakeFormatPreview("date_format_preview", this);'));
- $TIME_FORMAT_OPTIONS = array(
- array('id'=>'%H:%M','name'=>$i18n->get('form.profile.24_hours')),
- array('id'=>'%I:%M %p','name'=>$i18n->get('form.profile.12_hours')));
- $form->addInput(array('type'=>'combobox','name'=>'time_format','style'=>'width: 150px;','data'=>$TIME_FORMAT_OPTIONS,'datakeys'=>array('id','name'),'value'=>$cl_time_format,
- 'onchange'=>'MakeFormatPreview("time_format_preview", this);'));
-
- // Prepare week start choices.
- $week_start_options = array();
- foreach ($i18n->weekdayNames as $id => $week_dn) {
- $week_start_options[] = array('id' => $id, 'name' => $week_dn);
- }
- $form->addInput(array('type'=>'combobox','name'=>'start_week','style'=>'width: 150px;','data'=>$week_start_options,'datakeys'=>array('id','name'),'value'=>$cl_start_week));
-
- // Show holidays checkbox.
- $form->addInput(array('type'=>'checkbox','name'=>'show_holidays','value'=>$cl_show_holidays));
-
- // Prepare tracking mode choices.
- $tracking_mode_options = array();
- $tracking_mode_options[MODE_TIME] = $i18n->get('form.profile.mode_time');
- $tracking_mode_options[MODE_PROJECTS] = $i18n->get('form.profile.mode_projects');
- $tracking_mode_options[MODE_PROJECTS_AND_TASKS] = $i18n->get('form.profile.mode_projects_and_tasks');
- $form->addInput(array('type'=>'combobox','name'=>'tracking_mode','style'=>'width: 150px;','data'=>$tracking_mode_options,'value'=>$cl_tracking_mode,'onchange'=>'handleTaskRequiredCheckbox()'));
- $form->addInput(array('type'=>'checkbox','name'=>'project_required','value'=>$cl_project_required));
- $form->addInput(array('type'=>'checkbox','name'=>'task_required','value'=>$cl_task_required));
-
- // Prepare record type choices.
- $record_type_options = array();
- $record_type_options[TYPE_ALL] = $i18n->get('form.profile.type_all');
- $record_type_options[TYPE_START_FINISH] = $i18n->get('form.profile.type_start_finish');
- $record_type_options[TYPE_DURATION] = $i18n->get('form.profile.type_duration');
- $form->addInput(array('type'=>'combobox','name'=>'record_type','style'=>'width: 150px;','data'=>$record_type_options,'value'=>$cl_record_type));
-
- // Punch mode checkbox.
- $form->addInput(array('type'=>'checkbox','name'=>'punch_mode','value'=>$cl_punch_mode));
-
- // Allow overlap checkbox.
- $form->addInput(array('type'=>'checkbox','name'=>'allow_overlap','value'=>$cl_allow_overlap));
-
- // Future entries checkbox.
- $form->addInput(array('type'=>'checkbox','name'=>'future_entries','value'=>$cl_future_entries));
-
- // Uncompleted indicators checkbox.
- $form->addInput(array('type'=>'checkbox','name'=>'uncompleted_indicators','value'=>$cl_uncompleted_indicators));
-
- // Add bcc email control, for manager only.
- if ($user->isManager()) {
- $form->addInput(array('type'=>'text','maxlength'=>'100','name'=>'bcc_email','value'=>$cl_bcc_email));
- }
-
- // Plugin checkboxes.
- $form->addInput(array('type'=>'checkbox','name'=>'charts','value'=>$cl_charts));
- $form->addInput(array('type'=>'checkbox','name'=>'clients','value'=>$cl_clients,'onchange'=>'handlePluginCheckboxes()'));
- $form->addInput(array('type'=>'checkbox','name'=>'client_required','value'=>$cl_client_required));
- $form->addInput(array('type'=>'checkbox','name'=>'invoices','value'=>$cl_invoices));
- $form->addInput(array('type'=>'checkbox','name'=>'paid_status','value'=>$cl_paid_status));
- $form->addInput(array('type'=>'checkbox','name'=>'custom_fields','value'=>$cl_custom_fields,'onchange'=>'handlePluginCheckboxes()'));
- $form->addInput(array('type'=>'checkbox','name'=>'expenses','value'=>$cl_expenses,'onchange'=>'handlePluginCheckboxes()'));
- $form->addInput(array('type'=>'checkbox','name'=>'tax_expenses','value'=>$cl_tax_expenses));
- $form->addInput(array('type'=>'checkbox','name'=>'notifications','value'=>$cl_notifications,'onchange'=>'handlePluginCheckboxes()'));
- $form->addInput(array('type'=>'checkbox','name'=>'locking','value'=>$cl_locking,'onchange'=>'handlePluginCheckboxes()'));
- $form->addInput(array('type'=>'checkbox','name'=>'quotas','value'=>$cl_quotas,'onchange'=>'handlePluginCheckboxes()'));
- $form->addInput(array('type'=>'checkbox','name'=>'week_view','value'=>$cl_week_view,'onchange'=>'handlePluginCheckboxes()'));
-}
$form->addInput(array('type'=>'submit','name'=>'btn_save','value'=>$i18n->get('button.save')));
if ($request->isPost()) {
$err->add($i18n->get('error.not_equal'), $i18n->get('label.password'), $i18n->get('label.confirm_password'));
}
if (!ttValidEmail($cl_email, true)) $err->add($i18n->get('error.field'), $i18n->get('label.email'));
- if ($user->canManageTeam()) {
- if (!ttValidString($cl_team, true)) $err->add($i18n->get('error.field'), $i18n->get('label.team_name'));
- if (!ttValidString($cl_currency, true)) $err->add($i18n->get('error.field'), $i18n->get('label.currency'));
- if ($user->isManager()) {
- if (!ttValidEmail($cl_bcc_email, true)) $err->add($i18n->get('error.field'), $i18n->get('label.bcc'));
- }
- }
// Finished validating user input.
if ($err->no()) {
- $update_result = true;
- if ($user->canManageTeam()) {
-
- // Prepare plugins string.
- if ($cl_charts)
- $plugins .= ',ch';
- if ($cl_clients)
- $plugins .= ',cl';
- if ($cl_client_required)
- $plugins .= ',cm';
- if ($cl_invoices)
- $plugins .= ',iv';
- if ($cl_paid_status)
- $plugins .= ',ps';
- if ($cl_custom_fields)
- $plugins .= ',cf';
- if ($cl_expenses)
- $plugins .= ',ex';
- if ($cl_tax_expenses)
- $plugins .= ',et';
- if ($cl_notifications)
- $plugins .= ',no';
- if ($cl_locking)
- $plugins .= ',lk';
- if ($cl_quotas)
- $plugins .= ',mq';
- if ($cl_week_view)
- $plugins .= ',wv';
-
- // Recycle week view plugin options as they are not configured on this page.
- $existing_plugins = explode(',', $user->plugins);
- if (in_array('wvn', $existing_plugins))
- $plugins .= ',wvn';
- if (in_array('wvl', $existing_plugins))
- $plugins .= ',wvl';
- if (in_array('wvns', $existing_plugins))
- $plugins .= ',wvns';
-
- $plugins = trim($plugins, ',');
-
- // Prepare config string.
- if ($cl_show_holidays)
- $config .= ',show_holidays';
- if ($cl_punch_mode)
- $config .= ',punch_mode';
- if ($cl_allow_overlap)
- $config .= ',allow_overlap';
- if ($cl_future_entries)
- $config .= ',future_entries';
- if ($cl_uncompleted_indicators)
- $config .= ',uncompleted_indicators';
- $config = trim($config, ',');
-
- $update_result = ttTeamHelper::update($user->team_id, array(
- 'name' => $cl_team,
- 'currency' => $cl_currency,
- 'lang' => $cl_lang,
- 'decimal_mark' => $cl_decimal_mark,
- 'date_format' => $cl_date_format,
- 'time_format' => $cl_time_format,
- 'week_start' => $cl_start_week,
- 'tracking_mode' => $cl_tracking_mode,
- 'project_required' => $cl_project_required,
- 'task_required' => $cl_task_required,
- 'record_type' => $cl_record_type,
- 'uncompleted_indicators' => $cl_uncompleted_indicators,
- 'bcc_email' => $cl_bcc_email,
- 'plugins' => $plugins,
- 'config' => $config));
- }
- if ($update_result) {
- $update_result = ttUserHelper::update($user->id, array(
+ $update_result = ttUserHelper::update($user->id, array(
'name' => $cl_name,
'login' => $cl_login,
'password' => $cl_password1,
'email' => $cl_email,
'status' => ACTIVE));
- }
if ($update_result) {
header('Location: time.php');
exit();
$smarty->assign('auth_external', $auth->isPasswordExternal());
$smarty->assign('forms', array($form->getName()=>$form->toArray()));
-$smarty->assign('onload', 'onLoad="handleTaskRequiredCheckbox(); handlePluginCheckboxes();"');
$smarty->assign('title', $i18n->get('title.profile'));
$smarty->assign('content_page_name', 'profile_edit.tpl');
$smarty->display('index.tpl');