Skip to content

🔒 The missing package for Laravel Nova that lets you know which user is occupying a resource.

License

Notifications You must be signed in to change notification settings

The-3Labs-Team/nova-busy-resource-field

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo Nova Busy Resource Field by The3LabsTeam

Laravel Nova Busy Resource Field

Latest Version on Packagist Maintainability Total Downloads

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.

Demo Nova Busy Resource Field by The3LabsTeam

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();