Skip to content

Commit 94043af

Browse files
committed
improves file system; switches polymorphic realtions to 1-1
1 parent 9f1bbb2 commit 94043af

File tree

78 files changed

+1965
-508
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+1965
-508
lines changed

composer.json

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,27 @@
1919
}
2020
],
2121
"require": {
22-
"laravel-enso/core": "^7.0",
22+
"laravel-enso/core": "^8.0",
2323
"laravel-enso/helpers": "^2.0",
2424
"laravel-enso/image-transformer": "^2.0",
2525
"laravel-enso/migrator": "^2.0",
2626
"laravel-enso/track-who": "^2.0"
2727
},
2828
"autoload": {
2929
"psr-4": {
30-
"LaravelEnso\\Files\\": "src/"
30+
"LaravelEnso\\Files\\": "src/",
31+
"LaravelEnso\\Files\\Database\\Factories\\": "database/factories/",
32+
"LaravelEnso\\Files\\Database\\Seeders\\": "database/seeders/"
3133
}
3234
},
3335
"extra": {
3436
"laravel": {
3537
"providers": [
3638
"LaravelEnso\\Files\\AppServiceProvider",
3739
"LaravelEnso\\Files\\AuthServiceProvider",
38-
"LaravelEnso\\Files\\FileServiceProvider",
40+
"LaravelEnso\\Files\\EnumServiceProvider",
3941
"LaravelEnso\\Files\\UploadServiceProvider"
40-
],
41-
"aliases": {
42-
"FileBrowser": "LaravelEnso\\Files\\Facades\\FileBrowser"
43-
}
42+
]
4443
}
4544
}
4645
}

config/files.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,33 @@
11
<?php
22

3+
use LaravelEnso\Avatars\Models\Avatar;
4+
use LaravelEnso\DataExport\Models\Export;
5+
use LaravelEnso\DataImport\Models\Import;
6+
use LaravelEnso\DataImport\Models\RejectedImport;
7+
use LaravelEnso\Documents\Models\Document;
8+
use LaravelEnso\Files\Models\Upload;
9+
use LaravelEnso\HowTo\Models\Poster;
10+
use LaravelEnso\HowTo\Models\Video;
11+
use LaravelEnso\Products\Models\Picture;
12+
use LaravelEnso\Webshop\Models\Brand;
13+
use LaravelEnso\Webshop\Models\CarouselSlide;
14+
315
return [
416
'linkExpiration' => (int) env('TEMPORARY_LINK_EXPIRATION', 60 * 60 * 24),
517
'storageLimit' => 500000,
618
'paginate' => (int) env('FILES_PAGINATION', 24),
719
'testingFolder' => 'testing',
20+
'upgrade' => [
21+
'avatar' => Avatar::class,
22+
'dataExport' => Export::class,
23+
'upload' => Upload::class,
24+
'dataImport' => Import::class,
25+
'rejectedImport' => RejectedImport::class,
26+
'document' => Document::class,
27+
'productPicture' => Picture::class,
28+
'webshopBrand' => Brand::class,
29+
'webshopCarouselSlide' => CarouselSlide::class,
30+
'poster' => Poster::class,
31+
'video' => Video::class,
32+
],
833
];

database/factories/TypeFactory.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace LaravelEnso\Files\Database\Factories;
4+
5+
use Illuminate\Database\Eloquent\Factories\Factory;
6+
use Illuminate\Support\Str;
7+
use LaravelEnso\Files\Models\Type;
8+
9+
class TypeFactory extends Factory
10+
{
11+
protected $model = Type::class;
12+
13+
public function definition()
14+
{
15+
return [
16+
'name' => null,
17+
'folder' => 'null',
18+
'model' => null,
19+
'icon' => 'folder',
20+
'endpoint' => null,
21+
'description' => null,
22+
'is_browsable' => false,
23+
'is_system' => false,
24+
];
25+
}
26+
27+
public function model(string $model): self
28+
{
29+
$name = Str::of($model)->afterLast('\\')
30+
->snake()
31+
->replace('_', ' ')
32+
->title()
33+
->plural();
34+
35+
return $this->state(fn () => [
36+
'name' => $name,
37+
'folder' => $name->lower(),
38+
'model' => $model,
39+
'description' => "Enso {$name}",
40+
]);
41+
}
42+
}

