Implemented group delete feature.
authorNik Okuntseff <support@anuko.com>
Wed, 11 Apr 2018 17:29:09 +0000 (17:29 +0000)
committerNik Okuntseff <support@anuko.com>
Wed, 11 Apr 2018 17:29:09 +0000 (17:29 +0000)
35 files changed:
WEB-INF/resources/ca.lang.php
WEB-INF/resources/cs.lang.php
WEB-INF/resources/da.lang.php
WEB-INF/resources/de.lang.php
WEB-INF/resources/en.lang.php
WEB-INF/resources/es.lang.php
WEB-INF/resources/et.lang.php
WEB-INF/resources/fa.lang.php
WEB-INF/resources/fi.lang.php
WEB-INF/resources/fr.lang.php
WEB-INF/resources/gr.lang.php
WEB-INF/resources/he.lang.php
WEB-INF/resources/hu.lang.php
WEB-INF/resources/it.lang.php
WEB-INF/resources/ja.lang.php
WEB-INF/resources/ko.lang.php
WEB-INF/resources/nl.lang.php
WEB-INF/resources/no.lang.php
WEB-INF/resources/pl.lang.php
WEB-INF/resources/pt-br.lang.php
WEB-INF/resources/pt.lang.php
WEB-INF/resources/ro.lang.php
WEB-INF/resources/ru.lang.php
WEB-INF/resources/sk.lang.php
WEB-INF/resources/sl.lang.php
WEB-INF/resources/sr.lang.php
WEB-INF/resources/sv.lang.php
WEB-INF/resources/tr.lang.php
WEB-INF/resources/zh-cn.lang.php
WEB-INF/resources/zh-tw.lang.php
WEB-INF/templates/footer.tpl
WEB-INF/templates/group_delete.tpl
WEB-INF/templates/group_edit.tpl
group_delete.php
group_edit.php

index af4bc1d..8b280c8 100644 (file)
@@ -513,6 +513,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 // 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'De',
 'form.mail.to' => 'Per a',
index d907c6e..f167910 100644 (file)
@@ -527,6 +527,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 // 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Od',
 'form.mail.to' => 'Komu',
index 4d94ccc..4d28aa3 100644 (file)
@@ -474,6 +474,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Fra',
 'form.mail.to' => 'Til',
index eb5a648..1f1b4f1 100644 (file)
@@ -471,6 +471,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 'form.profile.plugins' => 'Erweiterungen',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Von',
 'form.mail.to' => 'An',
