Skip to content

ChesnoTech/ost-quick-buttons

Repository files navigation

ost-quick-buttons

Widget-based workflow buttons for osTicket 1.18+

One-click Start/Stop buttons in the agent panel queue view, driven by ticket status. Supports multi-step workflows with chained widgets — from simple single-step handoffs to complex multi-department assembly lines.

Built by ChesnoTech.


Features

  • Start/Stop buttons on each ticket row in the queue view
  • Status-driven visibility — buttons appear/disappear based on ticket status
  • Multi-step workflows — chain multiple widgets for N-step processes
  • Per-department configuration — enable/disable buttons per department with a visual matrix UI
  • One widget per help topic — different workflows for different ticket types
  • Auto-claim on Start — assigns the ticket to the clicking agent
  • Auto-release + transfer on Stop — releases agent and moves ticket to the next department
  • osTicket access role integration — respects department access and permissions
  • Desktop + Mobile responsive — sticky column on desktop, card layout on mobile
  • Three confirmation modes — None (instant), Confirm Dialog, or Countdown with cancel window
  • Countdown popup — auto-execute after configurable timer (3–10s) with progress bar and cancel button
  • Undo support — 60-second undo window after any action
  • Live elapsed timer — shows how long an agent has been working on a ticket
  • Error recovery — rollback claim if status change fails
  • Dark mode support
  • Theme auto-detection — works with both osTicketAwesome and default osTicket theme

How It Works

Each plugin instance is a widget tied to one help topic. The widget defines Start/Stop behavior per department:

Ticket in "Collecting Parts" status
    → Agent clicks [▶ Start] → ticket claimed, status changes to "Platform Build"

Ticket in "Platform Build" status
    → Agent clicks [✓ Done] → agent released, status changes to "Ready for Packing",
      ticket transferred to Packing department

Multi-Step Workflows

Chain multiple widgets on the same help topic for multi-step processes:

Widget 1 (Platform Build):
  [▶ Start] Collecting Parts → Platform Build  [✓ Done] → Case Assembly

Widget 2 (Case Assembly):
  [▶ Start] Case Assembly → Case Assembly (Working)  [✓ Done] → Ready for Packing → Transfer

Different agents can handle each step. Platform builders pick up "Collecting Parts" tickets, case assemblers pick up "Case Assembly" tickets — all in the same department, driven by status.

Requirements

  • osTicket 1.18+
  • PHP 7.4+
  • Works with osTicketAwesome theme (SVG icons) and default osTicket theme (Font Awesome)

Installation

  1. Download or clone this repository into your osTicket plugins directory:

    cd /path/to/osticket/include/plugins/
    git clone https://github.com/ChesnoTech/ost-quick-buttons.git quick-buttons
    
  2. In osTicket Admin Panel, go to Manage > Plugins

  3. Click Add New Plugin and select Quick Buttons

  4. Set the plugin status to Active

  5. Click the Instances tab and Add New Instance to create your first widget

Configuration

Creating a Widget

  1. Go to Admin Panel > Manage > Plugins > Quick Buttons
  2. Click Instances tab > Add New Instance
  3. Instance tab: Set name and status to "Enabled"
  4. Config tab:
    • Select a Help Topic (one widget per topic)
    • The department matrix appears with all departments
    • Check Enabled for each department that should show buttons
    • Configure the status chain for each enabled department:
Field Description
Start: Trigger Status Ticket status that makes the Start button visible
Start: Target Status Status set after clicking Start (also triggers the Stop button)
Stop: Target Status Status set after clicking Stop
Stop: Transfer To Department to transfer the ticket to (leave empty for no transfer)

Button Behavior

