johnnyq
326498c23c
Admin lists on the standard list pattern: Ticket Templates, Roles, API Keys, Taxes, Categories and Tags now have the full-size search with the dark button, Active and Archived pills with counts, sortable table-light column headings, paging through filter_footer.php with records per page, and the btn-light row menu, with old archived=1 links still opening Archived; Ticket Templates sorts by name, tasks, use or last use, gains a Last used column and moves Import, Export, the report and Starter templates onto the New button's split menu; Roles sorts by name with admin roles first, agents or last change; API Keys sorts by name, end date, agent or last use, with Active and Expired pills so a revoked key moves to Expired to be deleted; Taxes sorts by name, rate or use; Categories and Tags keep their kinds in the left nav with the pills beside the list, sort by name or use (and in order for the ordered category kinds), and page in PHP; dragging categories into order and Move up and Move down work on every page (reorder_categories takes offset); bulk actions move to the right of the search row; descriptions wrap so rows and their menus fit on a phone; the help lines above the lists are dropped, with a category kind's purpose on its nav link; apiKeyRows() removed as unused; category and tag redirects use show=archived; changelog updated
2026-10-18 02:26:56 -04:00
johnnyq
2a5533ea2b
Roles stage 3: roles and agents in the API and Admin > API Keys rebuilt; new api/v1/roles/read.php where an admin key reads every role with its level per module and agent count, archived on request, and any other key reads only its own user's role, and new api/v1/technicians/read.php listing agents with their role under Support at Read; API role refusals now say what the call needs and what the key's user has, naming the module, level and role, and technicians/time.php needs Read instead of Modify; Admin > API Keys shows each key's agent and role, what it can open and for which clients, whether it works (works until, expires in N days, expired, or won't work with the reason when its agent is disabled, archived, has no role or is missing) and when it was last used, with search by key or agent name; New and Edit windows show the picked agent's access as they are picked and offer only active agents, Create before ticking the copied box opens the Key tab, new keys default to a year and must end after today, and an expired key can be renamed and stay expired; handlers moved to functions/api_keys.php with validation, escaped messages and audit entries naming the agent and what an edit changed, fixing empty names on revoke, delete and bulk delete, a backslash shown for apostrophes in names, the bulk count of keys ticked rather than deleted, keys created already expired and expired keys that could not be renamed; database 3.1.7 adds api_keys.api_key_last_used_at, set at most once a minute in the configured timezone; changelog updated
2026-10-17 21:10:48 -04:00
johnnyq
59e75764f8
Empty states: one shared empty state on every list page, drawn by includes/inc_empty_state.php from each page's $empty_state through the new emptyStateHtml() in functions/format.php - a grey round tile with the list's icon, a title, a line on what goes there and the page's own New and Import buttons when nothing has been added, No X match with a Clear filters button that keeps the client, archived and the current tab when a search or filters leave nothing, Nothing in {tab} with the tab's description for an empty pill and a tick for pills that flag trouble, and No archived X for an empty archive; pills count as views rather than filters; replaces the pages' own empty blocks so a filtered-to-nothing list no longer shows two messages; files, notifications and racks use it in their own layouts; adds emptyStateFiltered(), emptyStateClearUrl() and emptyStatePill() and the .itflow-empty-state styles; changelog updated
2026-10-17 00:47:32 -04:00
johnnyq
9bfd26d57b
Add titles to icon-only buttons
...
- title on 294 icon-only buttons, named for what each one does
- aria-label on the 7 show-password buttons (title becomes the popover
header) and the portal mobile nav toggle
- Fix dead add-category button on products filter, credential bulk tag
button now preselects Credential, drop duplicate inner-icon titles
2026-10-08 17:12:21 -04:00
johnnyq
c07c10c610
Fix Guest Approve Modal Offscreen issue, added guest header and spruced up the UI a bit
2026-08-31 12:22:55 -04:00
johnnyq
d98b8bc427
Add ps-3 to table columns that don't have a checkbox and made sure all table listings conform
2026-08-29 19:45:28 -04:00
johnnyq
6df101c217
Css fixes
2026-08-16 22:25:05 -04:00
johnnyq
a084e37c39
Initial migration from AdminLTE 3 to 4, bootstrap 4 to 5
2026-08-14 13:22:11 -04:00
johnnyq
b3744e9ed5
More sweeps to replace select * with actual returned column names dramatically reduces php memory usage and speeds up processing dramatically especially in the crons since they run all the time
2026-08-06 13:10:23 -04:00
johnnyq
b3f959ac55
Use Short echo tags across the code
2026-07-28 18:47:52 -04:00
johnnyq
04bf3c234f
Read API credential decrypt password from body instead of query string
...
Keeps the credential decryption secret out of the URL, so it no longer lands in web-server access logs, proxy logs, or browser history. credentials/read.php now reads api_key_decrypt_password from the request body, matching create/update. Consumers reading decrypted credentials must send it in the body, not the query string.
2026-07-25 17:08:22 -04:00
johnnyq
c509b7f693
Add user-based RBAC for API keys
...
API keys now run as a user and inherit that user's module, operation, and client permissions. Drops per-key client scoping and removes existing keys (must be recreated). Adds an edit modal to change a key's user.
2026-07-25 16:50:58 -04:00
johnnyq
7bc47a58fe
Replace Function nullable_htmlentities() with just escapeHtml() and update all instances throughout
2026-07-14 17:10:45 -04:00
wrongecho
41df4c4b9f
API Keys - Revoke then Delete
2026-01-15 11:37:17 +00:00
johnnyq
0a30300bde
replace all instances of mysqli_fetch_array with mysqli_fetch_assoc for better performance and memory usage
2026-01-14 17:30:23 -05:00
johnnyq
a297b8d6d8
Migrate many admin Add modals to the new ajax-modal
2025-11-05 01:39:22 -05:00
johnnyq
41f957ea3b
Migrated admin modals to modals/ENTITY removed ajax_ and _modal prefixes from file names and use new ajax-modal syntax
2025-08-24 23:50:38 -04:00
johnnyq
9ee76213e1
Update more broken links from file dirextory consolidation
2025-07-29 14:32:43 -04:00