From 48e225f2bf99523a56692ab154ddbc7fb862010d Mon Sep 17 00:00:00 2001 From: Murchenko Date: Sun, 3 Nov 2024 19:31:53 +0300 Subject: [PATCH 1/4] fix: ExportHandler, change default filename --- src/Handlers/ExportHandler.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Handlers/ExportHandler.php b/src/Handlers/ExportHandler.php index 78a5d8201..dc0482a17 100644 --- a/src/Handlers/ExportHandler.php +++ b/src/Handlers/ExportHandler.php @@ -6,6 +6,7 @@ use Closure; use Generator; +use Illuminate\Support\Str; use Illuminate\Support\Facades\Storage; use MoonShine\Contracts\Resources\ResourceContract; use MoonShine\Exceptions\ActionException; @@ -155,12 +156,17 @@ public function getDelimiter(): string private function generateFilePath(): string { $dir = $this->getDir(); - $filename = $this->hasFilename() ? $this->filename : $this->getResource()->uriKey(); + $filename = $this->hasFilename() ? $this->filename : $this->getDefaultFilename(); $ext = $this->isCsv() ? 'csv' : 'xlsx'; return sprintf('%s/%s.%s', $dir, $filename, $ext); } + private function getDefaultFilename(): string + { + return $this->getResource()->getUriKey() . '-' . Str::uuid(); + } + /** * @throws WriterNotOpenedException * @throws IOException From cfd83acacf03b48535a3744e8f77b613838867b2 Mon Sep 17 00:00:00 2001 From: Murchenko Date: Mon, 4 Nov 2024 11:34:12 +0300 Subject: [PATCH 2/4] fix: ExportHandler, add getFilename function --- src/Handlers/ExportHandler.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Handlers/ExportHandler.php b/src/Handlers/ExportHandler.php index dc0482a17..39b16c735 100644 --- a/src/Handlers/ExportHandler.php +++ b/src/Handlers/ExportHandler.php @@ -71,6 +71,11 @@ public function filename(string $filename): static return $this; } + public function getFilename(): ?string + { + return $this->hasFilename() ? $this->filename : $this->getDefaultFilename(); + } + /** * @param array|Closure(static $ctx): array $ids */ @@ -156,7 +161,7 @@ public function getDelimiter(): string private function generateFilePath(): string { $dir = $this->getDir(); - $filename = $this->hasFilename() ? $this->filename : $this->getDefaultFilename(); + $filename = $this->getFilename(); $ext = $this->isCsv() ? 'csv' : 'xlsx'; return sprintf('%s/%s.%s', $dir, $filename, $ext); @@ -164,7 +169,7 @@ private function generateFilePath(): string private function getDefaultFilename(): string { - return $this->getResource()->getUriKey() . '-' . Str::uuid(); + return $this->getResource()->uriKey() . '-' . Str::uuid(); } /** From 54c11285bf65ff8c6bd3efc1bd6697c598182c96 Mon Sep 17 00:00:00 2001 From: Murchenko Date: Mon, 4 Nov 2024 12:13:35 +0300 Subject: [PATCH 3/4] tests: test resources add older export method --- tests/Fixtures/Resources/TestImageResource.php | 8 ++++++++ tests/Fixtures/Resources/TestResource.php | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/tests/Fixtures/Resources/TestImageResource.php b/tests/Fixtures/Resources/TestImageResource.php index 102f37459..03fa32b72 100644 --- a/tests/Fixtures/Resources/TestImageResource.php +++ b/tests/Fixtures/Resources/TestImageResource.php @@ -4,6 +4,7 @@ namespace MoonShine\Tests\Fixtures\Resources; +use MoonShine\Handlers\ExportHandler; use Illuminate\Database\Eloquent\Model; use MoonShine\Fields\ID; use MoonShine\Fields\Image; @@ -33,4 +34,11 @@ public function rules(Model $item): array { return []; } + + public function export(): ?ExportHandler + { + return ExportHandler::make(__('moonshine::ui.export')) + ->csv() + ->filename($this->uriKey()); + } } diff --git a/tests/Fixtures/Resources/TestResource.php b/tests/Fixtures/Resources/TestResource.php index 7baae8dcf..045bfa0ba 100644 --- a/tests/Fixtures/Resources/TestResource.php +++ b/tests/Fixtures/Resources/TestResource.php @@ -5,6 +5,7 @@ namespace MoonShine\Tests\Fixtures\Resources; use Closure; +use MoonShine\Handlers\ExportHandler; use Illuminate\Database\Eloquent\Model; use MoonShine\Resources\ModelResource; @@ -220,4 +221,11 @@ public function setDeleteRelationships(): void { $this->deleteRelationships = true; } + + public function export(): ?ExportHandler + { + return ExportHandler::make(__('moonshine::ui.export')) + ->csv() + ->filename($this->uriKey()); + } } From 3621165039dac4deed4dcc75cd4f8d737c0719f8 Mon Sep 17 00:00:00 2001 From: Murchenko Date: Mon, 4 Nov 2024 12:17:15 +0300 Subject: [PATCH 4/4] fix: ExportHandler, getFilename - private function --- src/Handlers/ExportHandler.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Handlers/ExportHandler.php b/src/Handlers/ExportHandler.php index 39b16c735..524ab17f4 100644 --- a/src/Handlers/ExportHandler.php +++ b/src/Handlers/ExportHandler.php @@ -71,7 +71,7 @@ public function filename(string $filename): static return $this; } - public function getFilename(): ?string + private function getFilename(): ?string { return $this->hasFilename() ? $this->filename : $this->getDefaultFilename(); }