Button Icon Color Actions
Start ▶ Play Blue (#128DBE) Claim ticket + Change status
Stop ✓ Done Green (#27ae60) Change status + Release agent + Transfer (optional)

Confirmation Modes

Each widget can be configured with one of three confirmation modes:

Mode Behavior Best For
None Instant execution on click Trusted agents, low-risk actions
Confirm Dialog Modal dialog with Confirm/Cancel buttons Critical workflows, training
Countdown Auto-executes after N seconds with cancel window High-volume workflows (40+ tickets/day)

The Countdown mode shows a popup near the button with:

  • Action description (what will happen)
  • Countdown timer with animated progress bar
  • Cancel button to abort before execution
  • Configurable duration (3–10 seconds per widget)

Multi-Step Setup

To create a multi-step workflow, create multiple widget instances for the same help topic:

  1. Widget 1 — handles step 1 (e.g., Platform Build)

    • Stop target = step 2's trigger status
    • Stop transfer = empty (stays in same department)
  2. Widget 2 — handles step 2 (e.g., Case Assembly)

    • Start trigger = Widget 1's stop target
    • Stop transfer = next department

The widgets chain automatically through matching statuses.

Access Control

  • Buttons are shown based on the agent's department access (getDepts() — primary + extended + managed departments)
  • Actions are verified server-side against osTicket permissions:
    • Start (Claim): requires Ticket::PERM_ASSIGN
    • Status Change: requires canManageTickets()
    • Transfer: requires Ticket::PERM_TRANSFER
    • Release: requires Ticket::PERM_RELEASE

Dashboard

The plugin includes a built-in workflow dashboard accessible from the plugin admin page (Dashboard tab). It shows:

  • Tickets Per Day — bar chart of daily status change throughput
  • Average Time Per Step — how long tickets spend in each status
  • Agent Leaderboard — top agents by tickets claimed
  • Current Queue — snapshot of open tickets by status

Supports 7-day, 30-day, and 90-day time ranges.

Testing

Run the self-contained test suite (no osTicket bootstrap required):

php tests/QuickButtonsTest.php

53 tests covering: choiceKey extraction, JSON parsing, config validation, duration formatting, button resolution logic, and undo state management.

File Structure

quick-buttons/
├── plugin.php                    # Plugin metadata
├── config.php                    # QuickButtonsConfig — topic + JSON widget config
├── class.QuickButtonsPlugin.php  # Bootstrap, AJAX routes, asset injection
├── class.QuickButtonsAjax.php    # API endpoints: widgets, execute, admin-config-data
└── assets/
    ├── quick-buttons.js          # Queue view button rendering + click handlers
    ├── quick-buttons.css         # Styles for osTicketAwesome theme (SVG icons)
    ├── quick-buttons-default.css # Styles for default osTicket theme (Font Awesome)
    ├── quick-buttons-admin.js    # Admin config matrix UI builder
    └── quick-buttons-admin.css   # Admin matrix table styles

API Endpoints

Endpoint Method Description
/scp/ajax.php/quick-buttons/widgets POST Get widget configs + ticket metadata
/scp/ajax.php/quick-buttons/execute POST Execute Start/Stop action on tickets
/scp/ajax.php/quick-buttons/admin-config-data GET Get departments + statuses for admin UI
/scp/ajax.php/quick-buttons/assets/* GET Serve JS/CSS assets with ETag caching

Compatibility

Component Version
osTicket 1.18+
PHP 7.4+
osTicketAwesome Revision 3+ (auto-detected)
Default osTicket theme Supported (auto-detected)

Theme detection is automatic — the plugin checks for the osta/ directory at runtime and serves the appropriate CSS.

Support Policy

This plugin is provided as-is, free and open source, with no guaranteed support.

  • Bug reports: Open a GitHub Issue with steps to reproduce
  • Feature requests: Open a GitHub Issue — no promises on timeline
  • Pull requests: Welcome, but review may take time
  • No email support, no SLA, no paid support plans
  • For professional setup or custom workflows: contact via GitHub Issues

Use at your own risk. Always test in a staging environment before deploying to production. Back up your database before installing or upgrading.

Disclaimer

THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. The author is not responsible for any data loss, downtime, or damage caused by the use of this plugin. It is your responsibility to test the plugin in your environment before production deployment.

This plugin modifies ticket status, assignment, and department via osTicket's built-in API. It does not directly modify the database, but actions performed (claim, transfer, status change) are permanent and trigger osTicket's native notification and logging systems.

License

MIT License. See LICENSE for details.

Author

ChesnoTechgithub.com/ChesnoTech

Product Visionary. Systems Architect. Founder.

About

Widget-based workflow buttons for osTicket agent panel. Status-driven Start/Stop buttons with multi-step workflow support.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors