mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-28 19:10:40 +00:00
team folder browsing with static team folder details
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
namespace Domain\Folders\Controllers;
|
||||
|
||||
use Auth;
|
||||
use Domain\Folders\Resources\FolderResource;
|
||||
use Illuminate\Http\Response;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Domain\Folders\Resources\FolderResource;
|
||||
use Domain\Folders\Actions\CreateFolderAction;
|
||||
use Domain\Folders\Requests\CreateFolderRequest;
|
||||
use Support\Demo\Actions\FakeCreateFolderAction;
|
||||
|
||||
@@ -203,6 +203,16 @@ class Folder extends Model
|
||||
->withPivot('permission');
|
||||
}
|
||||
|
||||
public function parents(): HasMany
|
||||
{
|
||||
return $this->hasMany(Folder::class, 'id', 'parent_id');
|
||||
}
|
||||
|
||||
public function teamRoot(): HasMany
|
||||
{
|
||||
return $this->parents()->with('teamRoot');
|
||||
}
|
||||
|
||||
// Delete all folder children
|
||||
public static function boot()
|
||||
{
|
||||
@@ -214,30 +224,28 @@ class Folder extends Model
|
||||
|
||||
static::deleting(function ($item) {
|
||||
if ($item->isForceDeleting()) {
|
||||
$item->trashedChildren()->each(function ($folder) {
|
||||
$folder->forceDelete();
|
||||
});
|
||||
$item
|
||||
->trashedChildren()
|
||||
->each(fn ($folder) => $folder->forceDelete());
|
||||
} else {
|
||||
$item->children()->each(function ($folder) {
|
||||
$folder->delete();
|
||||
});
|
||||
$item
|
||||
->children()
|
||||
->each(fn ($folder) => $folder->delete());
|
||||
|
||||
$item->files()->each(function ($file) {
|
||||
$file->delete();
|
||||
});
|
||||
$item
|
||||
->files()
|
||||
->each(fn ($file) => $file->delete());
|
||||
}
|
||||
});
|
||||
|
||||
// Restore children folders and files
|
||||
static::restoring(function ($item) {
|
||||
// Restore children folders
|
||||
$item->trashedChildren()->each(function ($folder) {
|
||||
$folder->restore();
|
||||
});
|
||||
|
||||
// Restore children files
|
||||
$item->trashedFiles()->each(function ($files) {
|
||||
$files->restore();
|
||||
});
|
||||
$item
|
||||
->trashedChildren()
|
||||
->each(fn ($folder) => $folder->restore());
|
||||
$item
|
||||
->trashedFiles()
|
||||
->each(fn ($files) => $files->restore());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace Domain\Folders\Resources;
|
||||
|
||||
use Domain\Sharing\Resources\ShareResource;
|
||||
use Domain\Teams\Resources\TeamInvitationsCollection;
|
||||
use Domain\Teams\Resources\TeamMembersCollection;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Domain\Teams\Resources\TeamMembersCollection;
|
||||
use Domain\Teams\Resources\TeamInvitationsCollection;
|
||||
|
||||
class FolderResource extends JsonResource
|
||||
{
|
||||
@@ -34,16 +33,16 @@ class FolderResource extends JsonResource
|
||||
),*/
|
||||
],
|
||||
'relationships' => [
|
||||
$this->mergeWhen($this->teamMembers, fn() => [
|
||||
$this->mergeWhen($this->teamMembers, fn () => [
|
||||
'members' => new TeamMembersCollection($this->teamMembers),
|
||||
]),
|
||||
$this->mergeWhen($this->teamInvitations, fn() => [
|
||||
$this->mergeWhen($this->teamInvitations, fn () => [
|
||||
'invitations' => new TeamInvitationsCollection($this->teamInvitations),
|
||||
]),
|
||||
$this->mergeWhen($this->shared, fn() => [
|
||||
$this->mergeWhen($this->shared, fn () => [
|
||||
'shared' => new ShareResource($this->shared),
|
||||
]),
|
||||
$this->mergeWhen($this->parent, fn() => [
|
||||
$this->mergeWhen($this->parent, fn () => [
|
||||
'parent' => [
|
||||
'data' => [
|
||||
'type' => 'folder',
|
||||
|
||||
Reference in New Issue
Block a user