database/migrations/2018_08_25_100000_create_files_table.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@ class CreateFilesTable extends Migration
99
public function up()
1010
{
1111
Schema::create('files', function (Blueprint $table) {
12-
$table->increments('id');
12+
$table->id();
1313

14-
$table->morphs('attachable');
14+
$table->unsignedBigInteger('type_id')->nullable();
15+
$table->foreign('type_id')->references('id')->on('file_types');
16+
17+
$table->nullableMorphs('attachable');
1518

1619
$table->string('original_name')->index();
17-
$table->string('path');
20+
$table->string('saved_name');
1821
$table->integer('size');
1922
$table->string('mime_type')->nullable();
2023

database/migrations/2018_08_25_101000_create_structure_for_files.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ class CreateStructureForFiles extends Migration
1010
['name' => 'core.files.show', 'description' => 'Open file in browser', 'is_default' => true],
1111
['name' => 'core.files.download', 'description' => 'Download file', 'is_default' => true],
1212
['name' => 'core.files.destroy', 'description' => 'Delete file', 'is_default' => true],
13+
['name' => 'core.files.favorite', 'description' => 'Toggle file as favorite', 'is_default' => true],
14+
['name' => 'core.files.browse', 'description' => 'Browse file type', 'is_default' => true],
15+
['name' => 'core.files.recent', 'description' => 'Browse recent files', 'is_default' => true],
16+
['name' => 'core.files.favorites', 'description' => 'Browse favorites files', 'is_default' => true],
17+
['name' => 'core.files.sharedWithYou', 'description' => 'Browse files shared with user', 'is_default' => true],
18+
['name' => 'core.files.sharedByYou', 'description' => 'Browse files shared by user', 'is_default' => true],
19+
['name' => 'core.files.favorite', 'description' => 'Toggle file as favorite', 'is_default' => true],
1320
];
1421

1522
protected array $menu = [
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
use Illuminate\Database\Migrations\Migration;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Support\Facades\Schema;
6+
7+
class CreateFavoriteFilesTable extends Migration
8+
{
9+
public function up()
10+
{
11+
Schema::create('favorite_files', function (Blueprint $table) {
12+
$table->id();
13+
14+
$table->unsignedInteger('user_id')->index();
15+
$table->foreign('user_id')->references('id')->on('users');
16+
17+
$table->unsignedBigInteger('file_id')->index();
18+
$table->foreign('file_id')->references('id')->on('files');
19+
20+
$table->timestamps();
21+
22+
$table->unique(['user_id', 'file_id']);
23+
});
24+
}
25+
26+
public function down()
27+
{
28+
Schema::dropIfExists('favorite_files');
29+
}
30+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
use Illuminate\Database\Migrations\Migration;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Support\Facades\Schema;
6+
7+
class CreateFileTypesTable extends Migration
8+
{
9+
public function up()
10+
{
11+
Schema::create('file_types', function (Blueprint $table) {
12+
$table->id();
13+
14+
$table->string('name')->unique();
15+
$table->string('model')->unique()->nullable();
16+
$table->string('folder')->nullable();
17+
$table->string('icon')->nullable();
18+
$table->string('endpoint')->nullable();
19+
20+
$table->text('description')->nullable();
21+
22+
$table->boolean('is_browsable');
23+
$table->boolean('is_system');
24+
25+
$table->timestamps();
26+
});
27+
}
28+
29+
public function down()
30+
{
31+
Schema::dropIfExists('file_types');
32+
}
33+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
use LaravelEnso\Migrator\Database\Migration;
4+
5+
class CreateStructureForFileTypes extends Migration
6+
{
7+
protected array $permissions = [
8+
['name' => 'administration.fileTypes.tableData', 'description' => 'Get table data for file types', 'is_default' => false],
9+
['name' => 'administration.fileTypes.exportExcel', 'description' => 'Export excel for file types', 'is_default' => false],
10+
['name' => 'administration.fileTypes.initTable', 'description' => 'Init table data for file types', 'is_default' => false],
11+
['name' => 'administration.fileTypes.create', 'description' => 'Create tutorial', 'is_default' => false],
12+
['name' => 'administration.fileTypes.edit', 'description' => 'Edit tutorial', 'is_default' => false],
13+
['name' => 'administration.fileTypes.index', 'description' => 'Show file types index', 'is_default' => false],
14+
['name' => 'administration.fileTypes.store', 'description' => 'Store newly created file type', 'is_default' => false],
15+
['name' => 'administration.fileTypes.update', 'description' => 'Update edited file type', 'is_default' => false],
16+
['name' => 'administration.fileTypes.destroy', 'description' => 'Delete file type', 'is_default' => false],
17+
];
18+
19+
protected array $menu = [
20+
'name' => 'File Types', 'icon' => 'photo-video', 'route' => 'administration.fileTypes.index', 'order_index' => 999, 'has_children' => false,
21+
];
22+
23+
protected ?string $parentMenu = 'Administration';
24+
}

0 commit comments

Comments
 (0)