From 35d4903144d97ec16390531dc8ba7520eaa0609c Mon Sep 17 00:00:00 2001 From: Alf Drollinger Date: Wed, 23 Oct 2024 16:35:01 +0200 Subject: [PATCH] Refactor --- .../builder/src/Resources/ItemResource.php | 46 +++---------------- .../src/Traits/HasDynamicTaxonomyFields.php | 5 +- 2 files changed, 10 insertions(+), 41 deletions(-) diff --git a/packages/builder/src/Resources/ItemResource.php b/packages/builder/src/Resources/ItemResource.php index e867480ba..27161b77a 100644 --- a/packages/builder/src/Resources/ItemResource.php +++ b/packages/builder/src/Resources/ItemResource.php @@ -19,14 +19,12 @@ use Filament\Tables\Actions\RestoreBulkAction; use Filament\Tables\Actions\ViewAction; use Filament\Tables\Columns\ImageColumn; -use Filament\Tables\Columns\TagsColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Filters\SelectFilter; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; -use Illuminate\Support\Facades\DB; use Moox\Builder\Models\Item; use Moox\Builder\Resources\ItemResource\Pages\CreateItem; use Moox\Builder\Resources\ItemResource\Pages\EditItem; @@ -380,16 +378,6 @@ public static function setCurrentTab(?string $tab): void static::$currentTab = $tab; } - protected static function handleTaxonomies(Model $record, array $data): void - { - $taxonomyService = static::getTaxonomyService(); - foreach ($taxonomyService->getTaxonomies() as $taxonomy => $settings) { - if (isset($data[$taxonomy])) { - $record->$taxonomy()->sync($data[$taxonomy]); - } - } - } - public static function mutateFormDataBeforeCreate(array $data): array { return $data; @@ -415,36 +403,14 @@ public static function getResourceName(): string return static::getModel()::getResourceName(); } - protected static function getTaxonomyColumns(): array + protected static function handleTaxonomies(Model $record, array $data): void { $taxonomyService = static::getTaxonomyService(); - $taxonomies = $taxonomyService->getTaxonomies(); - - return collect($taxonomies)->map(function ($settings, $taxonomy) use ($taxonomyService) { - return TagsColumn::make($taxonomy) - ->label($settings['label'] ?? ucfirst($taxonomy)) - ->getStateUsing(function ($record) use ($taxonomy, $taxonomyService, $settings) { - $relationshipName = $settings['relationship'] ?? $taxonomy; - $table = $taxonomyService->getTaxonomyTable($taxonomy); - $foreignKey = $taxonomyService->getTaxonomyForeignKey($taxonomy); - $relatedKey = $taxonomyService->getTaxonomyRelatedKey($taxonomy); - $modelClass = $taxonomyService->getTaxonomyModel($taxonomy); - - $model = app($modelClass); - $modelTable = $model->getTable(); - - $tags = DB::table($table) - ->join($modelTable, "{$table}.{$relatedKey}", '=', "{$modelTable}.id") - ->where("{$table}.{$foreignKey}", $record->id) - ->pluck("{$modelTable}.title") - ->toArray(); - - return $tags; - }) - ->toggleable(isToggledHiddenByDefault: true) - ->separator(',') - ->searchable(); - })->toArray(); + foreach ($taxonomyService->getTaxonomies() as $taxonomy => $settings) { + if (isset($data[$taxonomy])) { + $record->$taxonomy()->sync($data[$taxonomy]); + } + } } public static function getEloquentQuery(): Builder diff --git a/packages/core/src/Traits/HasDynamicTaxonomyFields.php b/packages/core/src/Traits/HasDynamicTaxonomyFields.php index b24a31243..4b5d040b4 100644 --- a/packages/core/src/Traits/HasDynamicTaxonomyFields.php +++ b/packages/core/src/Traits/HasDynamicTaxonomyFields.php @@ -124,14 +124,17 @@ protected static function getTaxonomyColumns(): array $foreignKey = $taxonomyService->getTaxonomyForeignKey($taxonomy); $relatedKey = $taxonomyService->getTaxonomyRelatedKey($taxonomy); $modelClass = $taxonomyService->getTaxonomyModel($taxonomy); + $model = app($modelClass); $modelTable = $model->getTable(); - return DB::table($table) + $tags = DB::table($table) ->join($modelTable, "{$table}.{$relatedKey}", '=', "{$modelTable}.id") ->where("{$table}.{$foreignKey}", $record->id) ->pluck("{$modelTable}.title") ->toArray(); + + return $tags; }) ->toggleable(isToggledHiddenByDefault: true) ->separator(',')