Split profile page into two for account and group settings to reduce complexity.
authorNik Okuntseff <support@anuko.com>
Tue, 27 Mar 2018 23:17:04 +0000 (23:17 +0000)
committerNik Okuntseff <support@anuko.com>
Tue, 27 Mar 2018 23:17:04 +0000 (23:17 +0000)
WEB-INF/resources/en.lang.php
WEB-INF/templates/footer.tpl
WEB-INF/templates/group_edit.tpl [new file with mode: 0644]
WEB-INF/templates/header.tpl
WEB-INF/templates/profile_edit.tpl
group_edit.php [new file with mode: 0644]
profile_edit.php

index 732141a..1613fec 100644 (file)
@@ -46,6 +46,7 @@ $i18n_key_words = array(
 'menu.help' => 'Help',
 'menu.create_team' => 'Create Team',
 'menu.profile' => 'Profile',
+'menu.group' => 'Group',
 'menu.time' => 'Time',
 'menu.expenses' => 'Expenses',
 'menu.reports' => 'Reports',
@@ -268,6 +269,7 @@ $i18n_key_words = array(
 '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',
index e939e02..35039df 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.79.4192 | 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.80.4193 | 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/group_edit.tpl b/WEB-INF/templates/group_edit.tpl
new file mode 100644 (file)
index 0000000..9b341b6
--- /dev/null
@@ -0,0 +1,248 @@
+<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">&nbsp;</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">&nbsp;</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">&nbsp;</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>&nbsp;</td>
+            <td>&nbsp;</td>
+          </tr>
+
+          <tr>
+             <td colspan="2" class="sectionHeader">{$i18n.form.profile.plugins}</td>
+          </tr>
+          <tr><td>&nbsp;</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">&nbsp;</td>
+          </tr>
+          <tr>
+            <td colspan="2" height="50" align="center">{$forms.groupForm.btn_save.control}</td>
+          </tr>
+        </table>
+      </td>
+    </tr>
+</table>
+{$forms.groupForm.close}
index b74923b..3ad3fb5 100644 (file)
@@ -85,6 +85,9 @@
             <a class="systemMenu" href="logout.php">{$i18n.menu.logout}</a> &middot;
     {if $user->can('manage_own_settings')}
             <a class="systemMenu" href="profile_edit.php">{$i18n.menu.profile}</a> &middot;
+    {/if}
+    {if $user->can('manage_basic_settings')}
+            <a class="systemMenu" href="group_edit.php">{$i18n.menu.group}</a> &middot;
     {/if}
             <a class="systemMenu" href="{$smarty.const.FORUM_LINK}" target="_blank">{$i18n.menu.forum}</a> &middot;
             <a class="systemMenu" href="{$smarty.const.HELP_LINK}" target="_blank">{$i18n.menu.help}</a>
index 244c6cb..1fb0400 100644 (file)
@@ -1,103 +1,5 @@
-<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>
@@ -128,143 +30,6 @@ function handlePluginCheckboxes() {
             <td></td>
             <td>{$i18n.label.required_fields}</td>
           </tr>
-
-{if $user->isManager() || ($user->canManageTeam() && !defined(MANAGER_ONLY_TEAM_SETTINGS))}
-          <tr>
-            <td colspan="2">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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>&nbsp;</td>
-            <td>&nbsp;</td>
-          </tr>
-
-          <tr>
-             <td colspan="2" class="sectionHeader">{$i18n.form.profile.plugins}</td>
-          </tr>
-          <tr><td>&nbsp;</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">&nbsp;</td>
           </tr>
diff --git a/group_edit.php b/group_edit.php
new file mode 100644 (file)
index 0000000..0ce9358
--- /dev/null
@@ -0,0 +1,301 @@
+<?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(&quot;date_format_preview&quot;, 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(&quot;time_format_preview&quot;, 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');
index c64b95b..9de1820 100644 (file)
@@ -38,7 +38,6 @@ if (!ttAccessAllowed('manage_own_settings')) {
 }
 // End of access checks.
 
-if (!defined('CURRENCY_DEFAULT')) define('CURRENCY_DEFAULT', '$');
 $can_manage_account = $user->can('manage_own_account');
 
 if ($request->isPost()) {
@@ -49,79 +48,10 @@ 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');
@@ -132,102 +62,6 @@ if (!$auth->isPasswordExternal()) {
   $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(&quot;date_format_preview&quot;, 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(&quot;time_format_preview&quot;, 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()) {
@@ -246,94 +80,15 @@ 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();
@@ -344,7 +99,6 @@ if ($request->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.profile'));
 $smarty->assign('content_page_name', 'profile_edit.tpl');
 $smarty->display('index.tpl');