17 Commits

Author SHA1 Message Date
johnnyq
0d57392140 Ticket templates stage 4: export and import - Admin > Ticket Templates exports every current template, the ones picked or one from its page as a versioned JSON file with its tasks and the answers they are for, fill-ins, request form, category and tags (not its agent or its request form's clients), and imports one checked and made safe with categories and tags matched by name or made, an existing name left alone, added as well under a name of its own or replaced keeping its tickets, agent and request form switch and clients, and request forms always coming in turned off (functions/ticket_template_transfer.php with export_ticket_templates, export_ticket_template and import_ticket_templates); the MSP starter ticket templates are rebuilt in that format with typed fill-ins, category, priority, tags and due time, tasks for answers and request forms for Onboard a new employee, Someone is leaving, Ask for a new computer and Report a suspicious email, plus new Software Request and Access Change Request templates, loaded through the same import, with Update on Starter Content to bring templates added from the old pack up to date; new Ticket Templates report under Service Desk showing each template's tickets raised by agents, from the portal, by recurring tickets and by projects, resolved, open now, time to resolve, time logged and last use, with the unused ones listed; changelog updated 2026-10-18 01:39:40 -04:00
johnnyq
0b6f002d49 Ticket templates stage 3: request forms in the client portal - a template can be offered there under its own title, description and icon, to everyone with portal access or primary and technical contacts only, at every client or the ones picked (migration 3.2.1 adds the ticket_template_portal columns, ticket_template_portal_clients, and fill_in_client, ticket_fill_in_client and recurring_ticket_fill_in_client); New ticket in the portal starts with a choice of Report a problem or one of the forms, home lists them under Ask for something, and a form asks the fill-ins set to ask the client plus anything else, files and the device when the template mentions [Asset], then raises the ticket set up as the template says with its category, priority, billing, agent (notified), due time, tags and the tasks for those answers, the client's notes first in the details and who asked in its history; fill-ins can be kept for agents to answer, marked on the agent's ticket and left off the client's Request details; the template window gets a Client portal tab, the template page a card showing how and where it is offered and its requests, and the list marks the ones in the portal; a copy starts off not offered; forms a contact may not use are refused by link or post, and View as contact raises nothing; [Agent] is no longer filled with a client's name for a portal ticket with no agent; changelog updated 2026-10-18 01:11:12 -04:00
johnnyq
3dc1205a55 Ticket templates stage 2: fill-ins - words in square brackets other than the ones filled in from the ticket, like [Employee Name] or [Start Date], are asked for when a ticket is raised from a template on New Ticket, once for all tickets in the New Tickets windows of the assets and clients lists, and once on a recurring ticket for every ticket it raises, then filled in wherever they appear in the subject, details and tasks and kept on the ticket in a Fill-ins card where a blank one can be answered later and goes in where it is still waiting, with each change in the ticket's history; on the template's page each fill-in can be made text, a date, a list of choices or yes or no, required, given help, renamed along with its text and tasks, added without being in the text, and dragged into order (migration 3.2.0 adds ticket_template_fill_ins, ticket_fill_ins and recurring_ticket_fill_ins, and task_templates.task_template_when_fill_in and task_template_when_value); a template's task can be for one answer only, dropping out of New Ticket as answers are given and kept when its answer is not given or no longer offered; project template tickets keep their fill-ins unanswered to answer on the ticket; addTasksFromTicketTemplate replaced by ticketTemplateAddTasks; fixes Add Task adding a row for every time the New Ticket or recurring ticket window had been opened, and Save doing nothing when a required field was empty on a tab that was not showing; changelog updated 2026-10-18 00:44:01 -04:00
johnnyq
3f90d2b0d0 Ticket templates stage 1: templates now set up the whole ticket - category, priority, billable, agent, due time and tags (migration 3.1.9 adds them, the ticket_template_tags table and tickets.ticket_template_id) - and fill [Client], [Contact], [Asset], [Site], [Agent], [Project], [Ticket], [Date], [Month], [Quarter] and [Year] in the subject, details and tasks when a ticket is raised, leaving other bracketed text for whoever picks it up; tickets remember the template they came from and each template shows how many tickets it raised, how many are open and when it was last used; the template picker fills New Ticket, the New Tickets windows on the assets and clients lists and recurring tickets, and project templates use each template's setup and agent; Admin > Ticket Templates rebuilt with search, Current/Archived, Copy, Archive/Restore and New ticket from it, and each template gets a page showing the ticket it starts, its tasks in drag-to-sort order with time estimates, what it sets up, its placeholders and the tickets, recurring tickets and project templates that use it; template handling moved into functions/ticket_template.php with ticketTemplateFinish, tagKeepIds and tagIdsFromValues split out of tagSetForRecord, and template task editing moved to admin/post; fixes editing a template task moving it to the top of the list, client bulk tickets skipping the template's tasks and time estimates, and the client bulk window not validating the agent, priority and category, and adds an option there to raise each client's ticket for its primary contact; changelog updated 2026-10-18 00:01:43 -04:00
johnnyq
dc6b191eed Update Font, Migrated away from JQUERY dependent libs: toastr to bootstrap5 toasts, daterangepicker to flatpickr, select2 to Tom Select, InputMask to IMask 2026-08-14 17:08:40 -04:00
johnnyq
a084e37c39 Initial migration from AdminLTE 3 to 4, bootstrap 4 to 5 2026-08-14 13:22:11 -04:00
johnnyq
f8899e592f More Select * Queries convert 2026-08-06 13:57:46 -04:00
johnnyq
b8c9d5b4cf Query Optimization: Select only needed columns instead of SELECT * on looped queries 2026-08-06 12:59:43 -04:00
johnnyq
b3f959ac55 Use Short echo tags across the code 2026-07-28 18:47:52 -04:00
johnnyq
815802fb7c Gate Admin UI Modals to Admin 2026-07-27 14:50:32 -04:00
johnnyq
7bc47a58fe Replace Function nullable_htmlentities() with just escapeHtml() and update all instances throughout 2026-07-14 17:10:45 -04:00
johnnyq
918b40afbe Add missing CSRF Checks in admin area and settings 2026-03-02 22:15:36 -05: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
7230325e62 Migrate Ticket Template add to ajax-modal, add category type option if not defined, add product type if not defined 2025-11-12 17:04:53 -05:00
johnnyq
469c36da46 Remove AI Enable References through the UI this will be handled differently 2025-08-29 12:26:56 -04:00
johnnyq
451206525e Remove function code for old way ajax-modal, moved modals over to modal_header/footer and removed _new 2025-08-25 00:07:51 -04: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