From 14a6ab5e563acb66d090c6c291b5d51b1a31fae7 Mon Sep 17 00:00:00 2001 From: Nik Okuntseff Date: Wed, 27 Feb 2019 19:42:10 +0000 Subject: [PATCH] Started redesign of timesheets feature. --- WEB-INF/lib/ttRoleHelper.class.php | 2 +- WEB-INF/lib/ttTimesheetHelper.class.php | 15 ++++----------- WEB-INF/templates/footer.tpl | 2 +- WEB-INF/templates/header.tpl | 2 +- WEB-INF/templates/timesheet_add.tpl | 8 ++++++++ dbinstall.php | 10 ++++++---- mysql.sql | 4 ++-- reports.php | 6 ++---- timesheet_add.php | 4 ++++ timesheet_view.php | 2 +- timesheets.php | 4 ++-- 11 files changed, 32 insertions(+), 27 deletions(-) diff --git a/WEB-INF/lib/ttRoleHelper.class.php b/WEB-INF/lib/ttRoleHelper.class.php index c45d4d3f..c03368f9 100644 --- a/WEB-INF/lib/ttRoleHelper.class.php +++ b/WEB-INF/lib/ttRoleHelper.class.php @@ -189,7 +189,7 @@ class ttRoleHelper { $mdb2 = getConnection(); - $rights_client = 'view_client_reports,view_client_timesheets,view_client_invoices,manage_own_settings'; + $rights_client = 'view_client_reports,view_client_invoices,manage_own_settings'; $rights_user = 'track_own_time,track_own_expenses,view_own_reports,view_own_timesheets,manage_own_timesheets,view_own_charts,view_own_projects,view_own_tasks,manage_own_settings,view_users'; $rights_supervisor = $rights_user.',track_time,track_expenses,view_reports,approve_reports,view_timesheets,manage_timesheets,approve_timesheets,view_charts,view_own_clients,override_punch_mode,override_date_lock,override_own_date_lock,swap_roles'; $rights_comanager = $rights_supervisor.',manage_own_account,manage_users,manage_projects,manage_tasks,manage_custom_fields,manage_clients,manage_invoices,override_allow_ip,manage_basic_settings,view_all_reports'; diff --git a/WEB-INF/lib/ttTimesheetHelper.class.php b/WEB-INF/lib/ttTimesheetHelper.class.php index 05832657..636504e3 100644 --- a/WEB-INF/lib/ttTimesheetHelper.class.php +++ b/WEB-INF/lib/ttTimesheetHelper.class.php @@ -285,17 +285,10 @@ class ttTimesheetHelper { global $user; - // Step 1. - // A client must have view_client_timesheets and - // aser must be assigned to one of client projects. - if ($user->isClient()) { - if (!$user->can('view_client_timesheets')) - return false; - $valid_users = ttGroupHelper::getUsersForClient($user->client_id); - $v = 2; - } - - return true; + // TODO: we are currently re-designing timesheets. + // Clients are not supposed to view them at all. + // And the post will change on_behalf user, to keep things consistent. + return false; } // getReportOptions prepares $options array to be used with ttReportHelper diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index a9861f6a..25f41dec 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@
- + + + + + + + + diff --git a/dbinstall.php b/dbinstall.php index d7f90cb8..09d55292 100644 --- a/dbinstall.php +++ b/dbinstall.php @@ -972,7 +972,7 @@ if ($_POST) { print "Updated $tt_expense_items_updated tt_expense_items records...
\n"; } - if ($_POST["convert11797to11845"]) { + if ($_POST["convert11797to11846"]) { ttExecute("ALTER TABLE `tt_fav_reports` CHANGE `group_by` `group_by1` varchar(20) default NULL"); ttExecute("ALTER TABLE `tt_fav_reports` ADD `group_by2` varchar(20) default NULL AFTER `group_by1`"); ttExecute("ALTER TABLE `tt_fav_reports` ADD `group_by3` varchar(20) default NULL AFTER `group_by2`"); @@ -1100,6 +1100,8 @@ if ($_POST) { ttExecute("ALTER TABLE `tt_fav_reports` ADD `show_timesheet` tinyint(4) NOT NULL default 0 AFTER `show_project`"); ttExecute("ALTER TABLE `tt_fav_reports` ADD `show_approved` tinyint(4) NOT NULL default 0 AFTER `show_note`"); ttExecute("UPDATE `tt_site_config` SET param_value = '1.18.45', modified = now() where param_name = 'version_db' and param_value = '1.18.44'"); + ttExecute("update `tt_roles` inner join `tt_site_config` sc on (sc.param_name = 'version_db' and sc.param_value = '1.18.45') set rights = replace(rights, 'view_client_timesheets,', '')"); + ttExecute("UPDATE `tt_site_config` SET param_value = '1.18.46', modified = now() where param_name = 'version_db' and param_value = '1.18.45'"); } if ($_POST["cleanup"]) { @@ -1148,7 +1150,7 @@ if ($_POST) {

DB Install

 Anuko Time Tracker 1.18.45.4789 | Copyright © Anuko | +  Anuko Time Tracker 1.18.46.4790 | Copyright © Anuko | {$i18n.footer.credits} | {$i18n.footer.license} | {$i18n.footer.improve} diff --git a/WEB-INF/templates/header.tpl b/WEB-INF/templates/header.tpl index 385f8a85..a89d60f8 100644 --- a/WEB-INF/templates/header.tpl +++ b/WEB-INF/templates/header.tpl @@ -115,7 +115,7 @@ {if $user->exists() && ($user->can('view_own_reports') || $user->can('view_reports') || $user->can('view_all_reports') || $user->can('view_client_reports'))} {if !$user->isClient()}·{/if} {$i18n.menu.reports} {/if} - {if $user->exists() && $user->isPluginEnabled('ts') && ($user->can('view_own_timesheets') || $user->can('view_timesheets') || $user->can('view_all_timesheets') || $user->can('view_client_timesheets'))} + {if $user->exists() && $user->isPluginEnabled('ts') && ($user->can('view_own_timesheets') || $user->can('view_timesheets') || $user->can('view_all_timesheets'))} · {$i18n.menu.timesheets} {/if} {if $user->exists() && $user->isPluginEnabled('iv') && ($user->can('manage_invoices') || $user->can('view_client_invoices'))} diff --git a/WEB-INF/templates/timesheet_add.tpl b/WEB-INF/templates/timesheet_add.tpl index b475af0e..e24a36b3 100644 --- a/WEB-INF/templates/timesheet_add.tpl +++ b/WEB-INF/templates/timesheet_add.tpl @@ -7,6 +7,14 @@ {$i18n.label.thing_name} (*): {$forms.timesheetForm.timesheet_name.control}
{$i18n.label.start_date} (*):{$forms.timesheetForm.start.control}
{$i18n.label.end_date} (*):{$forms.timesheetForm.finish.control}
{$i18n.label.comment}: {$forms.timesheetForm.submitter_comment.control}
-
Create database structure (v1.18.45) + Create database structure (v1.18.46)
(applies only to new installations, do not execute when updating)
@@ -1193,8 +1195,8 @@ if ($_POST) { - Update database structure (v1.17.97 to v1.18.45) - + Update database structure (v1.17.97 to v1.18.46) + diff --git a/mysql.sql b/mysql.sql index 1747b590..d6cb375f 100644 --- a/mysql.sql +++ b/mysql.sql @@ -75,7 +75,7 @@ create unique index role_idx on tt_roles(group_id, rank, status); # Insert site-wide roles - site administrator and top manager. INSERT INTO `tt_roles` (`group_id`, `name`, `rank`, `rights`) VALUES (0, 'Site administrator', 1024, 'administer_site'); -INSERT INTO `tt_roles` (`group_id`, `name`, `rank`, `rights`) VALUES (0, 'Top manager', 512, 'track_own_time,track_own_expenses,view_own_reports,view_own_timesheets,manage_own_timesheets,view_own_charts,view_own_projects,view_own_tasks,manage_own_settings,view_users,view_client_reports,view_client_timesheets,view_client_invoices,track_time,track_expenses,view_reports,approve_reports,view_timesheets,manage_timesheets,approve_timesheets,view_charts,view_own_clients,override_punch_mode,override_own_punch_mode,override_date_lock,override_own_date_lock,swap_roles,manage_own_account,manage_users,manage_projects,manage_tasks,manage_custom_fields,manage_clients,manage_invoices,override_allow_ip,manage_basic_settings,view_all_reports,view_all_timesheets,manage_all_timesheets,manage_features,manage_advanced_settings,manage_roles,export_data,approve_all_reports,approve_all_timesheets,manage_subgroups,view_client_unapproved,delete_group'); +INSERT INTO `tt_roles` (`group_id`, `name`, `rank`, `rights`) VALUES (0, 'Top manager', 512, 'track_own_time,track_own_expenses,view_own_reports,view_own_timesheets,manage_own_timesheets,view_own_charts,view_own_projects,view_own_tasks,manage_own_settings,view_users,view_client_reports,view_client_invoices,track_time,track_expenses,view_reports,approve_reports,view_timesheets,manage_timesheets,approve_timesheets,view_charts,view_own_clients,override_punch_mode,override_own_punch_mode,override_date_lock,override_own_date_lock,swap_roles,manage_own_account,manage_users,manage_projects,manage_tasks,manage_custom_fields,manage_clients,manage_invoices,override_allow_ip,manage_basic_settings,view_all_reports,view_all_timesheets,manage_all_timesheets,manage_features,manage_advanced_settings,manage_roles,export_data,approve_all_reports,approve_all_timesheets,manage_subgroups,view_client_unapproved,delete_group'); # @@ -524,4 +524,4 @@ CREATE TABLE `tt_site_config` ( PRIMARY KEY (`param_name`) ); -INSERT INTO `tt_site_config` (`param_name`, `param_value`, `created`) VALUES ('version_db', '1.18.45', now()); # TODO: change when structure changes. +INSERT INTO `tt_site_config` (`param_name`, `param_value`, `created`) VALUES ('version_db', '1.18.46', now()); # TODO: change when structure changes. diff --git a/reports.php b/reports.php index 5700025c..fc77e091 100644 --- a/reports.php +++ b/reports.php @@ -193,8 +193,7 @@ if ($showApproved) { // Add timesheet assignment selector. $showTimesheetDropdown = $user->isPluginEnabled('ts') && - ($user->can('view_own_timesheets') || $user->can('view_timesheets') || - $user->can('view_all_timesheets') || ($user->can('view_client_timesheets'))); + ($user->can('view_own_timesheets') || $user->can('view_timesheets') || $user->can('view_all_timesheets')); if ($showTimesheetDropdown) { $form->addInput(array('type'=>'combobox', 'name'=>'timesheet', @@ -208,8 +207,7 @@ if ($showTimesheetDropdown) { )); } $showTimesheetCheckbox = $user->isPluginEnabled('ts') && - ($user->can('view_own_timesheets') || $user->can('view_timesheets') || - $user->can('view_all_timesheets') || $user->can('view_client_timesheets')); + ($user->can('view_own_timesheets') || $user->can('view_timesheets') || $user->can('view_all_timesheets')); // Add user table. $showUsers = $user->can('view_reports') || $user->can('view_all_reports') || $user->isClient(); diff --git a/timesheet_add.php b/timesheet_add.php index 9e6b9acd..1ab4b704 100644 --- a/timesheet_add.php +++ b/timesheet_add.php @@ -52,6 +52,10 @@ if ($request->isPost()) { $form = new Form('timesheetForm'); $form->addInput(array('type'=>'text','maxlength'=>'100','name'=>'timesheet_name','style'=>'width: 250px;','value'=>$cl_name)); + +$form->addInput(array('type'=>'datefield','maxlength'=>'20','name'=>'start','value'=>$cl_start)); +$form->addInput(array('type'=>'datefield','maxlength'=>'20','name'=>'finish','value'=>$cl_finish)); + $form->addInput(array('type'=>'textarea','name'=>'submitter_comment','style'=>'width: 250px; height: 40px;','value'=>$cl_comment)); $form->addInput(array('type'=>'submit','name'=>'btn_add','value'=>$i18n->get('button.add'))); diff --git a/timesheet_view.php b/timesheet_view.php index 27956c9d..e86b2df7 100644 --- a/timesheet_view.php +++ b/timesheet_view.php @@ -30,7 +30,7 @@ require_once('initialize.php'); import('ttTimesheetHelper'); // Access checks. -if (!(ttAccessAllowed('view_own_timesheets') || ttAccessAllowed('view_timesheets') || ttAccessAllowed('view_all_timesheets') || ttAccessAllowed('view_client_timesheets'))) { +if (!(ttAccessAllowed('view_own_timesheets') || ttAccessAllowed('view_timesheets') || ttAccessAllowed('view_all_timesheets'))) { header('Location: access_denied.php'); exit(); } diff --git a/timesheets.php b/timesheets.php index 672e8597..546a7b63 100644 --- a/timesheets.php +++ b/timesheets.php @@ -32,7 +32,7 @@ import('ttGroupHelper'); import('ttTimesheetHelper'); // Access checks. -if (!(ttAccessAllowed('view_own_timesheets') || ttAccessAllowed('view_timesheets') || ttAccessAllowed('view_all_timesheets') || ttAccessAllowed('view_client_timesheets'))) { +if (!(ttAccessAllowed('view_own_timesheets') || ttAccessAllowed('view_timesheets') || ttAccessAllowed('view_all_timesheets'))) { header('Location: access_denied.php'); exit(); } @@ -71,7 +71,7 @@ $group_id = $user->getGroup(); // Elements of timesheetsForm. $form = new Form('timesheetsForm'); -if ($user->can('view_timesheets') || $user->can('view_all_timesheets') || $user->can('view_client_timesheets')) { +if ($user->can('view_timesheets') || $user->can('view_all_timesheets')) { // Prepare user list for dropdown. if ($notClient) { $rank = $user->can('view_all_timesheets') ? MAX_RANK : $user->getMaxRankForGroup($group_id); -- 2.20.1