the-3labs-team/nova-busy-resource-field

A Laravel Nova field.

Downloads

120

Stars

2

Version

v1.0.1

Logo Nova Busy Resource Field by The3LabsTeam

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.

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();
The-3Labs-Team

Author

The-3Labs-Team