From 2d6cd5e48d385eaad0843cfed783aea1201c15ce Mon Sep 17 00:00:00 2001 From: tp_dhu Date: Sat, 3 May 2025 08:52:21 +0100 Subject: [PATCH] updated UI references in controllers --- app/controllers/Admin/HomeController.php | 2 +- .../Admin/TicketOptionsController.php | 6 +- app/controllers/AttachmentController.php | 4 +- app/controllers/AuthController.php | 4 +- app/controllers/BaseController.php | 2 +- app/controllers/CommentController.php | 2 +- app/controllers/DashboardController.php | 2 +- app/controllers/HomeController.php | 2 +- app/controllers/KBController.php | 16 +-- app/controllers/ProjectController.php | 16 +-- app/controllers/TagController.php | 8 +- app/controllers/TicketController.php | 10 +- app/controllers/UserController.php | 8 +- app/models/Ticket.php | 15 +++ issues.md | 114 ------------------ 15 files changed, 57 insertions(+), 154 deletions(-) delete mode 100644 issues.md diff --git a/app/controllers/Admin/HomeController.php b/app/controllers/Admin/HomeController.php index 4fe7ef1..2d2b146 100644 --- a/app/controllers/Admin/HomeController.php +++ b/app/controllers/Admin/HomeController.php @@ -6,6 +6,6 @@ class HomeController extends \BaseController { public function index($f3) { - $this->renderView('/ui/views/admin/index.html'); + $this->renderView('views/admin/index.html'); } } \ No newline at end of file diff --git a/app/controllers/Admin/TicketOptionsController.php b/app/controllers/Admin/TicketOptionsController.php index 3164c5f..924660f 100644 --- a/app/controllers/Admin/TicketOptionsController.php +++ b/app/controllers/Admin/TicketOptionsController.php @@ -12,7 +12,7 @@ class TicketOptionsController extends \BaseController $model = new \TicketPriority($this->getDB()); $priorities = $model->findAll(); - $this->renderView('/ui/views/admin/priorities/index.html', [ + $this->renderView('views/admin/priorities/index.html', [ 'priorities' => $priorities ]); } @@ -21,7 +21,7 @@ class TicketOptionsController extends \BaseController { $this->requireLogin(); $this->requireAdmin(); // Added admin check - $this->renderView('/ui/views/admin/priorities/create.html'); + $this->renderView('views/admin/priorities/create.html'); } public function createPriority() @@ -51,7 +51,7 @@ class TicketOptionsController extends \BaseController return; } - $this->renderView('/ui/views/admin/priorities/edit.html', [ + $this->renderView('views/admin/priorities/edit.html', [ 'priority' => $priority ]); } diff --git a/app/controllers/AttachmentController.php b/app/controllers/AttachmentController.php index 6a8f3b6..d744971 100644 --- a/app/controllers/AttachmentController.php +++ b/app/controllers/AttachmentController.php @@ -25,8 +25,8 @@ class AttachmentController { $f3->set('ticket_id', $ticket_id); $f3->set('attachments', $attachments); - $f3->set('content', '../ui/views/attachment/index.html'); - // echo \Template::instance()->render('../ui/templates/layout.html'); + $f3->set('content', 'views/attachment/index.html'); + // echo \Template::instance()->render('templates/layout.html'); echo \Template::instance()->render($f3->get('content')); } diff --git a/app/controllers/AuthController.php b/app/controllers/AuthController.php index 88f5713..18918a9 100644 --- a/app/controllers/AuthController.php +++ b/app/controllers/AuthController.php @@ -10,8 +10,8 @@ class AuthController { $f3->clear('SESSION.login_error'); // this can be in our controller base - $f3->set('content', '../ui/views/login.html'); - echo \Template::instance()->render('../ui/templates/layout.html'); + $f3->set('content', 'views/login.html'); + echo \Template::instance()->render('templates/layout.html'); $f3->clear('error'); } diff --git a/app/controllers/BaseController.php b/app/controllers/BaseController.php index b91fa5e..7194375 100644 --- a/app/controllers/BaseController.php +++ b/app/controllers/BaseController.php @@ -66,7 +66,7 @@ abstract class BaseController $this->f3->set('content', $viewPath); // render tempalte - echo \Template::instance()->render('../ui/templates/layout.html'); + echo \Template::instance()->render('templates/layout.html'); // clear SESSION.error $this->f3->clear('SESSION.error'); diff --git a/app/controllers/CommentController.php b/app/controllers/CommentController.php index 2f449b3..2a237fa 100644 --- a/app/controllers/CommentController.php +++ b/app/controllers/CommentController.php @@ -86,6 +86,6 @@ class CommentController { $comments = $results; $f3->set('comments', $comments); - echo \Template::instance()->render('../ui/views/comments/view.html'); + echo \Template::instance()->render('views/comments/view.html'); } } \ No newline at end of file diff --git a/app/controllers/DashboardController.php b/app/controllers/DashboardController.php index 1bc60c3..ee923cc 100644 --- a/app/controllers/DashboardController.php +++ b/app/controllers/DashboardController.php @@ -6,6 +6,6 @@ class DashboardController extends BaseController { $this->requireLogin(); - $this->renderView('/ui/views/dashboard.html'); + $this->renderView('views/dashboard.html'); } } \ No newline at end of file diff --git a/app/controllers/HomeController.php b/app/controllers/HomeController.php index 89cc3ea..c6e5dd0 100644 --- a/app/controllers/HomeController.php +++ b/app/controllers/HomeController.php @@ -4,7 +4,7 @@ class HomeController extends BaseController { public function display($f3){ - $this->renderView('/ui/views/home.html'); + $this->renderView('views/home.html'); } // ... diff --git a/app/controllers/KBController.php b/app/controllers/KBController.php index 180f07f..c631ab4 100644 --- a/app/controllers/KBController.php +++ b/app/controllers/KBController.php @@ -39,8 +39,8 @@ class KBController implements CRUD { // render $f3->set('articles', $articles); - $f3->set('content', '../ui/views/kb/index.html'); - echo \Template::instance()->render('../ui/templates/layout.html'); + $f3->set('content', 'views/kb/index.html'); + echo \Template::instance()->render('templates/layout.html'); $f3->clear('SESSION.error'); } @@ -56,8 +56,8 @@ class KBController implements CRUD { $f3->set('all_tags', $all_tags); // render - $f3->set('content', '../ui/views/kb/create.html'); - echo \Template::instance()->render('../ui/templates/layout.html'); + $f3->set('content', 'views/kb/create.html'); + echo \Template::instance()->render('templates/layout.html'); $f3->clear('SESSION.error'); } @@ -120,8 +120,8 @@ class KBController implements CRUD { ); // render - $f3->set('content', '../ui/views/kb/view.html'); - echo \Template::instance()->render('../ui/templates/layout.html'); + $f3->set('content', 'views/kb/view.html'); + echo \Template::instance()->render('templates/layout.html'); $f3->clear('SESSION.error'); } @@ -150,8 +150,8 @@ class KBController implements CRUD { // render $f3->set('js', 'kb_edit.js'); - $f3->set('content', '../ui/views/kb/edit.html'); - echo \Template::instance()->render('../ui/templates/layout.html'); + $f3->set('content', 'views/kb/edit.html'); + echo \Template::instance()->render('templates/layout.html'); $f3->clear('SESSION.error'); } diff --git a/app/controllers/ProjectController.php b/app/controllers/ProjectController.php index eda40cf..4cfa197 100644 --- a/app/controllers/ProjectController.php +++ b/app/controllers/ProjectController.php @@ -16,8 +16,8 @@ $f3->set('projects', $projects); - $f3->set('content', '../ui/views/project/index.html'); - echo \Template::instance()->render('../ui/templates/layout.html'); + $f3->set('content', 'views/project/index.html'); + echo \Template::instance()->render('templates/layout.html'); $f3->clear('SESSION.error'); } @@ -25,8 +25,8 @@ // create a new project public function createForm($f3){ $this->check_access($f3); - $f3->set('content', '../ui/views/project/create.html'); - echo \Template::instance()->render('../ui/templates/layout.html'); + $f3->set('content', 'views/project/create.html'); + echo \Template::instance()->render('templates/layout.html'); } @@ -47,16 +47,16 @@ $project = $result[0]; $f3->set('project', $project); - $f3->set('content', '../ui/views/project/view.html'); - echo \Template::instance()->render('../ui/templates/layout.html'); + $f3->set('content', 'views/project/view.html'); + echo \Template::instance()->render('templates/layout.html'); } // update project details public function editForm($f3){ $this->check_access($f3); - $f3->set('content', '../ui/views/project/edit.html'); - echo \Template::instance()->render('../ui/templates/layout.html'); + $f3->set('content', 'views/project/edit.html'); + echo \Template::instance()->render('templates/layout.html'); } diff --git a/app/controllers/TagController.php b/app/controllers/TagController.php index 6c1411f..f1046fc 100644 --- a/app/controllers/TagController.php +++ b/app/controllers/TagController.php @@ -14,15 +14,15 @@ class TagController implements CRUD { $tags = $db->exec('SELECT * FROM tags ORDER BY name ASC'); $f3->set('tags', $tags); - $f3->set('content', '../ui/views/tag/index.html'); - echo \Template::instance()->render('../ui/templates/layout.html'); + $f3->set('content', 'views/tag/index.html'); + echo \Template::instance()->render('templates/layout.html'); } public function createForm($f3){ $this->check_access($f3); - $f3->set('content', '../ui/views/tag/create.html'); - echo \Template::instance()->render('../ui/templates/layout.html'); + $f3->set('content', 'views/tag/create.html'); + echo \Template::instance()->render('templates/layout.html'); } public function create($f3){ diff --git a/app/controllers/TicketController.php b/app/controllers/TicketController.php index 1e33a32..74f1d5d 100644 --- a/app/controllers/TicketController.php +++ b/app/controllers/TicketController.php @@ -21,7 +21,7 @@ class TicketController extends BaseController implements CRUD { } // render - $this->renderView('../ui/views/ticket/index.html', + $this->renderView('views/ticket/index.html', ['tickets' => $tickets] ); @@ -36,10 +36,12 @@ class TicketController extends BaseController implements CRUD { $ticket_id = $f3->get('PARAMS.id'); $ticket_mapper = new Ticket($this->getDB()); $ticket = $ticket_mapper->findById($ticket_id); + $assigned_user = $ticket->getAssignedUser(); // render - $this->renderView('../ui/views/ticket/view.html', [ + $this->renderView('views/ticket/view.html', [ 'ticket' => $ticket, + 'assigned_user' => $assigned_user, 'attachments' => $ticket->attachments(), 'comments' => $ticket->comments(), 'parent_tickets' => $ticket->getParentTickets(), @@ -57,7 +59,7 @@ class TicketController extends BaseController implements CRUD { $statuses = (new TicketStatus($db))->findAll(); $this->requireLogin(); - $this->renderView('../ui/views/ticket/create.html',[ + $this->renderView('views/ticket/create.html',[ 'priorities' => $priorities, 'statuses' => $statuses ]); @@ -113,7 +115,7 @@ class TicketController extends BaseController implements CRUD { $priorities = (new TicketPriority($this->getDB()))->findAll(); $statuses = (new TicketStatus($this->getDB()))->findAll(); - $this->renderView('../ui/views/ticket/edit.html',[ + $this->renderView('views/ticket/edit.html',[ 'ticket' => $ticket, 'ticket_meta' => $ticket->getMeta(), 'priorities' => $priorities, diff --git a/app/controllers/UserController.php b/app/controllers/UserController.php index b893882..6748d3c 100644 --- a/app/controllers/UserController.php +++ b/app/controllers/UserController.php @@ -19,8 +19,8 @@ class UserController implements CRUD { ); $f3->set('users', $users); - $f3->set('content', '../ui/views/user/index.html'); - echo \Template::instance()->render('../ui/templates/layout.html'); + $f3->set('content', 'views/user/index.html'); + echo \Template::instance()->render('templates/layout.html'); } public function editForm($f3){ @@ -37,8 +37,8 @@ class UserController implements CRUD { $f3->reroute('/users'); } $f3->set('edit_user', $rows[0]); - $f3->set('content', '../ui/views/user/edit.html'); - echo \Template::instance()->render('../ui/templates/layout.html'); + $f3->set('content', 'views/user/edit.html'); + echo \Template::instance()->render('templates/layout.html'); } public function update($f3){ diff --git a/app/models/Ticket.php b/app/models/Ticket.php index fbd84b9..4f6ff88 100644 --- a/app/models/Ticket.php +++ b/app/models/Ticket.php @@ -219,5 +219,20 @@ class Ticket extends \DB\SQL\Mapper { ); } } + + public function getAssignedUser() + { + if(!$this->assigned_to){ + return null; + } + + $sql = ' + SELECT id, username, display_name + FROM users + WHERE id =? + '; + $user = $this->db->exec($sql, [$this->assigned_to]); + return $user[0]; + } } \ No newline at end of file diff --git a/issues.md b/issues.md deleted file mode 100644 index 58ab6fb..0000000 --- a/issues.md +++ /dev/null @@ -1,114 +0,0 @@ -# MVP Issues - -This issue list defines the work required to bring the `tp_servicedesk` Fat-Free PHP application to a beta-ready MVP for personal workload/project tracking. - ---- - -## ๐Ÿงฉ Ticketing System -- [ ] Display assigned user in ticket view -- [ ] Add user assignment capability in ticket create/edit forms -- [ ] Implement ticket filtering (by status, assignee, project) -- [ ] Improve UI feedback for ticket soft-delete -- [ ] Ensure metadata, attachments, and comments update properly on edit -- [ ] Add tag support for tickets (UI and DB updates) -- [ ] Implement ticket history for status/priority changes -- [ ] Add comment thread display on ticket edit view -- [ ] Update "new ticket" template to match the edit form -- [ ] Enable linking tickets using markdown shortcodes (e.g. `#ticket-id` autocomplete) - ---- - -## ๐Ÿ“‚ Project Management -- [ ] Implement `ProjectController::create()` and `update()` logic -- [ ] Add CRUD for: - - [ ] `project_tasks` (task list under project) - - [ ] `project_links` (related links/resources) - - [ ] `project_events` (project timeline/log) -- [ ] Show tickets related to a project in the project view page - ---- - -## ๐Ÿ“š Knowledge Base (KB) -- [ ] Display and edit tags for each article -- [ ] Show article creator and last updated info -- [ ] Add search suggestions or recent articles on main KB page - ---- - -## ๐Ÿ‘ค User Management -- [ ] Implement full CRUD in `Admin\UserController` -- [ ] Add role selection to user creation/edit forms -- [ ] Restrict sensitive actions (ticket edit/delete) to owner or admin - ---- - -## โš™๏ธ Admin Panel -- [ ] Complete admin routes and views for ticket status management -- [ ] Add dashboard widgets (open tickets count, recent updates, etc.) -- [ ] Create settings/config view to manage global app options - ---- - -## ๐Ÿ“ฆ UI & UX Polish -- [ ] Show success/error alerts for all user actions -- [ ] Apply consistent Bulma styling to forms, buttons, and messages -- [ ] Add loading indicators or skeletons on longer actions -- [ ] Embed `/public/test.md.php` JS markdown editor into edit/create ticket templates -- [ ] Add smart shortcuts to markdown editor: - - [ ] `#` opens ticket linking modal - - [ ] `@` opens user tagging modal - - [ ] `!a` opens hyperlink creation modal - ---- - -## ๐Ÿงช Quality Assurance -- [ ] Create fake/test data seeder -- [ ] Add DB integrity checks for tickets, users, and project FK links -- [ ] Manually test: - - [ ] Login/logout - - [ ] Ticket create/edit/delete - - [ ] KB CRUD - - [ ] Attachment upload/download -- [ ] Audit all routes and controllers for authentication and access checks - ---- - -## ๐Ÿ” Search & Indexing -- [ ] Improve full-text search to be smarter than `LIKE %{query}%` -- [ ] Add partial, fuzzy, and prioritised relevance to results (e.g. `title > tags > content`) - ---- - -## ๐Ÿ“… Timeline & Activity Views -- [ ] Create timeline view per ticket using: - - [ ] status/priority history - - [ ] comments - - [ ] attachments and other actions -- [ ] Build global timeline dashboard to see activity across system -- [ ] Implement calendar heatmap (e.g. GitHub-style) for activity tracking -- [ ] Add drilldown support from calendar to view specific actions on each day -- [ ] Add detailed log/summary of: - - [ ] ticket creation/updates - - [ ] project creation/updates - - [ ] assignments - - [ ] comments - - [ ] closures - ---- - -## ๐Ÿ” Security & Session -- [ ] Add CSRF protection for all POST forms -- [ ] Enforce permission checks on: - - [ ] Ticket edits - - [ ] Comment deletion - - [ ] Attachment deletion -- [ ] Add password reset flow or admin-reset function - ---- - -## ๐Ÿ“ˆ Post-MVP (Optional Enhancements) -- [ ] Ticket due dates and reminders -- [ ] Kanban or Gantt-style project view -- [ ] REST API endpoints - ----