998b85e907b03b0d89b18e79dc51ad9a242fb537
Replaced all native browser dialogs with custom terminal-style UI:
**Utility Functions** (dashboard.js):
- showConfirmModal() - Reusable confirmation modal with type-based colors
- showInputModal() - Text input modal for user prompts
- Both support keyboard shortcuts (ESC to cancel, Enter to submit)
**Alert Replacements** (22 instances):
- Validation warnings → toast.warning() (amber, 2s)
- Error messages → toast.error() (red, 5s)
- Success messages → toast.success() or toast.warning() with details
- Example: "Bulk close: 5 succeeded, 2 failed" vs simple "Operation complete"
**Confirm Replacements** (3 instances):
- dashboard.js:509 - Bulk close confirmation → showConfirmModal()
- ticket.js:417 - Status change warning → showConfirmModal()
- advanced-search.js:321 - Delete filter → showConfirmModal('error' type)
**Prompt Replacement** (1 instance):
- advanced-search.js:151 - Save filter name → showInputModal()
**Benefits**:
✓ Visual consistency - matches terminal CRT aesthetic
✓ Non-blocking - toasts don't interrupt workflow
✓ Better UX - different colors for different message types
✓ Keyboard friendly - ESC/Enter support in modals
✓ Reusable - modal functions available for future use
All dialogs maintain retro aesthetic with:
- ASCII borders (╚ ╝)
- Terminal green glow
- Monospace fonts
- Color-coded by type (amber warning, red error, cyan info)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Tinker Tickets
A feature-rich PHP-based ticketing system designed for tracking and managing data center infrastructure issues with enterprise-grade workflow management.
✨ Core Features
📊 Dashboard & Ticket Management
- Smart Dashboard: Sortable columns, advanced filtering by status/priority/category/type
- Full-Text Search: Search across tickets, descriptions, and metadata
- Ticket Assignment: Assign tickets to specific users with "Assigned To" column
- Priority Tracking: P1 (Critical) to P5 (Minimal Impact) with color-coded indicators
- Custom Categories: Hardware, Software, Network, Security, General
- Ticket Types: Maintenance, Install, Task, Upgrade, Issue, Problem
🔄 Workflow Management
- Status Transitions: Enforced workflow rules (Open → In Progress → Resolved → Closed)
- Workflow Validation: Server-side validation prevents invalid status changes
- Admin Controls: Certain transitions can require admin privileges
- Comment Requirements: Optional comment requirements for specific transitions
- Activity Timeline: Complete audit trail of all ticket changes
💬 Collaboration Features
- Markdown Comments: Full Markdown support with live preview
- User Tracking: Tracks who created, updated, and assigned tickets
- Activity Timeline: Shows all ticket events (creates, updates, assignments, comments)
- Real-time Updates: AJAX-powered updates without page refreshes
🎫 Ticket Templates
- Quick Creation: Pre-configured templates for common issues
- Default Templates: Hardware Failure, Software Installation, Network Issue, Maintenance
- Auto-fill: Templates populate title, description, category, type, and priority
👥 User Management & Authentication
- SSO Integration: Authelia authentication with LLDAP backend
- Role-Based Access: Admin and standard user roles
- User Display Names: Support for display names and usernames
- Session Management: Secure PHP session handling
⚡ Bulk Actions (Admin Only)
- Bulk Close: Close multiple tickets at once
- Bulk Assign: Assign multiple tickets to a user
- Bulk Priority: Change priority for multiple tickets
- Operation Tracking: All bulk operations logged in audit trail
🔔 Notifications
- Discord Integration: Webhook notifications for ticket creation and updates
- Rich Embeds: Color-coded priority indicators and ticket links
- Change Tracking: Detailed notification of what changed
🎨 User Interface
- Dark Mode: Full dark mode support with proper contrast
- Responsive Design: Works on desktop and mobile devices
- Clean Layout: Modern, intuitive interface
- Hamburger Menu: Quick access to ticket actions (priority, category, type)
🏗️ Technical Architecture
Backend
- Language: PHP 7.4+
- Database: MariaDB/MySQL
- Architecture: MVC pattern with models, views, controllers
- ORM: Custom database abstraction layer
Frontend
- HTML5/CSS3: Semantic markup with modern CSS
- JavaScript: Vanilla JS with Fetch API for AJAX
- Markdown: marked.js for Markdown rendering
- Icons: Unicode emoji icons
Database Schema
- tickets: Core ticket data with user tracking
- comments: Markdown-supported comments
- users: User accounts synced from LLDAP
- audit_log: Complete audit trail with JSON details
- status_transitions: Workflow configuration
- ticket_templates: Reusable ticket templates
- bulk_operations: Tracking for bulk admin operations
API Endpoints
/api/update_ticket.php- Update ticket with workflow validation/api/assign_ticket.php- Assign ticket to user/api/add_comment.php- Add comment to ticket/api/get_template.php- Fetch ticket template/api/get_users.php- Get user list for assignments/api/bulk_operation.php- Perform bulk operations (admin only)
🚀 Setup & Configuration
1. Environment Configuration
Create .env file in project root:
DB_HOST=10.10.10.50
DB_USER=tinkertickets
DB_PASS=your_password
DB_NAME=ticketing_system
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/...
2. Database Setup
Run migrations in order:
# Navigate to project directory
cd /root/code/tinker_tickets
# Run each migration
mysql -h 10.10.10.50 -u tinkertickets -p ticketing_system < migrations/001_initial_schema.sql
mysql -h 10.10.10.50 -u tinkertickets -p ticketing_system < migrations/007_add_ticket_assignment.sql
mysql -h 10.10.10.50 -u tinkertickets -p ticketing_system < migrations/008_add_status_workflows.sql
mysql -h 10.10.10.50 -u tinkertickets -p ticketing_system < migrations/009_add_ticket_templates.sql
mysql -h 10.10.10.50 -u tinkertickets -p ticketing_system < migrations/010_add_bulk_operations.sql
mysql -h 10.10.10.50 -u tinkertickets -p ticketing_system < migrations/011_remove_view_tracking.sql
3. Web Server Configuration
Apache Configuration (recommended):
<VirtualHost *:80>
ServerName t.lotusguild.org
DocumentRoot /root/code/tinker_tickets
<Directory /root/code/tinker_tickets>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
# Enable mod_rewrite for clean URLs
RewriteEngine On
RewriteBase /
# Route ticket URLs
RewriteRule ^ticket/([0-9]+)$ ticket.php?id=$1 [L,QSA]
# Route ticket create
RewriteRule ^ticket/create$ ticket.php?action=create [L,QSA]
</Directory>
</VirtualHost>
4. Authelia Integration
Tinker Tickets uses Authelia for SSO. User information is passed via headers:
Remote-User: UsernameRemote-Name: Display nameRemote-Email: Email addressRemote-Groups: User groups (comma-separated)
Admin users must be in the admins group in LLDAP.
📁 Project Structure
tinker_tickets/
├── api/ # API endpoints
│ ├── add_comment.php
│ ├── assign_ticket.php
│ ├── bulk_operation.php
│ ├── get_template.php
│ ├── get_users.php
│ └── update_ticket.php
├── assets/ # Static assets
│ ├── css/
│ │ ├── dashboard.css
│ │ └── ticket.css
│ └── js/
│ ├── dashboard.js
│ └── ticket.js
├── config/ # Configuration
│ └── config.php
├── controllers/ # MVC Controllers
│ ├── DashboardController.php
│ └── TicketController.php
├── models/ # Data models
│ ├── AuditLogModel.php
│ ├── BulkOperationsModel.php
│ ├── CommentModel.php
│ ├── TemplateModel.php
│ ├── TicketModel.php
│ ├── UserModel.php
│ └── WorkflowModel.php
├── views/ # View templates
│ ├── CreateTicketView.php
│ ├── DashboardView.php
│ └── TicketView.php
├── migrations/ # Database migrations
│ ├── 001_initial_schema.sql
│ ├── 007_add_ticket_assignment.sql
│ ├── 008_add_status_workflows.sql
│ ├── 009_add_ticket_templates.sql
│ ├── 010_add_bulk_operations.sql
│ └── 011_remove_view_tracking.sql
├── index.php # Dashboard entry point
├── ticket.php # Ticket view/create entry point
└── .env # Environment configuration
🔐 Security Features
- SQL Injection Prevention: All queries use prepared statements
- XSS Protection: All output is properly escaped with
htmlspecialchars() - Session Security: Secure PHP session handling
- Admin Validation: Server-side admin checks for privileged operations
- Workflow Enforcement: Status transitions validated server-side
- Audit Logging: Complete audit trail of all actions
🎯 Workflow States
Default Workflow
Open → In Progress → Resolved → Closed
↓ ↓ ↓
└─────────┴──────────┘
(can reopen)
Workflow Configuration
Status transitions are defined in the status_transitions table:
from_status: Current statusto_status: Target statusrequires_comment: Whether transition requires a commentrequires_admin: Whether transition requires admin privilegesis_active: Whether transition is enabled
📝 Usage Examples
Creating a Ticket
- Click "New Ticket" button
- Select template (optional) - auto-fills common fields
- Fill in title, description, category, type, priority
- Click "Create Ticket"
Updating Ticket Status
- Open ticket
- Click status dropdown (next to priority badge)
- Select allowed status (workflow-validated)
- Confirm if comment is required
Assigning Tickets
- Open ticket or use dashboard bulk actions
- Select user from "Assigned to" dropdown
- Changes are auto-saved
Bulk Operations (Admin Only)
- Check multiple tickets on dashboard
- Select bulk action (Close, Assign, Change Priority)
- Complete operation
- All actions are logged in audit trail
🔮 Roadmap
- ✅ Activity Timeline
- ✅ Ticket Assignment
- ✅ Status Transitions with Workflows
- ✅ Ticket Templates
- ✅ Bulk Actions (Admin Only)
- 🎨 ANSI Art Redesign (Next Priority)
- 🔗 Ticket Dependencies (blocks/blocked by)
- 📊 Custom Dashboard Widgets
- 🔧 Custom Fields per Category
🤝 Contributing
This is an internal tool for LotusGuild infrastructure management. For feature requests or bug reports, contact the infrastructure team.
📄 License
Internal use only - LotusGuild Infrastructure
🙏 Credits
Built with ❤️ for the LotusGuild community Powered by PHP, MariaDB, and lots of coffee ☕
Description
A PHP-based ticketing system with a clean web interface for managing and tracking hardware, software, and network issues in Lotus Guild Cluster
Languages
PHP
61.8%
JavaScript
19.2%
CSS
18.7%
Shell
0.3%