{"id":47681694,"url":"https://github.com/chesnotech/ost-quick-buttons","last_synced_at":"2026-05-24T09:01:39.552Z","repository":{"id":346535607,"uuid":"1190408998","full_name":"ChesnoTech/ost-quick-buttons","owner":"ChesnoTech","description":"Widget-based workflow buttons for osTicket agent panel. Status-driven Start/Stop buttons with multi-step workflow support.","archived":false,"fork":false,"pushed_at":"2026-04-02T21:19:02.000Z","size":588,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-03T01:47:00.411Z","etag":null,"topics":["helpdesk","osticket","osticket-plugin","osticketawesome","php","ticketing","workflow"],"latest_commit_sha":null,"homepage":"https://github.com/ChesnoTech/ost-quick-buttons","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ChesnoTech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-24T08:57:28.000Z","updated_at":"2026-04-02T21:19:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ChesnoTech/ost-quick-buttons","commit_stats":null,"previous_names":["chesnotech/ost-quick-buttons"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/ChesnoTech/ost-quick-buttons","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChesnoTech%2Fost-quick-buttons","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChesnoTech%2Fost-quick-buttons/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChesnoTech%2Fost-quick-buttons/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChesnoTech%2Fost-quick-buttons/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChesnoTech","download_url":"https://codeload.github.com/ChesnoTech/ost-quick-buttons/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChesnoTech%2Fost-quick-buttons/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31537791,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["helpdesk","osticket","osticket-plugin","osticketawesome","php","ticketing","workflow"],"created_at":"2026-04-02T14:01:04.606Z","updated_at":"2026-04-08T03:01:56.529Z","avatar_url":"https://github.com/ChesnoTech.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ost-quick-buttons\n\n**Workflow automation buttons for osTicket 1.18+**\n\nOne-click action buttons in the agent panel queue view. Each ticket row shows a color-coded button based on its current status — Start, Next, or Done. Supports single-step and two-step workflows within a single widget, per-department custom labels, live timers, undo, and a built-in analytics dashboard.\n\nBuilt by [ChesnoTech](https://github.com/ChesnoTech).\n\n---\n\n## Features\n\n### Queue View Buttons\n- **4 button types** — Start (blue), Next (orange), Start Step 2 (blue), Done (green)\n- **Status-driven** — buttons appear/disappear automatically based on ticket status\n- **Per-department custom labels** — rename buttons to match your workflow (max 12 chars)\n- **Live timer badges** — waiting time on Start buttons, elapsed time on Done buttons\n- **Sticky column** on desktop, card layout on mobile\n\n### Workflow Variants\n- **Single Step** — Start + Done (claim, status change, release, transfer)\n- **Two Step** — Start + Next + Start Step 2 + Done (two independent agent phases in one widget)\n- No need for multiple widgets per topic — one widget handles both variants per department\n\n### Safety \u0026 UX\n- **Three confirmation modes** — None (instant), Confirm Dialog, Countdown with cancel\n- **Countdown popup** — auto-executes after configurable timer (3-10s) with progress bar\n- **Undo** — 60-second window to reverse any action\n- **Error recovery** — rollback claim if status change fails\n- **Permission-based visibility** — buttons hidden for agents lacking required permissions\n\n### Admin Tools\n- **Workflow Builder** — full-page visual editor with status flow diagrams\n- **Dashboard** — KPI cards, daily throughput chart, average time per step, agent leaderboard, queue snapshot\n- **Date range picker** — 7/30/90 day presets or custom From/To dates\n- **Access rules** — dashboard respects osTicket department access and limited-agent mode\n\n### Internationalization\n8 languages included: English, Russian, Arabic, Spanish, French, German, Portuguese (BR), Turkish, Chinese (Simplified). Auto-activates based on each agent's osTicket language preference.\n\n---\n\n## How It Works\n\n### Single Step\n```\nTicket: \"Parts Ready\"\n    → Agent clicks [▶ Start] → claimed, status → \"Platform Build\"\n\nTicket: \"Platform Build\"\n    → Agent clicks [✓ Done] → released, status → \"Ready for Packing\", transferred to Packing dept\n```\n\n### Two Step (same widget, same department)\n```\nStep 1:\n    [▶ Start]  Parts Ready → Platform Build (agent claimed)\n    [→ Next]   Platform Build → Case Assembly (agent released, NO transfer)\n\nStep 2:\n    [▶ Start]  Case Assembly → Case Assembly Working (new agent claimed)\n    [✓ Done]   Case Assembly Working → Ready for Packing (released + transferred)\n```\n\nDifferent agents handle each step. Platform builders see Start on \"Parts Ready\" tickets, case assemblers see Start on \"Case Assembly\" tickets — all in the same department.\n\n---\n\n## Requirements\n\n- osTicket **1.18+**\n- PHP **7.4+**\n- Works with **osTicketAwesome** theme and **default osTicket** theme (auto-detected)\n\n## Installation\n\n```bash\ncd /path/to/osticket/include/plugins/\ngit clone https://github.com/ChesnoTech/ost-quick-buttons.git quick-buttons\n```\n\nThen in Admin Panel: **Manage \u003e Plugins \u003e Add New Plugin \u003e Quick Buttons \u003e Active**\n\n## Quick Start\n\n1. **Create a widget**: Plugins \u003e Quick Buttons \u003e Instances \u003e Add New Instance\n2. **Instance tab**: Name it, set Status to \"Enabled\"\n3. **Config tab**: Select a Help Topic, set confirmation mode\n4. **Open Workflow Builder**: Click the button on the Config tab\n5. **Enable a department**: Toggle ON, select variant (Single/Two Step)\n6. **Configure statuses**: Pick Trigger → Working → Done from the flow diagram\n7. **Set labels**: Custom button text per department (optional, max 12 chars)\n8. **Save**: Click Save Changes\n\n## Workflow Builder\n\nThe Workflow Builder is a full-page visual editor for configuring department workflows.\n\n### Single Step Card\n```\n● Assembly                                    [ON]\nVariant: Single Step\n\nTRIGGER              WORKING              DONE\n[Parts Ready] ──▶── [Platform Build] ──✓── [Ready for Packing]\n\nLabels: [Start] [Done]\nTransfer to: [Marketplace Packing]\n```\n\n### Two Step Card\n```\n● Assembly                                    [ON]\nVariant: Two Step\n\nSTEP 1\nTRIGGER              WORKING\n[Parts Ready] ──▶── [Platform Build] ──⏩──\nLabels: [Build] [Next]\n\nSTEP 2\nSTEP 2 TRIGGER       STEP 2 WORKING       FINAL DONE\n[Case Assembly] ──▶── [Case Working] ──✓── [Ready for Packing]\nLabels: [Case] [Ship]\n\nTransfer to: [Marketplace Packing]\n```\n\nFeatures: search departments, enable/disable all, clone config, apply templates, inline validation.\n\n## Button Types\n\n| Button | Icon | Color | Actions | When Visible |\n|--------|------|-------|---------|-------------|\n| **Start** | ▶ Play | Blue #128DBE | Claim + status change | Ticket matches trigger status |\n| **Next** | → Arrow | Orange #e67e22 | Release + status change (no transfer) | Two-step: ticket matches working status |\n| **Start 2** | ▶ Play | Blue #2980b9 | Claim + status change | Two-step: ticket matches step 2 trigger |\n| **Done** | ✓+↪ Stacked | Green #27ae60 | Release + status change + transfer | Ticket matches stop trigger |\n\n## Confirmation Modes\n\n| Mode | Clicks | Safety | Best For |\n|------|--------|--------|----------|\n| **None** | 1 | Low | Trusted agents |\n| **Confirm Dialog** | 2 | High | Critical workflows |\n| **Countdown** | 1 | High | High-volume (40+ tickets/day) |\n\nThe Countdown popup shows the action description, animated progress bar, and a Cancel button. Auto-executes after the configured number of seconds (3-10).\n\n## Dashboard\n\nAccessible from Admin Panel \u003e Plugins \u003e Quick Buttons \u003e Dashboard tab, or as a standalone page.\n\n### KPI Cards\n- **Total Processed** — tickets processed in the selected period\n- **Avg Per Day** — average daily throughput\n- **Open Tickets** — current queue depth\n- **Active Agents** — agents with actions in the period\n\n### Charts \u0026 Tables\n- **Daily Throughput** — bar chart (weekly rollup for 90-day ranges)\n- **Average Time Per Step** — how long tickets spend in each status\n- **Agent Leaderboard** — ranked by tickets claimed\n- **Current Queue** — open tickets grouped by status\n\n### Date Range\nPreset buttons (7/30/90 days) or custom From/To date picker.\n\n### Access Rules\n- Agents see only data for their accessible departments\n- Access-limited agents see \"My Performance\" instead of the full leaderboard\n- Admins see all data\n\n## Access Control\n\nButtons respect osTicket's built-in permission system:\n\n| Action | Required Permission |\n|--------|-------------------|\n| Start / Start 2 (Claim) | `Ticket::PERM_ASSIGN` |\n| Status Change | `canManageTickets()` |\n| Transfer | `Ticket::PERM_TRANSFER` |\n| Release | `Ticket::PERM_RELEASE` |\n\nAgents only see buttons for departments they have access to (primary + extended + managed).\n\n## API Endpoints\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `/quick-buttons/widgets` | POST | Widget configs + ticket metadata for queue buttons |\n| `/quick-buttons/execute` | POST | Execute action (start/partial/start2/stop) |\n| `/quick-buttons/undo` | POST | Undo last action (60s window) |\n| `/quick-buttons/dashboard` | GET | Dashboard data (JSON) with date range support |\n| `/quick-buttons/dashboard-page` | GET | Standalone dashboard HTML page |\n| `/quick-buttons/workflow-builder` | GET | Workflow Builder page |\n| `/quick-buttons/workflow-builder-save` | POST | Save Workflow Builder config |\n| `/quick-buttons/admin-config-data` | GET | Departments + statuses for admin UI |\n| `/quick-buttons/assets/*` | GET | JS/CSS assets with ETag caching |\n\nAll endpoints are prefixed with `/scp/ajax.php`.\n\n## File Structure\n\n```\nquick-buttons/\n├── plugin.php                      # Plugin manifest\n├── config.php                      # Config class + validation\n├── class.QuickButtonsPlugin.php    # Bootstrap, routes, asset injection\n├── class.QuickButtonsAjax.php      # All API endpoints\n├── CONTRIBUTING.md                 # Git Flow branching guide\n├── CHANGELOG.md                    # Version history\n├── UPGRADE.md                      # Upgrade instructions\n├── LICENSE                         # MIT\n├── assets/\n│   ├── quick-buttons.js            # Queue view: buttons, timers, countdown, undo\n│   ├── quick-buttons.css           # Queue view styles (osTicketAwesome)\n│   ├── quick-buttons-default.css   # Queue view styles (default theme)\n│   ├── quick-buttons-admin.js      # Admin config tab enhancements\n│   ├── workflow-builder.js         # Full-page Workflow Builder UI\n│   ├── workflow-builder.css        # Workflow Builder styles\n│   ├── workflow-dashboard.js       # Dashboard page\n│   └── workflow-dashboard.css      # Dashboard styles\n├── i18n/LC_MESSAGES/               # Translations\n│   ├── ru/quick-buttons.mo.php     # Russian\n│   ├── ar/quick-buttons.mo.php     # Arabic\n│   ├── es/quick-buttons.mo.php     # Spanish\n│   ├── fr/quick-buttons.mo.php     # French\n│   ├── de/quick-buttons.mo.php     # German\n│   ├── pt/quick-buttons.mo.php     # Portuguese (BR)\n│   ├── tr/quick-buttons.mo.php     # Turkish\n│   └── zh_CN/quick-buttons.mo.php  # Chinese (Simplified)\n└── tests/\n    └── QuickButtonsTest.php        # 53 self-contained tests\n```\n\n## Compatibility\n\n| Component | Version |\n|-----------|---------|\n| osTicket | 1.18+ |\n| PHP | 7.4+ |\n| osTicketAwesome | Revision 3+ (auto-detected) |\n| Default osTicket theme | Supported (auto-detected) |\n\nTheme detection is automatic — the plugin checks for the `osta/` directory at runtime and serves the appropriate CSS.\n\n## Adding a Language\n\nCreate `i18n/LC_MESSAGES/{locale}/quick-buttons.mo.php` using any existing translation as a template. The file returns a PHP array mapping English strings to translations. See `i18n/LC_MESSAGES/ru/quick-buttons.mo.php` for the full list of 90+ translatable strings.\n\n## Support Policy\n\nThis plugin is provided **as-is**, free and open source, with **no guaranteed support**.\n\n- Bug reports: [GitHub Issues](https://github.com/ChesnoTech/ost-quick-buttons/issues) with steps to reproduce\n- Feature requests: GitHub Issues (no timeline guarantees)\n- Pull requests: Welcome, review may take time\n- **No email support, no SLA, no paid support plans**\n\n**Always test in a staging environment before production.** Back up your database before installing or upgrading.\n\n## Disclaimer\n\nTHIS SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND. The author is not responsible for any data loss, downtime, or damage caused by use of this plugin. It is your responsibility to test in your environment before production deployment.\n\nThis plugin modifies ticket status, assignment, and department via osTicket's built-in API. Actions (claim, transfer, status change) are permanent and trigger osTicket's native notifications.\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n\n## Author\n\n**ChesnoTech** — [github.com/ChesnoTech](https://github.com/ChesnoTech)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchesnotech%2Fost-quick-buttons","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchesnotech%2Fost-quick-buttons","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchesnotech%2Fost-quick-buttons/lists"}