From: Nik Okuntseff Date: Tue, 27 Mar 2018 23:17:04 +0000 (+0000) Subject: Split profile page into two for account and group settings to reduce complexity. X-Git-Tag: timetracker_1.19-1~914 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=1955bb54c5569f779a16eb3b8de9b4684b5f11b4;p=timetracker.git Split profile page into two for account and group settings to reduce complexity. --- diff --git a/WEB-INF/resources/en.lang.php b/WEB-INF/resources/en.lang.php index 732141a4..1613fec9 100644 --- a/WEB-INF/resources/en.lang.php +++ b/WEB-INF/resources/en.lang.php @@ -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', diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index e939e021..35039df1 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@
-
 Anuko Time Tracker 1.17.79.4192 | Copyright © Anuko | +  Anuko Time Tracker 1.17.80.4193 | Copyright © Anuko | {$i18n.footer.credits} | {$i18n.footer.license} | {$i18n.footer.improve} diff --git a/WEB-INF/templates/group_edit.tpl b/WEB-INF/templates/group_edit.tpl new file mode 100644 index 00000000..9b341b67 --- /dev/null +++ b/WEB-INF/templates/group_edit.tpl @@ -0,0 +1,248 @@ + + +{$forms.groupForm.open} + +{if $user->canManageTeam()} +{include file="datetime_format_preview.tpl"} +{/if} + + + + + +
+ +{if $user->isManager() || ($user->canManageTeam() && !defined(MANAGER_ONLY_TEAM_SETTINGS))} + + + + + + + + + {if $user->can('manage_roles')} + + + + + {/if} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{if $user->isManager()} + + + + +{/if} + {* initialize preview text *} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{/if} + + + + + + + +
{$i18n.label.team_name}:{$forms.groupForm.team_name.control}
{$i18n.label.currency}:{$forms.groupForm.currency.control}
{$i18n.label.roles}:{$i18n.label.configure}
{$i18n.label.language}:{$forms.groupForm.lang.control}
{$i18n.label.decimal_mark}:{$forms.groupForm.decimal_mark.control}  
{$i18n.label.date_format}:{$forms.groupForm.date_format.control}  
{$i18n.label.time_format}:{$forms.groupForm.time_format.control}  
{$i18n.label.week_start}:{$forms.groupForm.start_week.control}
{$i18n.form.profile.show_holidays}:{$forms.groupForm.show_holidays.control} {$i18n.label.what_is_it}
{$i18n.form.profile.tracking_mode}:{$forms.groupForm.tracking_mode.control} {$forms.profileForm.task_required.control}
{$i18n.form.profile.record_type}:{$forms.groupForm.record_type.control}
{$i18n.form.profile.punch_mode}:{$forms.groupForm.punch_mode.control} {$i18n.label.what_is_it}
{$i18n.form.profile.allow_overlap}:{$forms.groupForm.allow_overlap.control} {$i18n.label.what_is_it}
{$i18n.form.profile.future_entries}:{$forms.groupForm.future_entries.control} {$i18n.label.what_is_it}
{$i18n.form.profile.uncompleted_indicators}:{$forms.groupForm.uncompleted_indicators.control} {$i18n.label.what_is_it}
{$i18n.label.bcc}:{$forms.groupForm.bcc_email.control} {$i18n.label.what_is_it}
  
{$i18n.form.profile.plugins}
 
{$forms.groupForm.charts.control}
{$forms.groupForm.clients.control} {$forms.profileForm.client_required.control}
{$forms.groupForm.invoices.control}
{$forms.groupForm.paid_status.control}
{$forms.groupForm.custom_fields.control} {$i18n.label.configure}
{$forms.groupForm.expenses.control} {$forms.profileForm.tax_expenses.control} {$i18n.label.configure}
{$forms.groupForm.notifications.control} {$i18n.label.configure}
{$forms.groupForm.locking.control} {$i18n.label.configure}
{$forms.groupForm.quotas.control} {$i18n.label.configure}
{$forms.groupForm.week_view.control} {$i18n.label.configure}
 
{$forms.groupForm.btn_save.control}
+
+{$forms.groupForm.close} diff --git a/WEB-INF/templates/header.tpl b/WEB-INF/templates/header.tpl index b74923ba..3ad3fb5f 100644 --- a/WEB-INF/templates/header.tpl +++ b/WEB-INF/templates/header.tpl @@ -85,6 +85,9 @@ {$i18n.menu.logout} · {if $user->can('manage_own_settings')} {$i18n.menu.profile} · + {/if} + {if $user->can('manage_basic_settings')} + {$i18n.menu.group} · {/if} {$i18n.menu.forum} · {$i18n.menu.help} diff --git a/WEB-INF/templates/profile_edit.tpl b/WEB-INF/templates/profile_edit.tpl index 244c6cb1..1fb04000 100644 --- a/WEB-INF/templates/profile_edit.tpl +++ b/WEB-INF/templates/profile_edit.tpl @@ -1,103 +1,5 @@ - - {$forms.profileForm.open} -{if $user->canManageTeam()} -{include file="datetime_format_preview.tpl"} -{/if} - - -{if $user->isManager() || ($user->canManageTeam() && !defined(MANAGER_ONLY_TEAM_SETTINGS))} - - - - - - - - - - - - {if $user->can('manage_roles')} - - - - - {/if} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{if $user->isManager()} - - - - -{/if} - {* initialize preview text *} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{/if} - diff --git a/group_edit.php b/group_edit.php new file mode 100644 index 00000000..0ce93582 --- /dev/null +++ b/group_edit.php @@ -0,0 +1,301 @@ +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'); diff --git a/profile_edit.php b/profile_edit.php index c64b95bd..9de1820e 100644 --- a/profile_edit.php +++ b/profile_edit.php @@ -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("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()) { @@ -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');
@@ -128,143 +30,6 @@ function handlePluginCheckboxes() { {$i18n.label.required_fields}
 
{$i18n.label.team_name}:{$forms.profileForm.team_name.control}
{$i18n.label.currency}:{$forms.profileForm.currency.control}
{$i18n.label.roles}:{$i18n.label.configure}
{$i18n.label.language}:{$forms.profileForm.lang.control}
{$i18n.label.decimal_mark}:{$forms.profileForm.decimal_mark.control}  
{$i18n.label.date_format}:{$forms.profileForm.date_format.control}  
{$i18n.label.time_format}:{$forms.profileForm.time_format.control}  
{$i18n.label.week_start}:{$forms.profileForm.start_week.control}
{$i18n.form.profile.show_holidays}:{$forms.profileForm.show_holidays.control} {$i18n.label.what_is_it}
{$i18n.form.profile.tracking_mode}:{$forms.profileForm.tracking_mode.control} {$forms.profileForm.task_required.control}
{$i18n.form.profile.record_type}:{$forms.profileForm.record_type.control}
{$i18n.form.profile.punch_mode}:{$forms.profileForm.punch_mode.control} {$i18n.label.what_is_it}
{$i18n.form.profile.allow_overlap}:{$forms.profileForm.allow_overlap.control} {$i18n.label.what_is_it}
{$i18n.form.profile.future_entries}:{$forms.profileForm.future_entries.control} {$i18n.label.what_is_it}
{$i18n.form.profile.uncompleted_indicators}:{$forms.profileForm.uncompleted_indicators.control} {$i18n.label.what_is_it}
{$i18n.label.bcc}:{$forms.profileForm.bcc_email.control} {$i18n.label.what_is_it}
  
{$i18n.form.profile.plugins}
 
{$forms.profileForm.charts.control}
{$forms.profileForm.clients.control} {$forms.profileForm.client_required.control}
{$forms.profileForm.invoices.control}
{$forms.profileForm.paid_status.control}
{$forms.profileForm.custom_fields.control} {$i18n.label.configure}
{$forms.profileForm.expenses.control} {$forms.profileForm.tax_expenses.control} {$i18n.label.configure}
{$forms.profileForm.notifications.control} {$i18n.label.configure}
{$forms.profileForm.locking.control} {$i18n.label.configure}
{$forms.profileForm.quotas.control} {$i18n.label.configure}
{$forms.profileForm.week_view.control} {$i18n.label.configure}