From 7b3e74b47e492346b64aa3994ac26e0476c43bbb Mon Sep 17 00:00:00 2001 From: xiaomlove <1939737565@qq.com> Date: Tue, 18 Feb 2025 02:15:30 +0800 Subject: [PATCH] upload/section add tags --- app/Http/Resources/SearchBoxResource.php | 35 ++++++++++++++---------- app/Models/SearchBox.php | 11 ++++++++ app/Repositories/SearchBoxRepository.php | 1 + app/Repositories/TagRepository.php | 2 +- 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/app/Http/Resources/SearchBoxResource.php b/app/Http/Resources/SearchBoxResource.php index 20eb134a..6dcdd4ce 100644 --- a/app/Http/Resources/SearchBoxResource.php +++ b/app/Http/Resources/SearchBoxResource.php @@ -21,24 +21,29 @@ class SearchBoxResource extends JsonResource 'id' => $this->id, 'name' => $this->displaySectionName, 'categories' => CategoryResource::collection($this->whenLoaded('categories')), + 'tags' => TagResource::collection($this->whenLoaded('tags')), ]; - $subCategories = []; - $lang = get_langfolder_cookie(); - $fields = array_keys(SearchBox::$taxonomies); - if (!empty($searchBox->extra['taxonomy_labels'])) { - $fields = array_column($searchBox->extra['taxonomy_labels'], 'torrent_field'); - } - foreach ($fields as $field) { - $relationName = "taxonomy_$field"; - if ($searchBox->relationLoaded($relationName)) { - $subCategories[] = [ - 'field' => $field, - 'label' => $item['display_text'][$lang] ?? (nexus_trans("searchbox.sub_category_{$field}_label") ?: ucfirst($field)), - 'data' => MediaResource::collection($searchBox->{$relationName}), - ]; + if ($searchBox->showsubcat) { + $subCategories = []; + $lang = get_langfolder_cookie(); + $fields = array_keys(SearchBox::$taxonomies); + if (!empty($searchBox->extra['taxonomy_labels'])) { + $fields = array_column($searchBox->extra['taxonomy_labels'], 'torrent_field'); + } + foreach ($fields as $field) { + $relationName = "taxonomy_$field"; + if ($searchBox->relationLoaded($relationName)) { + $subCategories[] = [ + 'field' => $field, + 'label' => $item['display_text'][$lang] ?? (nexus_trans("searchbox.sub_category_{$field}_label") ?: ucfirst($field)), + 'data' => MediaResource::collection($searchBox->{$relationName}), + ]; + } + } + if (!empty($subCategories)) { + $out['sub_categories'] = $subCategories; } } - $out['sub_categories'] = $this->when($this->showsubcat, $subCategories); return $out; } } diff --git a/app/Models/SearchBox.php b/app/Models/SearchBox.php index 48e1db3d..9c536455 100644 --- a/app/Models/SearchBox.php +++ b/app/Models/SearchBox.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Http\Middleware\Locale; +use App\Repositories\TagRepository; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Query\Builder; use Illuminate\Support\Str; @@ -288,6 +289,16 @@ class SearchBox extends NexusModel } } + public function tags(): \Illuminate\Database\Eloquent\Relations\HasMany + { + return $this->hasMany(Tag::class, 'mode'); + } + + public function loadTags(): void + { + $this->setRelation("tags", TagRepository::listAll($this->id)); + } + public static function getDefaultSearchMode() { $meiliConf = get_setting("meilisearch"); diff --git a/app/Repositories/SearchBoxRepository.php b/app/Repositories/SearchBoxRepository.php index 9beed274..83b8bc2b 100644 --- a/app/Repositories/SearchBoxRepository.php +++ b/app/Repositories/SearchBoxRepository.php @@ -254,6 +254,7 @@ class SearchBoxRepository extends BaseRepository if ($searchBox->showsubcat) { $searchBox->loadSubCategories(); } + $searchBox->loadTags(); } return $searchBoxList; } diff --git a/app/Repositories/TagRepository.php b/app/Repositories/TagRepository.php index 81feb9f1..218536c4 100644 --- a/app/Repositories/TagRepository.php +++ b/app/Repositories/TagRepository.php @@ -149,7 +149,7 @@ class TagRepository extends BaseRepository return self::$orderByFieldIdString; } - public function listAll(int $searchBoxId = 0): \Illuminate\Database\Eloquent\Collection|array + public static function listAll(int $searchBoxId = 0): \Illuminate\Database\Eloquent\Collection|array { if (empty(self::$allTags)) { self::$allTags = self::createBasicQuery()->get();