new PermissionManagePolicies()
- Description:
INTERNAL CODE DOCUMENTATION COMPLETE
Permission Manage Policies Controller
A sophisticated Stimulus controller that provides an interactive permission matrix for managing CakePHP authorization policies. Features hierarchical checkbox management with indeterminate states, batch processing for performance, and asynchronous AJAX updates with queue management.
Key Features:
- Hierarchical checkbox management (class-level controls method-level checkboxes)
- Indeterminate state indicators for partial selections
- Batch processing with loading overlay for performance optimization
- Asynchronous AJAX queue management for reliable server updates
- Dynamic event listener management with cleanup
- Source:
Extends
- Controller
Members
changeQueue
- Description:
Queue for managing sequential AJAX requests to prevent race conditions. @type {Array}
- Source:
Queue for managing sequential AJAX requests to prevent race conditions. @type {Array}
Methods
changeMethod(method, isChecked)
- Description:
Queue permission change for server update Adds change to queue and processes if not already processing
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
method |
HTMLElement | The method checkbox element |
isChecked |
Boolean | Whether the checkbox is checked |
checkClass(className, permissionId)
- Description:
Update class-level checkbox state based on method selections Implements three-state logic: checked, unchecked, and indeterminate
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
className |
String | The class name to check state for |
permissionId |
String | The permission ID to check state for |
classClicked(event)
- Description:
Handle class-level checkbox clicks Updates all method-level checkboxes and manages indeterminate state
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
event |
Event | The click event from class checkbox |
connect()
- Description:
Controller initialization and setup Implements batch processing for performance optimization when dealing with large permission matrices. Shows loading overlay during processing.
- Source:
disconnect()
- Description:
Clean up event listeners on controller disconnect Removes all dynamically added event listeners to prevent memory leaks
- Source:
hideLoadingOverlay()
- Description:
Remove loading overlay after processing completion Cleans up spinner overlay from permissions matrix
- Source:
methodClicked(event)
- Description:
Handle method-level checkbox clicks Updates parent class checkbox state and queues server update
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
event |
Event | The click event from method checkbox |
policyClassTargetConnected(element)
- Description:
Event handler for policy class target connection Sets up click event listeners for class-level checkboxes
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
element |
HTMLElement | The connected policy class checkbox element |
policyMethodTargetConnected(element)
- Description:
Event handler for policy method target connection Sets up click event listeners for method-level checkboxes
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
element |
HTMLElement | The connected policy method checkbox element |
processQueue()
- Description:
Process queued permission changes sequentially Handles AJAX communication with server for policy updates Maintains queue integrity and prevents race conditions
- Source:
showLoadingOverlay()
- Description:
Display loading overlay during batch processing Creates a Bootstrap spinner overlay for performance indication
- Source: