the-3labs-team / nova-busy-resource-field
A Laravel Nova field.
Requires
- php: ^7.3|^8.0
Requires (Dev)
- laravel/pint: ^1.16
This package is auto-updated.
Last update: 2024-10-24 07:56:51 UTC
README
Laravel Nova Busy Resource Field
Have you ever dreamed of having a mechanism in Laravel Nova that would allow you to know if a resource is occupied by another user?
Introducing Nova Resource Busy Field, the first package for Laravel Nova that lets you know if a resource is occupied by another user.
From the secret labs of The3LabsTeam this is a completely opensource package designed to make life easier for those using Laravel Nova as a multi-user CMS.
🌟 Here are some great features:
- It is model-agnostic, you can decide which resource will be considered "occupiable"
- Fully configurable, you can choose the threshold timeout and old logs to be deleted
- It is native to Laravel Nova, there is only one migration to launch
- It is fully reversible, no Laravel Nova models and/or views are touched
- Lets you know from the index of a resource if it is occupied
- Receive an alert if you enter an edit of a busy resource
Installation
For install this package, in your composer.json
add the repository:
composer require the-3labs-team/nova-busy-resource-field
You need to publish the migration file:
php artisan vendor:publish --tag=nova-busy-resource-field-migrations
Remember to launch the migrations:
php artisan migrate
Also, you can publish the config file:
php artisan vendor:publish --tag=nova-busy-resource-field-config
Usage
First you need to make a model "busiable".
For example, if you want to make the Article model busiable, you need to add the
trait The3labsTeam\NovaBusyResourceField\App\Traits\Busiable
to it:
use The3labsTeam\NovaBusyResourceField\App\Traits\Busiable; class Article extends Model{ use Busiable; }
Then, in your Nova resource, you can add the field:
use The3labsTeam\NovaBusyResourceField\NovaBusyResourceField; public function fields(NovaRequest $request) { return [ // ... NovaBusyResourceField::make('')->withMeta([ 'saveEvery' => 30000 // In milliseconds ]), // ... ]; }
For the best experience, you can delete old records in database.
For this, you need to add in your App\Console\Kernel
, command for delete old records every minute.
$schedule->command('nova-busy-resource-field:run')->everyMinute()->withoutOverlapping();