mirror of
https://github.com/pelican-dev/panel.git
synced 2025-05-20 11:04:45 +02:00
Hide Directory
size in ListFiles
(#1102)
* Hide `directory` size in `ListFiles` * Use only one `DaemonFileRepository` in `ListFiles`
This commit is contained in:
parent
d452e3d2f2
commit
253abf65b1
@ -48,10 +48,16 @@ class ListFiles extends ListRecords
|
|||||||
#[Locked]
|
#[Locked]
|
||||||
public string $path;
|
public string $path;
|
||||||
|
|
||||||
public function mount(?string $path = null): void
|
private DaemonFileRepository $fileRepository;
|
||||||
|
|
||||||
|
public function mount(?DaemonFileRepository $fileRepository = null, ?string $path = null): void
|
||||||
{
|
{
|
||||||
parent::mount();
|
parent::mount();
|
||||||
$this->path = $path ?? '/';
|
$this->path = $path ?? '/';
|
||||||
|
|
||||||
|
/** @var Server $server */
|
||||||
|
$server = Filament::getTenant();
|
||||||
|
$this->fileRepository = $fileRepository->setServer($server);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getBreadcrumbs(): array
|
public function getBreadcrumbs(): array
|
||||||
@ -76,10 +82,12 @@ class ListFiles extends ListRecords
|
|||||||
/** @var Server $server */
|
/** @var Server $server */
|
||||||
$server = Filament::getTenant();
|
$server = Filament::getTenant();
|
||||||
|
|
||||||
|
$files = File::get($server, $this->path);
|
||||||
|
|
||||||
return $table
|
return $table
|
||||||
->paginated([25, 50, 100, 250])
|
->paginated([25, 50, 100, 250])
|
||||||
->defaultPaginationPageOption(50)
|
->defaultPaginationPageOption(50)
|
||||||
->query(fn () => File::get($server, $this->path)->orderByDesc('is_directory'))
|
->query(fn () => $files->orderByDesc('is_directory'))
|
||||||
->defaultSort('name')
|
->defaultSort('name')
|
||||||
->columns([
|
->columns([
|
||||||
TextColumn::make('name')
|
TextColumn::make('name')
|
||||||
@ -88,6 +96,7 @@ class ListFiles extends ListRecords
|
|||||||
->icon(fn (File $file) => $file->getIcon()),
|
->icon(fn (File $file) => $file->getIcon()),
|
||||||
BytesColumn::make('size')
|
BytesColumn::make('size')
|
||||||
->visibleFrom('md')
|
->visibleFrom('md')
|
||||||
|
->state(fn (File $file) => $file->is_directory ? null : $file->size)
|
||||||
->sortable(),
|
->sortable(),
|
||||||
DateTimeColumn::make('modified_at')
|
DateTimeColumn::make('modified_at')
|
||||||
->visibleFrom('md')
|
->visibleFrom('md')
|
||||||
@ -128,11 +137,10 @@ class ListFiles extends ListRecords
|
|||||||
->default(fn (File $file) => $file->name)
|
->default(fn (File $file) => $file->name)
|
||||||
->required(),
|
->required(),
|
||||||
])
|
])
|
||||||
->action(function ($data, File $file, DaemonFileRepository $fileRepository) use ($server) {
|
->action(function ($data, File $file) {
|
||||||
$files = [['to' => $data['name'], 'from' => $file->name]];
|
$files = [['to' => $data['name'], 'from' => $file->name]];
|
||||||
|
|
||||||
$fileRepository
|
$this->fileRepository
|
||||||
->setServer($server)
|
|
||||||
->renameFiles($this->path, $files);
|
->renameFiles($this->path, $files);
|
||||||
|
|
||||||
Activity::event('server:file.rename')
|
Activity::event('server:file.rename')
|
||||||
@ -153,9 +161,8 @@ class ListFiles extends ListRecords
|
|||||||
->label('Copy')
|
->label('Copy')
|
||||||
->icon('tabler-copy')
|
->icon('tabler-copy')
|
||||||
->visible(fn (File $file) => $file->is_file)
|
->visible(fn (File $file) => $file->is_file)
|
||||||
->action(function (File $file, DaemonFileRepository $fileRepository) use ($server) {
|
->action(function (File $file) {
|
||||||
$fileRepository
|
$this->fileRepository
|
||||||
->setServer($server)
|
|
||||||
->copyFile(join_paths($this->path, $file->name));
|
->copyFile(join_paths($this->path, $file->name));
|
||||||
|
|
||||||
Activity::event('server:file.copy')
|
Activity::event('server:file.copy')
|
||||||
@ -189,13 +196,12 @@ class ListFiles extends ListRecords
|
|||||||
Placeholder::make('new_location')
|
Placeholder::make('new_location')
|
||||||
->content(fn (Get $get) => resolve_path('./' . join_paths($this->path, $get('location')))),
|
->content(fn (Get $get) => resolve_path('./' . join_paths($this->path, $get('location')))),
|
||||||
])
|
])
|
||||||
->action(function ($data, File $file, DaemonFileRepository $fileRepository) use ($server) {
|
->action(function ($data, File $file) {
|
||||||
$location = resolve_path(join_paths($this->path, $data['location']));
|
$location = resolve_path(join_paths($this->path, $data['location']));
|
||||||
|
|
||||||
$files = [['to' => $location, 'from' => $file->name]];
|
$files = [['to' => $location, 'from' => $file->name]];
|
||||||
|
|
||||||
$fileRepository
|
$this->fileRepository
|
||||||
->setServer($server)
|
|
||||||
->renameFiles($this->path, $files);
|
->renameFiles($this->path, $files);
|
||||||
|
|
||||||
Activity::event('server:file.rename')
|
Activity::event('server:file.rename')
|
||||||
@ -252,15 +258,14 @@ class ListFiles extends ListRecords
|
|||||||
return $this->getPermissionsFromModeBit($mode);
|
return $this->getPermissionsFromModeBit($mode);
|
||||||
}),
|
}),
|
||||||
])
|
])
|
||||||
->action(function ($data, File $file, DaemonFileRepository $fileRepository) use ($server) {
|
->action(function ($data, File $file) {
|
||||||
$owner = (in_array('read', $data['owner']) ? 4 : 0) | (in_array('write', $data['owner']) ? 2 : 0) | (in_array('execute', $data['owner']) ? 1 : 0);
|
$owner = (in_array('read', $data['owner']) ? 4 : 0) | (in_array('write', $data['owner']) ? 2 : 0) | (in_array('execute', $data['owner']) ? 1 : 0);
|
||||||
$group = (in_array('read', $data['group']) ? 4 : 0) | (in_array('write', $data['group']) ? 2 : 0) | (in_array('execute', $data['group']) ? 1 : 0);
|
$group = (in_array('read', $data['group']) ? 4 : 0) | (in_array('write', $data['group']) ? 2 : 0) | (in_array('execute', $data['group']) ? 1 : 0);
|
||||||
$public = (in_array('read', $data['public']) ? 4 : 0) | (in_array('write', $data['public']) ? 2 : 0) | (in_array('execute', $data['public']) ? 1 : 0);
|
$public = (in_array('read', $data['public']) ? 4 : 0) | (in_array('write', $data['public']) ? 2 : 0) | (in_array('execute', $data['public']) ? 1 : 0);
|
||||||
|
|
||||||
$mode = $owner . $group . $public;
|
$mode = $owner . $group . $public;
|
||||||
|
|
||||||
$fileRepository
|
$this->fileRepository
|
||||||
->setServer($server)
|
|
||||||
->chmodFiles($this->path, [['file' => $file->name, 'mode' => $mode]]);
|
->chmodFiles($this->path, [['file' => $file->name, 'mode' => $mode]]);
|
||||||
|
|
||||||
Notification::make()
|
Notification::make()
|
||||||
@ -272,9 +277,8 @@ class ListFiles extends ListRecords
|
|||||||
->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_ARCHIVE, $server))
|
->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_ARCHIVE, $server))
|
||||||
->label('Archive')
|
->label('Archive')
|
||||||
->icon('tabler-archive')
|
->icon('tabler-archive')
|
||||||
->action(function (File $file, DaemonFileRepository $fileRepository) use ($server) {
|
->action(function (File $file) {
|
||||||
$fileRepository
|
$this->fileRepository
|
||||||
->setServer($server)
|
|
||||||
->compressFiles($this->path, [$file->name]);
|
->compressFiles($this->path, [$file->name]);
|
||||||
|
|
||||||
Activity::event('server:file.compress')
|
Activity::event('server:file.compress')
|
||||||
@ -294,9 +298,8 @@ class ListFiles extends ListRecords
|
|||||||
->label('Unarchive')
|
->label('Unarchive')
|
||||||
->icon('tabler-archive')
|
->icon('tabler-archive')
|
||||||
->visible(fn (File $file) => $file->isArchive())
|
->visible(fn (File $file) => $file->isArchive())
|
||||||
->action(function (File $file, DaemonFileRepository $fileRepository) use ($server) {
|
->action(function (File $file) {
|
||||||
$fileRepository
|
$this->fileRepository
|
||||||
->setServer($server)
|
|
||||||
->decompressFile($this->path, $file->name);
|
->decompressFile($this->path, $file->name);
|
||||||
|
|
||||||
Activity::event('server:file.decompress')
|
Activity::event('server:file.decompress')
|
||||||
@ -319,9 +322,8 @@ class ListFiles extends ListRecords
|
|||||||
->requiresConfirmation()
|
->requiresConfirmation()
|
||||||
->modalDescription(fn (File $file) => $file->name)
|
->modalDescription(fn (File $file) => $file->name)
|
||||||
->modalHeading('Delete file?')
|
->modalHeading('Delete file?')
|
||||||
->action(function (File $file, DaemonFileRepository $fileRepository) use ($server) {
|
->action(function (File $file) {
|
||||||
$fileRepository
|
$this->fileRepository
|
||||||
->setServer($server)
|
|
||||||
->deleteFiles($this->path, [$file->name]);
|
->deleteFiles($this->path, [$file->name]);
|
||||||
|
|
||||||
Activity::event('server:file.delete')
|
Activity::event('server:file.delete')
|
||||||
@ -345,12 +347,11 @@ class ListFiles extends ListRecords
|
|||||||
Placeholder::make('new_location')
|
Placeholder::make('new_location')
|
||||||
->content(fn (Get $get) => resolve_path('./' . join_paths($this->path, $get('location') ?? ''))),
|
->content(fn (Get $get) => resolve_path('./' . join_paths($this->path, $get('location') ?? ''))),
|
||||||
])
|
])
|
||||||
->action(function (Collection $files, $data, DaemonFileRepository $fileRepository) use ($server) {
|
->action(function (Collection $files, $data) {
|
||||||
$location = resolve_path(join_paths($this->path, $data['location']));
|
$location = resolve_path(join_paths($this->path, $data['location']));
|
||||||
|
|
||||||
$files = $files->map(fn ($file) => ['to' => $location, 'from' => $file['name']])->toArray();
|
$files = $files->map(fn ($file) => ['to' => $location, 'from' => $file['name']])->toArray();
|
||||||
$fileRepository
|
$this->fileRepository
|
||||||
->setServer($server)
|
|
||||||
->renameFiles($this->path, $files);
|
->renameFiles($this->path, $files);
|
||||||
|
|
||||||
Activity::event('server:file.rename')
|
Activity::event('server:file.rename')
|
||||||
@ -365,11 +366,10 @@ class ListFiles extends ListRecords
|
|||||||
}),
|
}),
|
||||||
BulkAction::make('archive')
|
BulkAction::make('archive')
|
||||||
->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_ARCHIVE, $server))
|
->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_ARCHIVE, $server))
|
||||||
->action(function (Collection $files, DaemonFileRepository $fileRepository) use ($server) {
|
->action(function (Collection $files) {
|
||||||
$files = $files->map(fn ($file) => $file['name'])->toArray();
|
$files = $files->map(fn ($file) => $file['name'])->toArray();
|
||||||
|
|
||||||
$fileRepository
|
$this->fileRepository
|
||||||
->setServer($server)
|
|
||||||
->compressFiles($this->path, $files);
|
->compressFiles($this->path, $files);
|
||||||
|
|
||||||
Activity::event('server:file.compress')
|
Activity::event('server:file.compress')
|
||||||
@ -386,10 +386,9 @@ class ListFiles extends ListRecords
|
|||||||
}),
|
}),
|
||||||
DeleteBulkAction::make()
|
DeleteBulkAction::make()
|
||||||
->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_DELETE, $server))
|
->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_DELETE, $server))
|
||||||
->action(function (Collection $files, DaemonFileRepository $fileRepository) use ($server) {
|
->action(function (Collection $files) {
|
||||||
$files = $files->map(fn ($file) => $file['name'])->toArray();
|
$files = $files->map(fn ($file) => $file['name'])->toArray();
|
||||||
$fileRepository
|
$this->fileRepository
|
||||||
->setServer($server)
|
|
||||||
->deleteFiles($this->path, $files);
|
->deleteFiles($this->path, $files);
|
||||||
|
|
||||||
Activity::event('server:file.delete')
|
Activity::event('server:file.delete')
|
||||||
@ -418,9 +417,8 @@ class ListFiles extends ListRecords
|
|||||||
->color('gray')
|
->color('gray')
|
||||||
->keyBindings('')
|
->keyBindings('')
|
||||||
->modalSubmitActionLabel('Create')
|
->modalSubmitActionLabel('Create')
|
||||||
->action(function ($data, DaemonFileRepository $fileRepository) use ($server) {
|
->action(function ($data) {
|
||||||
$fileRepository
|
$this->fileRepository
|
||||||
->setServer($server)
|
|
||||||
->putContent(join_paths($this->path, $data['name']), $data['editor'] ?? '');
|
->putContent(join_paths($this->path, $data['name']), $data['editor'] ?? '');
|
||||||
|
|
||||||
Activity::event('server:file.write')
|
Activity::event('server:file.write')
|
||||||
@ -447,9 +445,8 @@ class ListFiles extends ListRecords
|
|||||||
->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_CREATE, $server))
|
->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_CREATE, $server))
|
||||||
->label('New Folder')
|
->label('New Folder')
|
||||||
->color('gray')
|
->color('gray')
|
||||||
->action(function ($data, DaemonFileRepository $fileRepository) use ($server) {
|
->action(function ($data) {
|
||||||
$fileRepository
|
$this->fileRepository
|
||||||
->setServer($server)
|
|
||||||
->createDirectory($data['name'], $this->path);
|
->createDirectory($data['name'], $this->path);
|
||||||
|
|
||||||
Activity::event('server:file.create-directory')
|
Activity::event('server:file.create-directory')
|
||||||
@ -464,12 +461,11 @@ class ListFiles extends ListRecords
|
|||||||
HeaderAction::make('upload')
|
HeaderAction::make('upload')
|
||||||
->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_CREATE, $server))
|
->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_CREATE, $server))
|
||||||
->label('Upload')
|
->label('Upload')
|
||||||
->action(function ($data, DaemonFileRepository $fileRepository) use ($server) {
|
->action(function ($data) {
|
||||||
if (count($data['files']) > 0 && !isset($data['url'])) {
|
if (count($data['files']) > 0 && !isset($data['url'])) {
|
||||||
/** @var UploadedFile $file */
|
/** @var UploadedFile $file */
|
||||||
foreach ($data['files'] as $file) {
|
foreach ($data['files'] as $file) {
|
||||||
$fileRepository
|
$this->fileRepository
|
||||||
->setServer($server)
|
|
||||||
->putContent(join_paths($this->path, $file->getClientOriginalName()), $file->getContent());
|
->putContent(join_paths($this->path, $file->getClientOriginalName()), $file->getContent());
|
||||||
|
|
||||||
Activity::event('server:file.uploaded')
|
Activity::event('server:file.uploaded')
|
||||||
@ -478,8 +474,7 @@ class ListFiles extends ListRecords
|
|||||||
->log();
|
->log();
|
||||||
}
|
}
|
||||||
} elseif ($data['url'] !== null) {
|
} elseif ($data['url'] !== null) {
|
||||||
$fileRepository
|
$this->fileRepository
|
||||||
->setServer($server)
|
|
||||||
->pull($data['url'], $this->path);
|
->pull($data['url'], $this->path);
|
||||||
|
|
||||||
Activity::event('server:file.pull')
|
Activity::event('server:file.pull')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user