From 6cdff5151bba8cd6c8bd1bb90b1b2c18457ecb88 Mon Sep 17 00:00:00 2001 From: Nik Okuntseff Date: Mon, 26 Nov 2018 00:04:18 +0000 Subject: [PATCH] Added some comments clarifying the design approach. --- WEB-INF/lib/ttUser.class.php | 15 +++++++++++++++ WEB-INF/templates/footer.tpl | 2 +- projects.php | 7 ++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/WEB-INF/lib/ttUser.class.php b/WEB-INF/lib/ttUser.class.php index 5f97ae28..8e907c8a 100644 --- a/WEB-INF/lib/ttUser.class.php +++ b/WEB-INF/lib/ttUser.class.php @@ -388,6 +388,21 @@ class ttUser { // - The entire stack of groups all the way down to current on behalf group. // - All immediate children of the current on behalf group. // This allows user to navigate easily to home group, anything in between, and 1 level below. + // + // Note 1: group dropdown is, by design, to be placed on all pages where "relevant", + // such as users.php, projects.php, tasks.php, etc. But some features may be disabled + // in some groups. We should check for feature availability on group change + // in post and redirect to feature_disabled.php when this happens. + // This will allow us to keep dropdown content consistent on all pages. + // Filtering content of the dropdown does not seem right. + // + // Note 2: Menu should display according to $user home group settings. + // Pages, should look according to $user->behalfGroup settings (if set). + // For example, if home group allows tasks, menu should display Tasks, + // even when we are on behalf of a subgroup without tasks. + // + // Note 3: Language of all pages should be as in $user home group even when + // subgroups have a different language. function getGroupsForDropdown() { $mdb2 = getConnection(); diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index 8b162829..d037aa87 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@
-
 Anuko Time Tracker 1.18.28.4519 | Copyright © Anuko | +  Anuko Time Tracker 1.18.28.4520 | Copyright © Anuko | {$i18n.footer.credits} | {$i18n.footer.license} | {$i18n.footer.improve} diff --git a/projects.php b/projects.php index 3845db67..d149d841 100644 --- a/projects.php +++ b/projects.php @@ -35,7 +35,7 @@ if (!(ttAccessAllowed('view_own_projects') || ttAccessAllowed('manage_projects') header('Location: access_denied.php'); exit(); } -if (MODE_PROJECTS != $user->tracking_mode && MODE_PROJECTS_AND_TASKS != $user->tracking_mode) { +if (MODE_PROJECTS != $user->getTrackingMode() && MODE_PROJECTS_AND_TASKS != $user->getTrackingMode()) { header('Location: feature_disabled.php'); exit(); } @@ -48,6 +48,11 @@ if ($request->isPost() && !$user->isGroupValid($request->getParameter('group'))) if ($request->isPost()) { $group_id = $request->getParameter('group'); $user->setOnBehalfGroup($group_id); + // Projects feature may not be available in new group, check and redirect. + if (MODE_PROJECTS != $user->getTrackingMode() && MODE_PROJECTS_AND_TASKS != $user->getTrackingMode()) { + header('Location: feature_disabled.php'); + exit(); + } } else { $group_id = $user->getActiveGroup(); } -- 2.20.1