diff --git a/app/ui/issues.md b/app/ui/issues.md new file mode 100644 index 0000000..58ab6fb --- /dev/null +++ b/app/ui/issues.md @@ -0,0 +1,114 @@ +# 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 + +--- diff --git a/ui/partials/ticket_item.html b/app/ui/partials/ticket_item.html similarity index 100% rename from ui/partials/ticket_item.html rename to app/ui/partials/ticket_item.html diff --git a/ui/parts/clipboard.html b/app/ui/parts/clipboard.html similarity index 100% rename from ui/parts/clipboard.html rename to app/ui/parts/clipboard.html diff --git a/ui/session/error.html b/app/ui/session/error.html similarity index 100% rename from ui/session/error.html rename to app/ui/session/error.html diff --git a/ui/templates/layout.html b/app/ui/templates/layout.html similarity index 98% rename from ui/templates/layout.html rename to app/ui/templates/layout.html index 1f77bce..e9e83c1 100644 --- a/ui/templates/layout.html +++ b/app/ui/templates/layout.html @@ -92,7 +92,7 @@
- +
diff --git a/ui/views/admin/index.html b/app/ui/views/admin/index.html similarity index 100% rename from ui/views/admin/index.html rename to app/ui/views/admin/index.html diff --git a/ui/views/admin/priorities/create.html b/app/ui/views/admin/priorities/create.html similarity index 100% rename from ui/views/admin/priorities/create.html rename to app/ui/views/admin/priorities/create.html diff --git a/ui/views/admin/priorities/index.html b/app/ui/views/admin/priorities/index.html similarity index 100% rename from ui/views/admin/priorities/index.html rename to app/ui/views/admin/priorities/index.html diff --git a/ui/views/attachment/index.html b/app/ui/views/attachment/index.html similarity index 60% rename from ui/views/attachment/index.html rename to app/ui/views/attachment/index.html index 18fa0a0..0c555fe 100644 --- a/ui/views/attachment/index.html +++ b/app/ui/views/attachment/index.html @@ -1,9 +1,8 @@ -
-
-

Attachments

-
- - +
+

Attachments

+
+ + @@ -34,23 +33,22 @@ - -
-
-
-
- - - - -
-
- -
+ +
+ +
+
+ + + +
- -
+
+ +
+
+
\ No newline at end of file diff --git a/ui/views/comments/view.html b/app/ui/views/comments/view.html similarity index 50% rename from ui/views/comments/view.html rename to app/ui/views/comments/view.html index e628487..05d1332 100644 --- a/ui/views/comments/view.html +++ b/app/ui/views/comments/view.html @@ -1,28 +1,27 @@
-
+

Comments

-
-
-
- - -
-
-
-
- {{ @comment.author_name}} - {{ @comment.created_at }} +
-
- {{ @comment.comment | raw }} +
+
+ {{ @comment.author_name}} + {{ @comment.created_at }} +
+
+ {{ @comment.comment | raw }} +
-
diff --git a/app/ui/views/dashboard.html b/app/ui/views/dashboard.html new file mode 100644 index 0000000..e5d7865 --- /dev/null +++ b/app/ui/views/dashboard.html @@ -0,0 +1,3 @@ +

Dashboard

+ + \ No newline at end of file diff --git a/ui/views/home.html b/app/ui/views/home.html similarity index 100% rename from ui/views/home.html rename to app/ui/views/home.html diff --git a/ui/views/kb/create.html b/app/ui/views/kb/create.html similarity index 100% rename from ui/views/kb/create.html rename to app/ui/views/kb/create.html diff --git a/ui/views/kb/edit.html b/app/ui/views/kb/edit.html similarity index 100% rename from ui/views/kb/edit.html rename to app/ui/views/kb/edit.html diff --git a/ui/views/kb/index.html b/app/ui/views/kb/index.html similarity index 100% rename from ui/views/kb/index.html rename to app/ui/views/kb/index.html diff --git a/ui/views/kb/view.html b/app/ui/views/kb/view.html similarity index 100% rename from ui/views/kb/view.html rename to app/ui/views/kb/view.html diff --git a/ui/views/login.html b/app/ui/views/login.html similarity index 100% rename from ui/views/login.html rename to app/ui/views/login.html diff --git a/ui/views/project/create.html b/app/ui/views/project/create.html similarity index 100% rename from ui/views/project/create.html rename to app/ui/views/project/create.html diff --git a/ui/views/project/edit.html b/app/ui/views/project/edit.html similarity index 100% rename from ui/views/project/edit.html rename to app/ui/views/project/edit.html diff --git a/ui/views/project/index.html b/app/ui/views/project/index.html similarity index 100% rename from ui/views/project/index.html rename to app/ui/views/project/index.html diff --git a/ui/views/project/view.html b/app/ui/views/project/view.html similarity index 100% rename from ui/views/project/view.html rename to app/ui/views/project/view.html diff --git a/ui/views/tag/create.html b/app/ui/views/tag/create.html similarity index 100% rename from ui/views/tag/create.html rename to app/ui/views/tag/create.html diff --git a/ui/views/tag/index.html b/app/ui/views/tag/index.html similarity index 100% rename from ui/views/tag/index.html rename to app/ui/views/tag/index.html diff --git a/ui/views/ticket/create.html b/app/ui/views/ticket/create.html similarity index 100% rename from ui/views/ticket/create.html rename to app/ui/views/ticket/create.html diff --git a/ui/views/ticket/edit.html b/app/ui/views/ticket/edit.html similarity index 95% rename from ui/views/ticket/edit.html rename to app/ui/views/ticket/edit.html index 01b4457..6df28c0 100644 --- a/ui/views/ticket/edit.html +++ b/app/ui/views/ticket/edit.html @@ -61,6 +61,9 @@ options="{{@statuses}}" option_value="id" option_name="name" selected="{{@ticket.status_id}}">
+ +
+
@@ -128,9 +131,10 @@
- - - + + + +

{{ @ticket.created_at }}

{{ @ticket.description | raw }}
+
+ +
-
- - {{@tag.name}} - +
Tags +
+ + +
+
+ + {{@tag.name}} + +
-
- - - - - - - - - - -
PropertyValue
{{@key}} {{@value}}
+
+
+
+
Projects +
+
+
Assignees
+ +
+

Assigned User

+

{{ @assigned_user.display_name ?: @assigned_user.username }}

+
+
+
Participants
+
Time Tracker?
+
Dependencies
+

Reference:

+ + Delete
@@ -84,12 +101,6 @@
- - -
- - -