index 298a575..8543064 100644 (file)
@@ -449,6 +449,9 @@ $i18n_key_words = array(
 'form.profile.allow_ip' => 'Allow IP',
 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'From',
 'form.mail.to' => 'To',
index e79f3d4..faf8d4a 100644 (file)
@@ -528,6 +528,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 // 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'De',
 'form.mail.to' => 'Para',
index 1187ed7..85a1f07 100644 (file)
@@ -523,6 +523,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 // 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Kellelt',
 'form.mail.to' => 'Kellele',
index 3539f35..47f3f56 100644 (file)
@@ -500,6 +500,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 'form.profile.plugins' => 'پلاگین ها',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'از',
 'form.mail.to' => 'به',
index 7ff1bc1..20d882e 100644 (file)
@@ -481,6 +481,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 'form.profile.plugins' => 'Lisäosat',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Lähettäjä',
 'form.mail.to' => 'Vastaanottaja',
index 1456edc..249acbd 100644 (file)
@@ -470,6 +470,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'De',
 'form.mail.to' => 'À',
index 2d2d0d5..1b78e55 100644 (file)
@@ -452,6 +452,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 'form.profile.plugins' => 'Πρόσθετα',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Από',
 'form.mail.to' => 'Προς',
index 6cfccd8..92450b5 100644 (file)
@@ -507,6 +507,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 'form.profile.plugins' => 'תוספים',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'מאת',
 'form.mail.to' => 'אל',
index f897844..7510442 100644 (file)
@@ -516,6 +516,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 // 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Feladó',
 'form.mail.to' => 'Címzett',
index 8a62db5..7d4c79a 100644 (file)
@@ -468,6 +468,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 'form.profile.plugins' => 'Plugin',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Da',
 'form.mail.to' => 'A',
index aad7afe..636f2dd 100644 (file)
@@ -519,6 +519,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 // 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'から',
 'form.mail.to' => 'まで',
index ca50b7e..5e621fe 100644 (file)
@@ -517,6 +517,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 // 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => '부터',
 'form.mail.to' => '까지', // TODO: is this correct? The meaning is that we send an email TO this person.
index 9841116..7fdae20 100644 (file)
@@ -448,6 +448,10 @@ $i18n_key_words = array(
 'form.profile.allow_ip' => 'Toegestane IP adressen',
 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Van',
 'form.mail.to' => 'Aan',
index d6c6fbb..2cfb3ad 100644 (file)
@@ -516,6 +516,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 // 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Fra',
 'form.mail.to' => 'Til',
index 2c1210e..7fc6fdc 100644 (file)
@@ -483,6 +483,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 'form.profile.plugins' => 'Dodatkowe moduły',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Od',
 'form.mail.to' => 'Do',
index ad7d5d1..bdc7721 100644 (file)
@@ -478,6 +478,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'De',
 'form.mail.to' => 'Para',
index a5139b7..5b9c4db 100644 (file)
@@ -500,6 +500,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 // 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'De',
 'form.mail.to' => 'Para',
index 9b068a7..93f00f7 100644 (file)
@@ -522,6 +522,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 // 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'De la',
 'form.mail.to' => 'Catre',
index 1399049..ad71412 100644 (file)
@@ -446,6 +446,9 @@ $i18n_key_words = array(
 'form.profile.allow_ip' => 'Разрешить доступ с IP',
 'form.profile.plugins' => 'Плагины',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+'form.group_delete.hint' => 'Вы уверены, что хотите удалить всю группу?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'От',
 'form.mail.to' => 'Кому',
index 8fed200..0414d22 100644 (file)
@@ -498,6 +498,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 'form.profile.plugins' => 'Doplnkové moduly',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Od',
 'form.mail.to' => 'Komu',
index 8c00629..f1731ab 100644 (file)
@@ -496,6 +496,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 // 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Od',
 'form.mail.to' => 'Za',
index 6aede0a..1c98dc9 100644 (file)
@@ -482,6 +482,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 'form.profile.plugins' => 'Dodaci',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Forma mejla. Pogledajte primer na https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Od',
 'form.mail.to' => 'Za',
index ad943a3..6348480 100644 (file)
@@ -477,6 +477,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 'form.profile.plugins' => 'Tillägg',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Från',
 'form.mail.to' => 'Till',
index fcbd981..06d21c2 100644 (file)
@@ -535,6 +535,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 // 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => 'Kimden',
 'form.mail.to' => 'Kime',
index b1a1bda..d299b8e 100644 (file)
@@ -503,6 +503,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 // 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => '从',
 'form.mail.to' => '到',
index a070b1a..c28dd02 100644 (file)
@@ -511,6 +511,10 @@ $i18n_key_words = array(
 // 'form.profile.allow_ip' => 'Allow IP',
 // 'form.profile.plugins' => 'Plugins',
 
+// Deleting Group form. See example at https://timetracker.anuko.com/delete_group.php
+// TODO: translate the following.
+// 'form.group_delete.hint' => 'Are you sure you want to delete the entire group?',
+
 // Mail form. See example at https://timetracker.anuko.com/report_send.php when emailing a report.
 'form.mail.from' => '從',
 'form.mail.to' => '到',
index 6ba9e4f..e4b6991 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.87.4252 | 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.88.4253 | 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>
index 57164d4..a14373f 100644 (file)
@@ -3,6 +3,8 @@
   <tr>
     <td>
       <table cellspacing="0" cellpadding="0" border="0">
+        <tr><td colspan="2">{$i18n.form.group_delete.hint}</td></tr>
+        <tr><td>&nbsp;</td></tr>
         <tr>
           <td colspan="2" align="center"><b>{$group_to_delete|escape}</b></td>
         </tr>
index 7cb8d2e..aba5ea6 100644 (file)
@@ -1,4 +1,6 @@
 <script>
+function chLocation(newLocation) { document.location = newLocation; }
+
 // handleTaskRequiredCheckbox - controls visibility of the Task Required checkbox.
 function handleTaskRequiredCheckbox() {
   var taskRequiredCheckbox = document.getElementById("task_required");
@@ -243,7 +245,7 @@ function handlePluginCheckboxes() {
             <td colspan="2">&nbsp;</td>
           </tr>
           <tr>
-            <td colspan="2" height="50" align="center">{$forms.groupForm.btn_save.control}</td>
+            <td colspan="2" height="50" align="center">{$forms.groupForm.btn_save.control} {$forms.groupForm.btn_delete.control}</td>
           </tr>
         </table>
       </td>
index 65875fa..6aa0d11 100644 (file)
 
 require_once('initialize.php');
 import('form.Form');
+import('ttAdmin');
 
 // Access checks.
 if (!ttAccessAllowed('delete_group')) {
   header('Location: access_denied.php');
   exit();
 }
-// End of access checks.
-
-// TODO: refactor this... and the template.
 $group_id = (int)$request->getParameter('id');
+if ($user->group_id != $group_id) {
+  header('Location: access_denied.php');
+  exit();
+}
+// End of access checks.
 
+// Note: reuse ttAdmin class here, simply because deleting a group
+// is a complicated task.
 $admin = new ttAdmin();
 $group_details = $admin->getGroupDetails($group_id);
 $group_name = $group_details['group_name'];
@@ -50,16 +55,17 @@ $form->addInput(array('type'=>'submit','name'=>'btn_cancel','value'=>$i18n->get(
 
 if ($request->isPost()) {
   if ($request->getParameter('btn_delete')) {
-    $result = $admin->markGroupDeleted($group_id);
-    if ($result) {
-      header('Location: admin_groups.php');
+    if ($admin->markGroupDeleted($group_id)) {
+      $auth->doLogout();
+      session_unset();
+      header('Location: login.php');
       exit();
     } else
       $err->add($i18n->get('error.db'));
   }
 
   if ($request->getParameter('btn_cancel')) {
-    header('Location: admin_groups.php');
+    header('Location: group_edit.php');
     exit();
   }
 } // isPost
@@ -67,5 +73,5 @@ if ($request->isPost()) {
 $smarty->assign('group_to_delete', $group_name);
 $smarty->assign('forms', array($form->getName()=>$form->toArray()));
 $smarty->assign('title', $i18n->get('title.delete_group'));
-$smarty->assign('content_page_name', 'admin_group_delete.tpl');
+$smarty->assign('content_page_name', 'group_delete.tpl');
 $smarty->display('index.tpl');
index 2b87649..91b2b68 100644 (file)
@@ -208,8 +208,16 @@ $form->addInput(array('type'=>'checkbox','name'=>'locking','value'=>$cl_locking,
 $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 ($user->can('delete_group')) $form->addInput(array('type'=>'submit','name'=>'btn_delete','value'=>$i18n->get('button.delete')));
 
 if ($request->isPost()) {
+
+  if ($request->getParameter('btn_delete')) {
+    // Delete button pressed, redirect.
+    header('Location: group_delete.php?id='.$user->group_id);
+    exit();
+  }
+
   // Validate user input.
   if (!ttValidString($cl_group, true)) $err->add($i18n->get('error.field'), $i18n->get('label.group_name'));
   if (!ttValidString($cl_currency, true)) $err->add($i18n->get('error.field'), $i18n->get('label.currency'));