Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/oneduo/nova-file-manager

The most advanced File Manager for Laravel Nova, feature rich and robust build.
https://github.com/oneduo/nova-file-manager

file laravel manager nova

Last synced: 5 days ago
JSON representation

The most advanced File Manager for Laravel Nova, feature rich and robust build.

Awesome Lists containing this project

README

        

# Nova File Manager

![Status](https://img.shields.io/badge/status-active-success.svg)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](/LICENSE)
![PHP](https://img.shields.io/badge/PHP-8-blue.svg)
![Laravel Nova](https://img.shields.io/badge/laravel%2Fnova-4-cyan.svg)
[![Latest Version on Packagist](https://img.shields.io/packagist/v/oneduo/nova-file-manager.svg)](https://packagist.org/packages/oneduo/nova-file-manager)
[![Total Downloads](https://img.shields.io/packagist/dt/bbs-lab/nova-file-manager.svg)](https://packagist.org/packages/bbs-lab/nova-file-manager)
[![Downloads](https://img.shields.io/packagist/dt/oneduo/nova-file-manager.svg)](https://packagist.org/packages/oneduo/nova-file-manager)
[![Run tests](https://github.com/oneduo/nova-file-manager/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/oneduo/nova-file-manager/actions/workflows/tests.yml)
[![codecov](https://codecov.io/github/oneduo/nova-file-manager/branch/main/graph/badge.svg?token=L6LXFBA9JX)](https://codecov.io/github/oneduo/nova-file-manager)

---


A file manager tool and field for Laravel Nova. Beautifully designed, and customizable, this tool will provide a plug'n'play solution for your file management needs.

**Features :**

โšก๏ธ Blazing fast
๐Ÿ“ฆ๏ธ Laravel Nova 4 compatible
๐Ÿ’… Built with Tailwindcss 3, Vue 3 and Pinia
๐Ÿชจ Rock solid codebase built with Typescript
๐Ÿ’ฝ Multi disk and filesystem support
๐Ÿงฉ Supports chunk and resumable uploads
๐Ÿ”ง Various customization and configuration options
๐Ÿ” A performant local search feature with Spotlight
๐Ÿคนโ€ Can save multiple assets from the same field
๐Ÿ” Access control and authorization gates
โœ‚๏ธ Built-in crop tool and image editor
๐Ÿ“‡ Built-in PDF viewer
๐Ÿ—‚๏ธ Drag and drop upload, with entire folder upload support
๐Ÿ—ƒ๏ธ Supports unzipping files
๐Ÿšฉ Onboarding tour for new users

## Table of Contents

- [Getting Started](#getting_started)
- [Prerequisites](#prerequisites)
- [Installing](#installing)
- [Configuration](#configuration)
- [Usage](#usage)
- [Configuration](#configuration-file)
- [Authors](#authors)
- [Screenshots](#screenshots)
- [Changelog](#changelog)
- [Security](#security)
- [Contributing](#contributing)
- [Credits](#credits)
- [License](#license)

## Getting Started

### Prerequisites

This package requires the following :

- PHP 8.0 or higher
- Laravel Nova 4

> **Note** If you plan on using this package with an S3 bucket, be mindful to follow the instructions
> for setting up an S3 storage disk.

### Installing

To get started, you will need to install the following dependencies :

```
composer require oneduo/nova-file-manager
```

That's it, you're ready to go!

### Configuration

You may publish the package's configuration by running the following command :

```bash
php artisan vendor:publish --tag="nova-file-manager-config"
```

> **Note** You can find details about the configuration options in
> the [configuration file section](#configuration-file).

## Usage

To get yourself started, you need to add the following tool to your `NovaServiceProvider.php`

```php
// NovaServiceProvider.php

use Oneduo\NovaFileManager\NovaFileManager;

class NovaServiceProvider extends NovaApplicationServiceProvider
{
// ...

public function tools(): array
{
return [
// ... any other tools
NovaFileManager::make(),
];
}
}
```

Now that the tool is registered, if you go back to your Nova dashboard, you should see a new navigation entry labeled "
File Manager".

Once you've added the tool, you can start using it.

Go ahead and add a `FileManager` field to your Nova resource.

```php
// app/Nova/User.php

use Oneduo\NovaFileManager\FileManager;

class User extends Resource
{
// ...

public function fields(NovaRequest $request): array
{
return [
// ... any other fields
FileManager::make(__('Avatar'), 'avatar'),
];
}
}
```

You have now successfully added a File Manager field to your resource.

## Configuration file

| Key | Description | Type | Default | Notes |
|--------------------------------------|------------------------------------------------------------------------------------------|------------|-----------|-------------------------------------------------------------------|
| `default_disk` | The default disk used by the package | `string` | `public` | The default disk must be defined in your `filesystems.php` config |
| `available_disks` | Provides a list of available disks to be used by the package | `string[]` | - | |
| `show_hidden_files` | Toggles whether or not to show files and folders that start with a "dot" | `bool` | `false` | |
| `human_readable_size` | When set to true, the package will display file sizes in a more friendly readable format | `bool` | `true` | |
| `human_readable_datetime` | When set to true, the package will display dates with `diffForHumans()` | `bool` | `true` | |
| `file_analysis.enable` | When set to true, the package will use getID3 to parse metadata from the files | `bool` | `true` | |
| `file_analysis.cache.enable` | When set to true, the package will cache the file analysis result | `bool` | `true` | |
| `file_analysis.cache.ttl_in_seconds` | TTL for analysis caching in seconds | `int` | `86400` | |
| `url_signing.enabled` | When set to true, all the file urls will be signed | `bool` | `false` | |
| `url_signing.unit` | Defines the unit for the expiration time | `string` | `minutes` | The expiration time must not exceed 1 week |
| `url_signing.value` | Defines the value for the expiration time | `int` | `10` | |

For a full list of updated configuration options, please refer to the full documentation
at https://oneduo.github.io/nova-file-manager/configuration.html

## Authors

- [Charaf Rezrazi](https://github.com/rezrazi)
- [Mikaรซl Popowicz](https://github.com/mikaelpopowicz)

See also the list of [contributors](https://github.com/oneduo/nova-file-manager/contributors) who
participated in this project.

## Screenshots

You can find more screenshots here https://oneduo.github.io/nova-file-manager/screenshots.html.

## Changelog

Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently.

## Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

## Contributing

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

## Credits

- [getID3() by James Heinrich](https://github.com/JamesHeinrich/getID3)
- [Laravel Chunk Upload](https://github.com/pionl/laravel-chunk-upload)

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.